层次结构支持在cgroup中做了什么?

时间:2013-07-05 06:13:03

标签: linux kernel cgroups

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是什么意思?
  • 祖先怎样才能超越极限,因为它的子女能力被分配到祖先的能力?
  • 为什么祖先和孩子都要回收任务?我认为任务只分配给孩子,这些任务自动属于祖先。即“WWW Browsing”具有20%的容量;它的孩子分别是“教授”和“学生”,分别占15%和5%。最大值不能超过20%。为什么文件中有一个案例说明:
  

如果其中一个祖先超过其限制,则回收算法   从祖先的任务和孩子们的任务中恢复过来   的祖先。

1 个答案:

答案 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之下。