Ton*_*yer 6 linux optimization memory
从这个问题开始。Debian,如果这很重要。
我知道分叉进程之间共享了一些内存。那么我如何确定一个进程/一组分叉进程使用了多少内存?
使用在这个类似问题中推荐的 smem 工具,我得到如下值:
Command Swap USS PSS RSS
/usr/sbin/spamd --create-pr 0 16820 24974 41628
spamd chil 0 19388 27581 44176
spamd chil 0 32328 40038 55708
Run Code Online (Sandbox Code Playgroud)
我理解交换列,RSS 列是通常报告的(例如在 ps 中)。从阅读 smem 文档来看,USS 是专门为那个孩子准备的内存,而 PSS 是进程间共享的一部分内存。但是,将 USS 添加到 PSS 会产生比 RSS 更高的值,而且我认为共享的意义会更小(所以我可能解释不正确)。
我不依赖于 smem 工具。我只想以某种方式获得“内存使用”数字,该数字在一定程度上准确反映了进程正在使用的实际内存量。
小智 3
按比例设置大小可能是可用的每个进程的内存使用的最佳数字。它是唯一的设置大小+(共享页面/共享进程数)。
因此,一个进程已使用 44176 个页面,其中 19388 个页面是该进程独有的。这意味着 24788 已与其他人共享。
将 PSS 视为 USS +(共享权重)。本例中的权重为 8193,这是该进程所占共享内存页面 (24788) 的比例。共享页面的应用程序实例越多,每个进程的权重就越低。
您可以跨多个进程对 PSS 求和,并且不会多次计算共享页面。但是,您不能将 USS 和 PSS 相加并期望 RSS,因为 PSS 已经包含 USS。
| 归档时间: |
|
| 查看次数: |
3549 次 |
| 最近记录: |