Memory management /proc/[pid]/status:RssAnon和/proc/[pid]/smap\u rollup:Anonymous之间存在差异的原因是什么?
我经常注意到Memory management /proc/[pid]/status:RssAnon和/proc/[pid]/smap\u rollup:Anonymous之间存在差异的原因是什么?,memory-management,linux-kernel,procfs,Memory Management,Linux Kernel,Procfs,我经常注意到/proc/[pid]/status中的RssAnon和/proc/[pid]/smap\u rollup中的匿名的数字之间存在差异。我还查看了/proc/[pid]/status中的RssShmem,但这无助于解释差异。例如: status:Name: tail status:RssAnon: 72 kB status:RssShmem: 0 kB smaps_rollup:Anonymous: 92 kB 在我分析的系统(有一个4.14内
/proc/[pid]/status
中的RssAnon
和/proc/[pid]/smap\u rollup
中的匿名
的数字之间存在差异。我还查看了/proc/[pid]/status
中的RssShmem
,但这无助于解释差异。例如:
status:Name: tail
status:RssAnon: 72 kB
status:RssShmem: 0 kB
smaps_rollup:Anonymous: 92 kB
在我分析的系统(有一个4.14内核)中,这种差异是常见的。也有数字匹配的情况,但这并不常见
我发现很多页面都解释了/proc/[pid]/status
、/proc/[pid]/smaps
和/proc/[pid]/smaps\u rollup
的内容。然而,对于这种差异从来没有一个结论性的解释。rr-的回答最接近(实际上,这里讨论了statm
和smaps
),因为它基于对smaps
和statm
生成的核心代码的分析。它以一个(看似合理但未经证实的)假设结束,即smap
通过实际迭代内存区域以可靠但耗时的方式计算其数据,而statm
中的信息基于计数器(在本例中MM\u anopages
)在许多不同的地方不断更新,这可能会导致不一致
有人能为这些差异提供一些有根据的解释吗?它们是有意的吗?价值观的含义是否不同?或者它实际上是一个bug?先谢谢你