linux查看硬盘状态6,linux 查看硬盘i/o的状态

Linux系统出现了性能问题,硬盘的读写速度及状态是我们判断服务器性能的一个重要参考,而iostat可以给我们提供丰富的IO状态数据。

基本使用

$iostat -d -k 1 10

参数 -d 表示,显示设备(磁盘)使用状态;-k某些使用block为单位的列强制使用Kilobytes为单位;1 10表示,数据显示每隔1秒刷新一次,共显示10次。

# iostat -x 1 10

3525353aa6ae7093bde9fde3fd3ab0b8.png

rrqm/s:   每秒进行 merge 的读操作数目。即 delta(rmerge)/s

wrqm/s:  每秒进行 merge 的写操作数目。即 delta(wmerge)/s

r/s:           每秒完成的读 I/O 设备次数。即 delta(rio)/s

w/s:         每秒完成的写 I/O 设备次数。即 delta(wio)/s

rsec/s:    每秒读扇区数。即 delta(rsect)/s

wsec/s:  每秒写扇区数。即 delta(wsect)/s

rkB/s:      每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算)

wkB/s:    每秒写K字节数。是 wsect/s 的一半。(需要计算)

avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)

avgqu-sz: 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。

await:    平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)

svctm:   平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)

%util:      一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)

如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。

idle小于70% IO压力就较大了,一般读取速度有较多的wait.

同时可以结合vmstat 查看查看b参数(等待资源的进程数)和wa参数(IO等待所占用的CPU时间的百分比,高过30%时IO压力高)

另外还可以参考:

一般情况

svctm 

svctm的大小一般和磁盘性能有关:CPU/内存的负荷也会对其有影响,请求过多也会间接导致 svctm 的增加。

await: await的大小一般取决于服务时间(svctm) 以及 I/O 队列的长度和 I/O 请求的发出模式。

如果 svctm 比较接近 await,说明I/O 几乎没有等待时间;

如果 await 远大于 svctm,说明 I/O队列太长,应用得到的响应时间变慢,

如果响应时间超过了用户可以容许的范围,这时可以考虑更换更快的磁盘,调整内核 elevator算法,优化应用,或者升级 CPU。

队列长度(avgqu-sz)也可作为衡量系统 I/O 负荷的指标,但由于 avgqu-sz 是按照单位时间的平均值,所以不能反映瞬间的 I/O 洪水。

# iostat -x 1

bf93ff25aba7d3c483718bfe89b43f49.png上面的 iostat 输出表明秒有 11.88 次设备 I/O 操作: 总IO(io)/s = r/s(读) +w/s(写) = 6.49+7.39 = 11.88 (次/秒) 其中写操作占了主体 (w:r = 7:6)。

平均每次设备 I/O 操作只需要 5ms 就可以完成,这是比较正常的数值。

因为发出的 I/O 请求太多 ,假设这些请求是同时发出的,那么平均等待时间可以这样计算:

平均等待时间 = 单个 I/O 服务时间 * ( 1 + 2 + ... + 请求总数-1) / 请求总数。    Input Output statistics (  iostat )

iostat反映了终端、磁盘I/O情况和CPU活动。输出结果的第一行是从系统启动到现在为止的这段时间的结果,接下去的每一行是interval时间段内的结果。Kernel里有一组计数器用来跟踪这些值。

iostat的默认参数是tdc(terminal,  disk, and CPU)。如果任何其他的选项被指定,这个默认参数将被完全替代,例如,iostat -d将只反映磁盘的统计结果。

语法:

基本语法: iostat  ;   interval  count

option - 让你指定所需信息的设备,像磁盘、cpu或者终端(-d , -c , -t  or -tdc ) 。x 选项给出了完整的统计结果(gives the extendedstatistic)。

interval -  在两个samples之间的时间(秒)。

count  - 就是需要统计几次。

例子:

$ iostat -xtc 5 2

77ecd89f008bc5cfe947e67d22f77f83.png

The fields have the following meanings:

disk    name of the disk

r/s     reads per second

w/s     writes per second

Kr/s    kilobytes read per second

Kw/s    kilobytes written per second

wait    average number of transactions waiting for service (Q length)

actv    average number of transactions  actively

being serviced (removed  from  the queue but not yet  completed)

%w      percent of time there are transactions  waiting    for service (queue non-empty)

%b      percent of time the disk is busy  (transactions

in progress)R

esults and Solutions:

从iostat输出结果中需要注意的值:

Reads/writes  per second (r/s , w/s)

Percentage busy (%b)

Service time (svc_t)

如果磁盘显示长时间的高reads/writes,并且磁盘的percentage busy (%b)也远大于5%,同时average service time  (svc_t)也远大于30milliseconds,这以下的措施需要被执行:

1.)调整应用,令其使用磁盘i/o更加有效率,可以通过修改磁盘队列、使用应用服务器的cache

2.)将文件系统分布到2个或多个磁盘上,并使用volume manager/disksuite的条带化特点

3.) 增加系统参数值,如inode cache  , ufs_ninode。Increase the system parameter values for  inode cache  , ufs_ninode ,  which is  Number of inodes to be held in memory. Inodes are cached globally (for UFS), not on a per-file system basis

4.) 将文件系统移到更快的磁盘/控制器,或者用更好的设备来代替

cce544e7261bf3a4535656c82b969b03.png转发至微博

cce544e7261bf3a4535656c82b969b03.png转发至微博

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值