那么,我们应该读取什么值来获取每个进程每秒的输入输出操作数?
我已经尝试过 /proc/[pid]/io,它返回以下值:
root@node:~# cat /proc/31597/io
rchar: 213260190
wchar: 462308212
syscr: 23275044
syscw: 47797624
读取字节数: 894867968
写入字节数: 27645691392
取消写入字节数: 0
根据定义:
syscr、syscw - I/O 操作数计数器(分别为:读取和写入)。我们可以使用它们来计算一次系统调用中传递的平均数据量。
所以我思考一秒钟后,syscw 的最后一个值减去 syscw 的前一个值,应该可以得到进程 31597 执行的写入操作计数
但是,当该过程以大约 5MB/秒的速度进行写入(小文件)时,我得到的写入值为 6500 IOPS,这对我来说看起来不正确。
有任何想法吗?
答案1
iotop可能是您正在寻找的程序。它类似于 top,但用于 I/O。
您需要 2.6.20 或更好的内核和 root 权限。