0

我有一个在 RHEL 4 机器下运行的用 C 语言编写的守护进程。

守护进程访问一段共享内存(只​​不过是一个包含 65536 个元素的大数组)。没有 malloc/free 完成。

我观察到ps aux显示该守护程序具有共享内存的大小 + 一些 kb 作为 VSZ 和一些 kb 作为 RSS。

然后,守护进程访问共享内存数组的次数越多,RSS 增加的越多,直到达到大约相同大小的 VSZ。

为什么Linux以这种方式计算RSS?

我的意思是......共享内存不应该被单个进程消耗的内存(RSS)而忽略,因为它可以被许多其他可运行程序访问?

为什么它只在访问共享内存时引发 RSS?

4

1 回答 1

1

RSS 是映射到您的进程的物理内存量。

Linux 采用按需分页,以便物理内存仅在第一次访问时被映射。VSZ 是由物理内存按需提供支持的虚拟内存。这解释了为什么您的 RSS 会随着您访问更多共享内存映射而增长。

于 2012-07-11T08:44:40.060 回答