【发布时间】:2012-07-11 07:59:42
【问题描述】:
我有一个用 C 语言编写的守护程序,在 RHEL 4 机器下运行。
守护进程访问一段共享内存(只不过是一个包含 65536 个元素的大数组)。没有 malloc/free 完成。
我观察到 ps aux 表明该守护进程的大小为共享内存 + 一些 kb 作为 VSZ,只有一些 kb 作为 RSS。
然后,守护进程访问共享内存数组的次数越多,RSS 增加的次数就越多,直到达到大约相同大小的 VSZ。
为什么 Linux 以这种方式计算 RSS?
我的意思是...共享内存不应该因为单个进程消耗的内存 (RSS) 而被忽略,因为它可以被许多其他可运行程序访问?
为什么它会引发 RSS 只是访问共享内存?
【问题讨论】: