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

Kur*_*eek 1 memory memory-management ps

我有一个使用 pid 运行的服务器进程24257,想知道它使用了多少内存(以便估计为 Kubernetes 中的同一进程分配多少资源)。根据pshttps://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).
Run Code Online (Sandbox Code Playgroud)

如果我运行这个,我会得到

> ps -p 24257 -o %mem
%MEM
 0.3
Run Code Online (Sandbox Code Playgroud)

我不确定我是否理解这个输出,因为我在具有 64 GB 内存的 MacBook Pro 上运行该进程,因此我希望(终端)进程在活动监视器中显示为使用约 19 GB 内存。然而,运行的终端进程远没有达到这个数字(最多约 900 Mb)。

有没有办法获得内存使用量的绝对数字(以 Mb 为单位)?或者,如何确定用于此计算的“机器上的物理内存”?

Kur*_*eek 5

要将Nate Eldredge的评论转换为答案,首先,0.3输出是百分比,因此 64 GB 的 0.3% 是 192 MB。

其次,rss输出应给出驻留集大小:

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

运行此命令给出

> ps -p 24257 -o %mem,rss
%MEM    RSS
 0.3 209908
Run Code Online (Sandbox Code Playgroud)

约 21 Mb 的输出与根据输出得出的约 19 Gb 的估计值非常吻合%MEM