我正在编写一个收集整个系统 I/O 统计信息的应用程序。我想知道页面输入和页面输出的两个计数器是否,
pgpgin
pgpgout
在 /proc/vmstat 中包括写入和读取连接到系统的所有基于磁盘的块设备的页面。
如果可以的话,请告诉我!
我正在编写一个收集整个系统 I/O 统计信息的应用程序。我想知道页面输入和页面输出的两个计数器是否,
pgpgin
pgpgout
在 /proc/vmstat 中包括写入和读取连接到系统的所有基于磁盘的块设备的页面。
如果可以的话,请告诉我!
这些页面被写入交换分区和从交换分区写入;这些数字不会告诉您它们被写入哪个分区,只是发生了分页事件。
如果您想查看磁盘 IO 统计信息,您应该查看 /proc/diskstats 或 /sys/block/*/stat 以获取块设备 IO 计数器。
这篇关于 vmstat 的文章有助于理解分页计数器的含义:http ://www.linuxjournal.com/article/8178
请参阅 Linux 源代码,例如http://lxr.free-electrons.com/source/block/blk-core.c?v=4.6。在那里,我们发现在函数中维护了计数器,该submit_bio()
函数似乎对任何磁盘 i/o 进行计数(例如,请参见http://lxr.free-electrons.com/ident?v=4.6;i= submit_bio),不要与操作系统分页(https://en.wikipedia.org/wiki/Paging)混淆。
我不明白为什么不。我的意思是,当您遇到页面错误时,所需的块可以来自任何地方,具体取决于哪些文件系统安装在 VFS 中的哪个位置(即内存映射 i/o)或交换出进程空间以交换文件系统/文件。我不明白为什么不计算所有块设备,因为它们都可以用于分页(但这取决于您在它们上拥有什么文件系统以及如何使用它们)
这可能不合时宜,但我做了一个
man vmstat
发现文件可以读取,或者有一个可以同名调用的bin。这将为您提供所有相同的东西,但您可以通过适当的开关优势以不同的方式要求它。对于 bin 报告的各种计数器,有一小堆描述。
希望它有帮助,乔希