在Linux上,vmstat命令和/或/ proc / vmstat报告的页面大小是多少?

前端之家收集整理的这篇文章主要介绍了在Linux上,vmstat命令和/或/ proc / vmstat报告的页面大小是多少?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
正如许多人在StackExchange和其他地方所述,Linux的典型内核/ mmu页面大小为4 KiB.我已经验证我的操作系统/架构(RHEL 6.6,Intel Xeon E5-2690)就是这种情况.

现在除其他外,vmstat -s命令报告“paged in”和“pages page out out”,它们是在启动时从0开始的计数器.我已经确认,在任何给定时刻,这些值都与/ proc / vmstat中的pgpgin和pgpgout条目的值完全相同(vmstat命令是从/ proc / vmstat获取它们吗?).其他命令,特别是sar -B报告pgpgin / s和pgpgout / s作为在特定时间间隔内每秒分页输入/输出的Kibibytes.

在最近的测试中,我已经看到来自sar的pgpgin / s和pgpgout / s值也完全对应于从指定间隔的vmstat值计算的速率.这使我得出结论,vmstat报告的页面大小为1 KiB.因此,/ proc / vmstat的pgpgin / out值是自引导以来分页入/出的KiB数.

我的问题是:

>这是一个有效的结论吗?
>如果是这样,为什么vmstat和其他工具在1 KiB页面中报告而不是作为操作系统和体系结构的“通用货币”的4 KiB页面?特别是,vmstat说“页面输入/输出”,而不是“KiBs页面输入/输出”.这令人困惑.

解决方法

关于/ proc / vmstat中的计数器,似乎更新这些值的函数是Linux / block / blk-core.c中的submit_bio.
2067 blk_qc_t submit_bio(struct bio *bio)
2068 {
...
2079                         count = bio_sectors(bio);
2080 
2081                 if (op_is_write(bio_op(bio))) {
2082                         count_vm_events(PGPGOUT,count);
2083                 } else {
2084                         task_io_account_read(bio->bi_iter.bi_size);
2085                         count_vm_events(PGPGIN,count);
2086                 }
...
2100 }
2101 EXPORT_SYMBOL(submit_bio);

bio_sectors是Linux / include / linux / bio.h中的一个宏

64 #define bio_sectors(bio)        ((bio)->bi_iter.bi_size >> 9)

这似乎告诉我,数字以扇区大小(512)字节计算.如果你正确地将字节数移动了9,那么你最终得到的是什么价值.

无论如何,这似乎是内核2.6.27 – 4.0.x之间的类似设置.

猜你在找的Linux相关文章