据我所知有几个内存概念:VSS RSS PSS和USS,其中USS(唯一集大小)是进程专用的物理内存(如果需要请纠正我)。
我认为这应该是一个非常有用的值,让我知道哪个进程使用了太多物理内存?
但我们怎样才能得到这个值呢?通过 ps 或从任何 /proc 文件?
(我知道 smem 工具可以提供帮助,但是有没有内置的方法?)
更新20230904
在 aviro 提供的帖子之后,http://lwn.net/Articles/230975/提到
这些数字(PSS 和 USS)的计算成本相对较高,因为它们需要遍历进程的地址空间。因此它们不会是定期从内核导出的东西。可以使用 /proc/<pid>/pagemap 文件在用户空间中计算它们
从 /proc/pid/smaps 获取有关进程内存使用情况的信息的答案包括执行此操作的指令。它没有具体给出具体的确切命令
USS
,但它提供了提出适用于 的命令所需的所有信息和示例USS
。因此,如果
USS
是私有映射的总和,则与对 求和相同RSS
,但不是对所有行求和Rss:
,而是对所有私有映射求和(/Private/
而不是/Rss:/
):