Fra*_*urt 24 linux process monitoring io
我不明白iotop输出:它显示大约 1.5 MB/s 的磁盘写入(右上角),但所有程序都有 0.00 B/s。为什么?
该视频是在我使用 perl -e 'for(<*>){((stat)[9]<(unlink))}', 在 Kubuntu 14.04.3 LTS x64 上删除包含数百万个文件的文件夹的内容时拍摄的。
iotop是使用sudo iotop.
Gil*_*il' 27
iotop 显示的信息对于单个进程和整个系统的收集方式不同。“实际”全局数字不是每个进程数字的总和(这就是“总数”)。
所有信息都是从proc 文件系统收集的。
/proc/PID/iorcharwcharreadwritereadvwritevrecvsend/proc/vmstat,特别是pgpgin和pgpgout值。这些测量内核和硬件之间交换的数据(更准确地说,这是内核中块设备层混洗的数据)。每个进程数据和块设备层数据不同的原因有很多。特别是:
最后一个差异解释了您在这里看到的内容。删除文件只会影响元数据,不会影响数据,因此该过程不会写入任何内容。它可能正在读取目录内容以列出要删除的文件,但这足够小以至于它可能会被忽视。
我认为 Linux 没有提供任何方法来监视文件元数据更新。您可以通过/sys/fs某些文件系统下的条目监视每个文件系统的 I/O 。我认为您不能针对特定进程计算元数据 I/O,在一般情况下这样做会非常复杂,因为多个进程可能会导致读取或更改相同的元数据。