首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >`container_memory_working_set_bytes`度量和容器上的OOM杀手之间有什么关系?

`container_memory_working_set_bytes`度量和容器上的OOM杀手之间有什么关系?
EN

Stack Overflow用户
提问于 2021-03-27 14:17:45
回答 1查看 2K关注 0票数 7

我想找出并了解OOM杀手是如何在容器上工作的。

为了解决这个问题,我读了很多文章,发现OOM杀手杀死了基于oom_score的容器。oom_score是由oom_score_adj和该进程的内存使用情况决定的。

还有两个度量标准container_memory_working_set_bytescontainer_memory_rss来自cAdvisor,用于监视容器的内存使用情况。

RSS (container_memory_rss)似乎对oom_score有影响,因此我可以理解,使用container_memory_rss度量,如果该度量达到内存限制,OOM杀手将杀死进程。

但从下面的文章中可以看出:

更好的衡量标准是container_memory_working_set_bytes,因为这正是OOM杀手所关注的。

我无法理解OOM杀手正在监视容器的工作集内存,,我想我不理解容器上工作集内存的含义,它是“总使用-非活动文件”。

我在哪里能找到推荐信?或者你能解释一下工作集内存和容器上的OOM-杀手之间的关系吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-29 09:10:47

您已经知道,container_memory_working_set_bytes是:

工作集内存量,包括最近访问的内存、脏内存和内核内存。因此,工作集是

container_memory_working_set_bytes被用于OoM决策,因为排除了缓存的数据 (Linux页面缓存),这些数据在内存压力情况下可以被逐出。

因此,如果container_memory_working_set_bytes增加到极限,就会导致oomkill。

您可以发现,当Linux内核检查可用内存时,它会调用vm_enough_memory()来查找可能可用的页面数。

然后,当机器内存不足时,旧的页面帧(包括缓存)将被回收,但是内核仍然会发现它无法释放足够多的页面来满足请求。现在是时候调用out_of_memory()来终止这个进程了。为了确定要终止的候选进程,它使用oom_score

因此,当工作集字节达到极限时,这意味着即使在回收旧页(包括缓存)之后,内核也找不到可用的页面,因此内核将触发OOM杀手来杀死进程。

您可以找到关于Linux内核文档的更多细节:

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66832316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档