aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/controllers/memory.txt
diff options
context:
space:
mode:
authorKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>2009-01-07 21:07:55 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2009-01-08 11:31:04 -0500
commitc1e862c1f5ad34771b6d0a528cf681e0dcad7c86 (patch)
treee3ac7ca8cfe5ac02b0df83a4aef5f37e59d7d61f /Documentation/controllers/memory.txt
parentc8dad2bb6307f5b00f804a686917105206a4d5c9 (diff)
memcg: new force_empty to free pages under group
By memcg-move-all-accounts-to-parent-at-rmdir.patch, there is no leak of memory usage and force_empty is removed. This patch adds "force_empty" again, in reasonable manner. memory.force_empty file works when #echo 0 (or some) > memory.force_empty and have following function. 1. only works when there are no task in this cgroup. 2. free all page under this cgroup as much as possible. 3. page which cannot be freed will be moved up to parent. 4. Then, memcg will be empty after above echo returns. This is much better behavior than old "force_empty" which just forget all accounts. This patch also check signal_pending() and above "echo" can be stopped by "Ctrl-C". [akpm@linux-foundation.org: cleanup] Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Cc: Li Zefan <lizf@cn.fujitsu.com> Cc: Balbir Singh <balbir@in.ibm.com> Cc: Pavel Emelyanov <xemul@openvz.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'Documentation/controllers/memory.txt')
-rw-r--r--Documentation/controllers/memory.txt27
1 files changed, 23 insertions, 4 deletions
diff --git a/Documentation/controllers/memory.txt b/Documentation/controllers/memory.txt
index 58f32c166fac..54253b7a8db2 100644
--- a/Documentation/controllers/memory.txt
+++ b/Documentation/controllers/memory.txt
@@ -237,11 +237,30 @@ reclaimed.
237A cgroup can be removed by rmdir, but as discussed in sections 4.1 and 4.2, a 237A cgroup can be removed by rmdir, but as discussed in sections 4.1 and 4.2, a
238cgroup might have some charge associated with it, even though all 238cgroup might have some charge associated with it, even though all
239tasks have migrated away from it. 239tasks have migrated away from it.
240Such charges are moved to its parent as much as possible and freed if parent 240Such charges are freed(at default) or moved to its parent. When moved,
241is full. Both of RSS and CACHES are moved to parent. 241both of RSS and CACHES are moved to parent.
242If both of them are busy, rmdir() returns -EBUSY. 242If both of them are busy, rmdir() returns -EBUSY. See 5.1 Also.
243 243
2445. TODO 2445. Misc. interfaces.
245
2465.1 force_empty
247 memory.force_empty interface is provided to make cgroup's memory usage empty.
248 You can use this interface only when the cgroup has no tasks.
249 When writing anything to this
250
251 # echo 0 > memory.force_empty
252
253 Almost all pages tracked by this memcg will be unmapped and freed. Some of
254 pages cannot be freed because it's locked or in-use. Such pages are moved
255 to parent and this cgroup will be empty. But this may return -EBUSY in
256 some too busy case.
257
258 Typical use case of this interface is that calling this before rmdir().
259 Because rmdir() moves all pages to parent, some out-of-use page caches can be
260 moved to the parent. If you want to avoid that, force_empty will be useful.
261
262
2636. TODO
245 264
2461. Add support for accounting huge pages (as a separate controller) 2651. Add support for accounting huge pages (as a separate controller)
2472. Make per-cgroup scanner reclaim not-shared pages first 2662. Make per-cgroup scanner reclaim not-shared pages first