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

Fra*_*ios 6 process memory proc

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

Bas*_*tch 12

确实你需要使用/proc/; 所以仔细阅读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由两个进程编辑的文件段?见mmap(2) & getrusage(2)

尝试cat /proc/self/mapscat /proc/$$/maps在终端。阅读关于地址空间虚拟内存页面缓存ASLRELFRSS工作集的维基页面……

  • 由于 `top` 是一个免费软件,你可以研究它的源代码并了解它在计算什么。我的观点是*内存使用*是不明确的,你应该定义你想要的。 (4认同)