【发布时间】:2020-09-29 17:43:30
【问题描述】:
我经常注意到/proc/[pid]/status 中的RssAnon 和/proc/[pid]/smaps_rollup 中的Anonymous 给出的数字之间存在差异。我还在/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_rollup的内容。然而,对于这种差异,从来没有一个确凿的解释。来自 rr- 的答案最接近(实际上,这里讨论了 statm 和 smaps):https://stackoverflow.com/a/30799817/5747415,因为它是基于对生成 smaps 和 statm 的内核代码的分析。它以一个(似是而非但未经证实的)假设结束,即smaps 通过实际迭代内存区域以可靠但耗时的方式计算其数据,而statm 中的信息基于计数器(在这种情况下为@ 987654338@) 在许多不同的地方不断更新 - 这可能会导致不一致。
有人可以为这些差异提供一些有根据的解释吗?它们是有意的吗?值的含义是否不同?或者它实际上是一个错误?提前非常感谢。
【问题讨论】:
标签: memory-management linux-kernel procfs