我正在通过从Proc文件系统读取值来编写Perl中的小进程监视器脚本。现在我可以使用 / proc / [pid] / status 和 / proc / [pid] / io >来获取线程数,进程状态,读写字节数strong>文件。现在我想计算一个进程的内存使用情况。搜索后,我开始知道内存使用情况 / proc / [pid] / statm 。但我仍然无法弄清楚该文件需要哪些必要字段来计算内存使用量。谁可以帮我这个事?提前致谢。
答案 0 :(得分:2)
您可能想要resident
或size
。来自kernel.org。
答案 1 :(得分:2)
很难知道某个进程的“内存使用情况”是什么。 VM大小和RSS是已知的,可测量的值。
但你可能想要的是别的东西。在实践中,“VM大小”似乎太高,RSS通常看起来太低。
主要问题是:
所以你真的需要考虑什么算作“内存使用”。
在我看来,逻辑上:
我不知道有什么用处。它似乎很重要,并且涉及(至少)读取/ proc / pid / pagemap以及可能的一些其他/ proc接口,其中一些只是root用户。
答案 2 :(得分:1)
另一种(不太简单但更精确)的可能性是解析/proc/123/maps
文件,可能使用pmap
实用程序。它为您提供有关“虚拟内存”的信息(即进程的地址空间)。