我的应用程序想要在docker中读取免费的物理内存。
目前,这意味着我可以想到,它正在从' cgroup'中读取两个值memory.limit_in_bytes
和memory.usage_in_bytes
。文件在docker中,然后将它们计算为
free_memory = value memory.limit_in_bytes - memory.usage_in_bytes
但这会很慢。
有没有有效的方法来获得免费的物理内存?
我的应用程序非常注重性能。
答案 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
是的,这并不准确,但这是我找到的获得真实价值的最接近的方法。