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?先谢谢你