Linux磁盘性能查看之 iostat

1、Linux 中 iostat命令找不到 报错 command not found

解决办法:安装 sysstat 软件包

执行 yum install sysstat 进行安装

Linux磁盘性能查看之 iostat

2、磁盘瓶颈

重要的三个指标:

  • %util :   一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)
  • iowait : 平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
  • svctm : 平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)

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

另外还需要注意 iowait 这个值,iowait 值高就意味着磁盘缓慢或负载过大。还有不要信任 svctm 这个字段。

监控 swap 和 系统分区,要确保 virtual memory 不是文件系统I/O 的瓶颈。

磁盘瓶颈可以通过 pidstat -d 定位程序。

3、指令与常用判断指标

iosta -x 

iostat -x 1(每隔一秒输出一下)

%util (越小越好,接近100%则IO达到瓶颈)

Percentage  of  CPU time during which I/O requests were issued to the device (bandwidth utilization for the device).Device saturation occurs when this value is close to 100%.

注意对于RAID磁盘组或者SSD而言,iostat中的%util就算超过了100%也未必存在瓶颈。

svctm“平均每次设备I/O操作的服务时间 (毫秒)”

The average service time (in milliseconds) for I/O requests that were issued to the device.

  • svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好;
  • iowait的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢,此时可以通过更换更快的硬盘来解决问题

iowait 越小越好,最好是0

4、运行效果和其他指标

Linux磁盘性能查看之 iostat

  • 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的单位为毫秒)。


留言