我正在尝试测量特定进程在指定持续时间内对特定卷完成的磁盘写入和读取总量。
我找到了 iotop,它可以每秒为特定进程输出 IO,如下所示:
iotop --batch --pid $(pidof my_process)
您可以在其中指定 x 次迭代-n x
。
但是我必须过滤掉实际的数字,然后自己计算。
有没有更简单的方法来做到这一点?
我正在尝试测量特定进程在指定持续时间内对特定卷完成的磁盘写入和读取总量。
我找到了 iotop,它可以每秒为特定进程输出 IO,如下所示:
iotop --batch --pid $(pidof my_process)
您可以在其中指定 x 次迭代-n x
。
但是我必须过滤掉实际的数字,然后自己计算。
有没有更简单的方法来做到这一点?
不知道有一种更简单的方法,但是这个 bash 片段可能会帮助您从 iotop 解析出您需要的内容:
实际上,每 x 秒可能更容易阅读 /proc/$PID/io :
实际上,上面的脚本看起来是错误的,因为它似乎
/proc/<pid>/io
只是总数,所以真的,只要抓住它一次,等多久,再抓住它,找出不同之处,就有答案了。您可能想查看源代码并找出它的数据类型,看看它是否最终会回绕。不过,对于小型平板电脑来说可能不是问题。它可能已经过时了,您可能需要自定义一个插件,但您可以尝试“ Munin ”,它是一个图形应用程序,可以满足您的需求。
它没有针对每个进程 IO 的插件,但我确信破解一个插件并不太难。然后,您将获得 munin/rrdtool 的所有附加值,包括日/周/年的平均值、图形、限制、警告等。
您可以
sysstat
在大多数基于 Debian 的发行版中安装 apt-get,包括 Maemo,并运行iostat
以监控磁盘读/写总数。只需确保没有其他内容正在写入磁盘,这在您的情况下可能会也可能不会。
iostat
打印自启动以来读取和写入的总块数,或其他任意时间点。您必须弄清楚一个块有多大才能知道写入了多少数据。我通过
dd
写入已知数量的数据并划分块来做到这一点。