Commit dfc05c25 authored by KAMEZAWA Hiroyuki's avatar KAMEZAWA Hiroyuki Committed by Linus Torvalds

update Documentation/controller/memory.txt

Documentation updates for memory controller.
Signed-off-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Reviewed-by: default avatarBalbir Singh <balbir@linux.vnet.ibm.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 3c541e14
......@@ -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
......@@ -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
......@@ -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].
......@@ -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)?
......@@ -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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment