进程的总 I/O 成本

进程的总 I/O 成本

我知道这iotop可以让我实时测量任何或所有进程使用的磁盘带宽。iotop -a测量累积的磁盘带宽,这更接近我想要的。

但是,当我运行的进程终止时,它在 iotop 中消失得太快,我无法准确看到该进程自启动以来总共使用了多少 I/O。有没有办法记录进程结束时的总 I/O 使用情况,并将其保存到某个文件中以供进一步分析?

请注意,我只寻找 Linux 独有的答案,特别是 Ubuntu。

答案1

尝试PID统计. 使用方法如下:pidstat -d -e command

pidstat能够报告 Linux 任务的统计信息。-d指示pidstat收集 IO 统计信息。pidstat命令完成后将停止并打印报告。

答案2

iotop--batch选项,您可以使用它来非交互地处理它。这将允许您执行(例如):

sudo iotop --batch -qqq --accumulated | fgrep --line-buffered '% dd ' | tee  ~/dd.log

其输出结果如下:

19804 be/4 user  0.00 B      0.00 B  0.00 %  0.00 % dd if=/dev/zero of=/tmp/log.1 bs=1M count=10000
19804 be/4 user  0.00 B    755.18 M  0.00 % 30.99 % dd if=/dev/zero of=/tmp/log.1 bs=1M count=10000
19804 be/4 user  0.00 B   1029.48 M  0.00 % 50.96 % dd if=/dev/zero of=/tmp/log.1 bs=1M count=10000

与您的字符串匹配的最后一行fgrep(1)(在此示例中为寻找dd命令)是您的最终累积行。

此外,输出将保留以供您稍后根据需要进行解析。(如果您想将所有 iotop 输出保存到日志文件,而不仅仅是示例中的特定输出,~/dd.log您还可以反转顺序)teefgrepdd

相关内容