cgroup
有 2 个内存控制选项:
memory.use_hierarchy = 1
: 使用层次结构memory.use_hierarchy = 0
:使用平面层次结构,根据这个答案
两者有什么区别?我想,层次就是层次,这里的“扁平”是什么意思?
编辑:我在这里阅读了 cgroup 文档,解释了分层支持:
在上图中,启用分层记帐后,e 的所有内存使用量都计入其祖先,直到启用了 memory.use_hierarchy 的根(即 c 和根)。如果祖先之一超过其限制,则回收算法从祖先中的任务和祖先的子代中回收。
- 这是什么意思
accounted to its ancestors up until the root
? - 祖先怎么能超过它的极限,因为它的孩子的能力被分配给祖先的能力?
- 为什么任务在祖先和孩子中都被回收?我认为任务只分配给孩子,这些任务自动属于祖先。即“WWW 浏览”有 20% 的容量;它的孩子是分别有15%和5%的“教授”和“学生”。最大值永远不能超过 20%。为什么文件中有一个案例说:
如果祖先之一超过其限制,则回收算法从祖先中的任务和祖先的子代中回收。