我想以编程方式(从该进程内部)获取当前正在运行的进程的内存使用情况。以下SO post详细说明了如何实现。但是,该文章中建议的是从proc
伪文件系统中获取这些值。由于如果进程在容器(不一定是docker容器)中运行,我希望此方法也能正常工作,所以我不确定这种方法是否会产生正确的结果。
我担心的原因是各种文章(Why top and free inside container show wrong memory,Memory inside Linux containers)解释了proc
中的信息如何不了解容器上的cgroup和内存限制。我要获取的是进程使用的内存,而不是总的/可用内存,因此,由于我的容器进程实际上在主机OS上运行,因此我假设值为VmSize
,VmRss
和VmPeak
中的/proc/self/status
仍会显示正确的值。
所以我的问题是:
/proc/self/status
仍然可以可靠地正确使用,还是我忽略了某些内容?/proc/self/status
不可靠,是否有更好的方法(也许进程的相应cgroup拥有此信息)?