如何检查进程的绝对内存使用情况?

问题描述

我有一个使用 pid 24257 运行的服务器进程,我想知道它使用了多少内存(为了估计要为 Kubernetes 中的同一进程分配多少资源)。根据 ps (https://man7.org/linux/man-pages/man1/ps.1.html) 的手册页,可以使用 %mem 输出格式说明符获得:

       %mem        %MEM      ratio of the process's resident set size
                             to the physical memory on the machine,expressed as a percentage.  (alias pmem).

如果我运行这个,我得到

> ps -p 24257 -o %mem
%MEM
 0.3

我不确定我是否理解此输出,因为我在具有 64 GB 内存的 MacBook Pro 上运行该进程,所以我希望(终端)进程在活动监视器中显示为使用 ~19 GB 内存。但是,运行的终端进程远不及此(它们最多约 900 Mb)。

有没有办法可以将内存使用情况作为绝对数字(以 Mb 为单位)?否则,如何确定用于此计算的“机器上的物理内存”?

解决方法

要将 Nate Eldredge 的评论转换为答案,首先,mail.uid('store',... 输出是一个百分比,因此 64 GB 的 0.3% 是 192 MB。

其次,0.3 输出应该给出常驻集大小:

rss

运行此命令给出

       rss         RSS       resident set size,the non-swapped physical
                             memory that a task has used (in kilobytes).
                             (alias rssize,rsz).

~21 Mb 的输出与从 > ps -p 24257 -o %mem,rss %MEM RSS 0.3 209908 输出得出的~19 Gb 的估计非常吻合。