给定进程的内存使用情况(使用 Linux proc 文件系统)

给定进程的内存使用情况(使用 Linux proc 文件系统)

我想知道 /proc 目录中的哪些文件以及这些文件的哪些字段需要计算给定 pid 的内存使用情况。我一直在使用“stat”文件和该文件中的“vsize”参数,但这不是一个很好的计算。有人知道更好的公式吗?谢谢,安娜。

答案1

事实上你需要使用/proc/;所以请仔细阅读过程(5)

对于进程 1234,您想要读取/proc/1234/maps(或/proc/1234/smaps) 来获取地址空间,并读取/proc/1234/status&/proc/1234/statm

对于您自己的流程(以编程方式)使用/proc/self/maps, /proc/self/status,/proc/self/statm

请注意内存使用情况在 Linux 上是一个非常模糊的术语。如何计算mmap由两个进程共享的文件段?看映射(2)&得到鲁萨奇(2)

cat /proc/self/mapscat /proc/$$/maps终端中尝试。阅读维基页面地址空间,虚拟内存,页面缓存,ASLR,极低频,RSS,工作集...

答案2

获取pss(“比例设置大小”)(以 GB 为单位):

cat /proc/$pid/smaps | grep -i pss |  awk '{Total+=$2} END {print Total/1024/1024" GB"}'

相关内容