Linux RSS和共享内存



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

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

我观察到ps-aux显示守护进程的大小为共享内存+一些kb作为VSZ,而只有一些kb作为RSS。

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

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

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

为什么它提出RSS只是访问共享内存?

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

Linux采用需求分页,因此物理内存只在第一次访问时进行映射。VSZ是一种虚拟内存,可根据需要由物理内存进行备份。这就解释了为什么RSS会随着您访问更多共享内存映射而增长。

最新更新