我有一个用RHEL 4机器运行的C编写的守护进程。
守护程序访问一段共享内存(只不过是65536个元素的大数组)。没有malloc /免费。
我观察到 ps aux 表明该守护进程的大小为共享内存+某些kb为VSZ,而某些kb为RSS。
然后,守护程序访问共享内存数组越多,RSS增加的越多,直到达到大约相同大小的VSZ。
为什么Linux会以这种方式计算RSS?
我的意思是......共享内存不应该被忽略,因为单个进程占用内存(RSS),因为它可以被许多其他runnables访问?
为什么它只是提升RSS来访问共享内存?
答案 0 :(得分:0)
RSS是映射到您的流程的物理内存的数量。
Linux使用demand paging,以便物理内存仅在第一次访问时映射。 VSZ是虚拟内存,可根据需要获得物理内存支持。这解释了为什么在访问更多共享内存映射时RSS会增长。