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