rss
所有活动进程(状态为S
或)的值的总和是否O
会远大于总物理内存 + 交换?
物理记忆是指prtdiag | grep Memory
而交换大小,我参考了的结果swap -l
。
答案1
容易地。
进程之间共享的物理内存(无论是 IPCS 共享内存还是mmap()
共享对象使用的部分物理内存)都将计入将该内存映射到其地址空间的每个进程的 RSS 中。当计算内存使用量的起点是枚举进程时,没有简单的方法可以解决这个问题 - 您必须对每个进程的所有虚拟页面进行虚拟到物理的映射,然后消除重复项,同时希望在计算总数时检查的内存映射不会发生变化。
一个很好的例子是具有大型 SGA 的 Oracle 数据库服务器 - 它是在 Solaris 上使用 IPCS 共享内存实现的。如果 20 个进程映射 32 GB 共享内存 SGA,那么即使只使用了 32 GB 的 RAM,也会为进程的 RSS 总和贡献 640 GB。