|
@@ -289,8 +289,44 @@ will be charged as a new owner of it.
|
|
Because rmdir() moves all pages to parent, some out-of-use page caches can be
|
|
Because rmdir() moves all pages to parent, some out-of-use page caches can be
|
|
moved to the parent. If you want to avoid that, force_empty will be useful.
|
|
moved to the parent. If you want to avoid that, force_empty will be useful.
|
|
|
|
|
|
|
|
+6. Hierarchy support
|
|
|
|
|
|
-6. TODO
|
|
|
|
|
|
+The memory controller supports a deep hierarchy and hierarchical accounting.
|
|
|
|
+The hierarchy is created by creating the appropriate cgroups in the
|
|
|
|
+cgroup filesystem. Consider for example, the following cgroup filesystem
|
|
|
|
+hierarchy
|
|
|
|
+
|
|
|
|
+ root
|
|
|
|
+ / | \
|
|
|
|
+ / | \
|
|
|
|
+ a b c
|
|
|
|
+ | \
|
|
|
|
+ | \
|
|
|
|
+ d e
|
|
|
|
+
|
|
|
|
+In the diagram above, with hierarchical accounting enabled, all memory
|
|
|
|
+usage of e, is accounted to its ancestors up until the root (i.e, c and root),
|
|
|
|
+that has memory.use_hierarchy enabled. If one of the ancestors goes over its
|
|
|
|
+limit, the reclaim algorithm reclaims from the tasks in the ancestor and the
|
|
|
|
+children of the ancestor.
|
|
|
|
+
|
|
|
|
+6.1 Enabling hierarchical accounting and reclaim
|
|
|
|
+
|
|
|
|
+The memory controller by default disables the hierarchy feature. Support
|
|
|
|
+can be enabled by writing 1 to memory.use_hierarchy file of the root cgroup
|
|
|
|
+
|
|
|
|
+# echo 1 > memory.use_hierarchy
|
|
|
|
+
|
|
|
|
+The feature can be disabled by
|
|
|
|
+
|
|
|
|
+# echo 0 > memory.use_hierarchy
|
|
|
|
+
|
|
|
|
+NOTE1: Enabling/disabling will fail if the cgroup already has other
|
|
|
|
+cgroups created below it.
|
|
|
|
+
|
|
|
|
+NOTE2: This feature can be enabled/disabled per subtree.
|
|
|
|
+
|
|
|
|
+7. TODO
|
|
|
|
|
|
1. Add support for accounting huge pages (as a separate controller)
|
|
1. Add support for accounting huge pages (as a separate controller)
|
|
2. Make per-cgroup scanner reclaim not-shared pages first
|
|
2. Make per-cgroup scanner reclaim not-shared pages first
|