我想知道 /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/maps
在cat /proc/$$/maps
终端中尝试。阅读维基页面地址空间,虚拟内存,页面缓存,ASLR,极低频,RSS,工作集...
答案2
获取pss
(“比例设置大小”)(以 GB 为单位):
cat /proc/$pid/smaps | grep -i pss | awk '{Total+=$2} END {print Total/1024/1024" GB"}'