Skip to content

Commit

Permalink
update Documentation/controller/memory.txt
Browse files Browse the repository at this point in the history
Documentation updates for memory controller.

Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Reviewed-by: Balbir Singh <balbir@linux.vnet.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
KAMEZAWA Hiroyuki authored and Linus Torvalds committed Feb 7, 2008
1 parent 3c541e1 commit dfc05c2
Showing 1 changed file with 17 additions and 16 deletions.
33 changes: 17 additions & 16 deletions Documentation/controllers/memory.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,7 @@ d. Provides a double LRU: global memory pressure causes reclaim from the
global LRU; a cgroup on hitting a limit, reclaims from the per
cgroup LRU

NOTE: Page Cache (unmapped) also includes Swap Cache pages as a subset
and will not be referred to explicitly in the rest of the documentation.
NOTE: Swap Cache (unmapped) is not accounted now.

Benefits and Purpose of the memory controller

Expand Down Expand Up @@ -144,7 +143,7 @@ list.
The memory controller uses the following hierarchy

1. zone->lru_lock is used for selecting pages to be isolated
2. mem->lru_lock protects the per cgroup LRU
2. mem->per_zone->lru_lock protects the per cgroup LRU (per zone)
3. lock_page_cgroup() is used to protect page->page_cgroup

3. User Interface
Expand Down Expand Up @@ -193,6 +192,15 @@ this file after a write to guarantee the value committed by the kernel.
The memory.failcnt field gives the number of times that the cgroup limit was
exceeded.

The memory.stat file gives accounting information. Now, the number of
caches, RSS and Active pages/Inactive pages are shown.

The memory.force_empty gives an interface to drop *all* charges by force.

# echo -n 1 > memory.force_empty

will drop all charges in cgroup. Currently, this is maintained for test.

4. Testing

Balbir posted lmbench, AIM9, LTP and vmmstress results [10] and [11].
Expand Down Expand Up @@ -222,11 +230,8 @@ reclaimed.

A cgroup can be removed by rmdir, but as discussed in sections 4.1 and 4.2, a
cgroup might have some charge associated with it, even though all
tasks have migrated away from it. If some pages are still left, after following
the steps listed in sections 4.1 and 4.2, check the Swap Cache usage in
/proc/meminfo to see if the Swap Cache usage is showing up in the
cgroups memory.usage_in_bytes counter. A simple test of swapoff -a and
swapon -a should free any pending Swap Cache usage.
tasks have migrated away from it. Such charges are automatically dropped at
rmdir() if there are no tasks.

4.4 Choosing what to account -- Page Cache (unmapped) vs RSS (mapped)?

Expand All @@ -238,15 +243,11 @@ echo -n 1 > memory.control_type
5. TODO

1. Add support for accounting huge pages (as a separate controller)
2. Improve the user interface to accept/display memory limits in KB or MB
rather than pages (since page sizes can differ across platforms/machines).
3. Make cgroup lists per-zone
4. Make per-cgroup scanner reclaim not-shared pages first
5. Teach controller to account for shared-pages
6. Start reclamation when the limit is lowered
7. Start reclamation in the background when the limit is
2. Make per-cgroup scanner reclaim not-shared pages first
3. Teach controller to account for shared-pages
4. Start reclamation when the limit is lowered
5. Start reclamation in the background when the limit is
not yet hit but the usage is getting closer
8. Create per zone LRU lists per cgroup

Summary

Expand Down

0 comments on commit dfc05c2

Please sign in to comment.