From d1942f3fe2ad08225048a22da2029cc88941eab2 Mon Sep 17 00:00:00 2001 From: Balbir Singh Date: Wed, 7 Jan 2009 18:08:03 -0800 Subject: [PATCH] --- yaml --- r: 127568 b: refs/heads/master c: 52bc0d82100cd896213a9a25ec01c1ba87b939db h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/Documentation/controllers/memory.txt | 38 +++++++++++++++++++++- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 9f3268b3e304..24818294f1ad 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f8d665422603ee1b8ed04dcad4242f14d623c941 +refs/heads/master: 52bc0d82100cd896213a9a25ec01c1ba87b939db diff --git a/trunk/Documentation/controllers/memory.txt b/trunk/Documentation/controllers/memory.txt index 05fe29ab1e58..09e1c737d285 100644 --- a/trunk/Documentation/controllers/memory.txt +++ b/trunk/Documentation/controllers/memory.txt @@ -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 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) 2. Make per-cgroup scanner reclaim not-shared pages first