有没有有效的方法在docker中获得左侧物理内存?

时间:2017-04-06 15:09:20

标签: c linux docker linux-kernel

我的应用程序想要在docker中读取免费的物理内存。

目前,这意味着我可以想到,它正在从' cgroup'中读取两个值memory.limit_in_bytesmemory.usage_in_bytes。文件在docker中,然后将它们计算为

free_memory = value memory.limit_in_bytes - memory.usage_in_bytes

但这会很慢。

有没有有效的方法来获得免费的物理内存?

我的应用程序非常注重性能。

1 个答案:

答案 0 :(得分:0)

我对这个问题的回答:您真的不能从docker实例内部知道确切的值(请参阅上面的评论)。 我自己针对此问题的解决方案基于以下事实:我知道只有一个进程在运行,其RSS反映了(或多或少)该容器消耗的总物理RAM。 因此,我不是使用free_memory = value memory.limit_in_bytes - memory.usage_in_bytes而是使用free_memory = value memory.limit_in_bytes - /proc/<pid>/stats::VmRSS 是的,这并不准确,但这是我找到的获得真实价值的最接近的方法。