我找不到有关在 GNU/Linux 中计算某个时间段的磁盘 iops 的方法的信息。我看到了 iostat,但我不确定它是否正确。此外,我需要一个工具,可以计算自系统启动以来所有时间的 iops,但 iostat 不这样做。我的意思是整个系统和任何逻辑卷的磁盘 iops。
可能有一些工具可以限制逻辑卷或类似物的磁盘 iops。
如果重要的话,我会使用 Debian。此外,我还使用硬件 MegaRaid Raid 控制器。可能会对某些方面产生影响。
答案1
iostat 是获取随时间变化的 IO 计数的正确方法。
如果你想要自启动以来的总数,你可以从中读取/proc/disktats
。文件格式的描述在你的内核Documentation/iostats.txt
(或这里)。
该信息也可按设备或按分区在/sys/block/${DEVICE}/stat
和中找到/sys/block/${DEVICE}/${DEVPART}/stat
(${DEVICE}
用您的设备名称替换,例如sda
,${DEVPART}
用您的分区名称替换,例如sda5
)。
答案2
我更喜欢用它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/s r/s w/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
r/s
此间隔的平均 IOPS 是和的总和w/s
,并且您的avgrq-sz
(扇区中的平均请求大小)可以让您了解工作负载是随机的还是连续的。
看看上面例子中的sdg
vs。sda
两者都以大约 40MBps 的速度写入磁盘,但 sda(随机工作负载)的请求大小要小得多,从而导致更高的 IOPS。
如果你想长期跟踪 IOPS(和其他性能),我强烈建议使用纳米收集数据并生成漂亮的图表。
答案3
iotop 能满足您的要求吗?它可能比您想要的更实时一些。
否则,尝试iostat 5 5