GNU / Linux中的磁盘IOPS计数

我找不到有关在GNU / Linux中计算磁盘iops一段时间的方法的信息。 我看到了iostat,但我不确定这是正确的方式。 此外,我需要的工具,可以统计系统启动以来所有时间的iops,但iostat不这样做。 我的意思是整个系统和任何逻辑卷的磁盘iops。

可能是有一些工具来限制磁盘iops的逻辑卷或像这样的。

如果有关系,我使用Debian。 另外我使用硬件MegaRaid Raid控制器。 可能会影响水平。

iostat是随着时间的推移获得IO数量的正确方法。

如果你想从启动开始,总共可以读取/proc/disktats 。 文件格式的说明在你的内核的Documentation/iostats.txt (或这里 )。

/sys/block/${DEVICE}/stat/sys/block/${DEVICE}/${DEVPART}/stat (用您的设备replace${DEVICE}每个设备或每个分区也可以使用此信息名字例如sda${DEVPART}与您的分区名称例如${DEVPART} )。

我更喜欢使用cd /dev; iostat -xk 3 sd? fio? cd /dev; iostat -xk 3 sd? fio? 观看磁盘IO。 看看这个样本摘录:

 avg-cpu: %user %nice %system %iowait %steal %idle 1.20 0.00 4.58 0.00 0.00 94.22 Device: rrqm/s wrqm/sr/sw/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util sdg 0.00 0.00 6.67 238.00 3413.33 39774.67 353.04 0.25 1.02 0.37 9.17 sda 0.00 0.00 5.33 3570.67 2730.67 42230.50 25.15 0.44 0.12 0.07 25.20 sdc 0.00 0.00 10.33 795.00 3089.33 44510.00 118.21 0.40 0.47 0.16 12.83 sdf 0.00 0.00 6.67 254.67 3413.33 40318.67 334.68 0.24 0.93 0.35 9.07 sdh 0.00 0.00 14.33 338.00 3444.00 43286.67 265.26 0.27 0.78 0.29 10.23 sdi 0.00 0.00 8.67 906.33 4437.33 44533.17 107.04 0.36 0.40 0.15 14.17 sdb 0.00 0.00 4.67 2355.33 2389.33 44427.50 39.68 0.51 0.21 0.08 18.87 sdd 0.00 0.00 7.00 256.00 3414.67 40434.67 333.46 0.32 1.22 0.37 9.60 sde 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 fioa 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 

这个时间间隔的平均IOPS是r/sw/s的总和,你的avgrq-sz (扇区中的平均请求大小)让你知道工作负载是随机的还是顺序的。

在上面的例子中看看sdgsda 。 两者都向磁盘写入大约40MBps,但sda(随机工作负载)的请求大小要低得多,从而导致更高的IOPS。

如果你想跟踪IOPS(和其他性能)很长一段时间,我强烈build议使用nmon收集数据并生成漂亮的graphics。

Iotop做你想做的事吗? 这可能比你想要的更实时一些。

别的,试试iostat 5 5