使用
/usr/bin/time -v <program name>
我可以通过读取 Maximum resident set size
数字来找到进程使用的最大物理内存量。
但是我当前正在运行一个需要使用交换的程序。如何获取进程使用的内存总量(包括换出的页面)?
进程
/proc/<pid>/status
的 <pid>
文件包含进程使用的不同类型内存的多个计数器。 VmSize
是使用的总虚拟地址空间。 VmRSS
是当前的驻留大小(VmHWM
是“高水位线”RSS,我认为这是您当前从 time
获得的值)。 VmSwap
行应包含进程当前使用的交换空间量。
请注意,许多计数器可以包含共享页面(例如,如果您运行同一 C 程序的多个副本,它们将共享文本页面和 C 库文本页面,但
VmRSS
将在每个副本中考虑它们)过程。)有关这些限制的更多讨论,请参阅 https://ewx.livejournal.com/579283.html。
请参阅 https://www.kernel.org/doc/Documentation/filesystems/proc.txt(具体来说,表 1-2)了解此处所有字段的文档。
哦,您只能在进程
/proc/<pid>/
运行时访问 <pid>
目录。