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