cgroup 中的层次结构支持有什么作用?

Amu*_*umu 10 linux memory cgroups

cgroup 有 2 个内存控制选项:

  • memory.use_hierarchy = 1 : 使用层次结构
  • memory.use_hierarchy = 0:使用平面层次结构,根据这个答案

两者有什么区别?我认为,等级就是等级,这里的“扁平”是什么意思?

我在这里阅读了 cgroup 文档解释了分层支持:

在上图中,启用分层记帐后,e 的所有内存使用量都被记入其祖先,直到根(即 c 和根)启用了 memory.use_hierarchy。如果祖先之一超过其限制,则回收算法从祖先中的任务和祖先的孩子中回收。

  • 这是什么意思accounted to its ancestors up until the root
  • 祖先怎么能超过它的极限,因为它的孩子的容量被分配给祖先的容量?
  • 为什么在祖先和子代中都回收任务?我认为任务只分配给孩子,这些任务自动属于祖先。即“WWW Browsing”有20%的容量;它的孩子是“教授”和“学生”,分别有 15% 和 5%。最大值永远不能超过 20%。为什么文档中有一个case说:

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