cgroup
有两个内存控制选项:
memory.use_hierarchy = 1
:使用层次结构memory.use_hierarchy = 0
:根据this answer 两者有什么区别?我认为,层次结构是层次结构,“平面”在这里意味着什么?
编辑:我读过cgroup文档here解释了分层支持:
在上图中,启用了分层会计,所有内存 e的使用,直到根源(即, c和root),启用了memory.use_hierarchy。如果其中之一 祖先超越了极限,回收算法从中回收 祖先的任务和祖先的孩子们。
accounted to its ancestors up until the root
是什么意思? 如果其中一个祖先超过其限制,则回收算法 从祖先的任务和孩子们的任务中恢复过来 的祖先。
答案 0 :(得分:2)
这里的分层意味着嵌套在cgroup中的内存cgroup。例如。你可以创建一个父cgroup P,它可以有一个子cgroup C.在P(比如p1和p2)和C(c1,c2)中可以有进程。使用use_hierarchy = 1时,P处的内存统计信息将显示C中所有进程的C使用和使用总量。它还将占P中的任何tmpfs。
如果cgroup P超过限制,它可以从p1,p2和子cgroup C回收内存。如果C超过限制,它将从c1和c2回收。
我认为文档中不清楚的一点是,可以存在直接在P下的任务,而不是在其子cgroup之下。