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 ...@@ -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 global LRU; a cgroup on hitting a limit, reclaims from the per
cgroup LRU cgroup LRU
NOTE: Page Cache (unmapped) also includes Swap Cache pages as a subset NOTE: Swap Cache (unmapped) is not accounted now.
and will not be referred to explicitly in the rest of the documentation.
Benefits and Purpose of the memory controller Benefits and Purpose of the memory controller
...@@ -144,7 +143,7 @@ list. ...@@ -144,7 +143,7 @@ list.
The memory controller uses the following hierarchy The memory controller uses the following hierarchy
1. zone->lru_lock is used for selecting pages to be isolated 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. lock_page_cgroup() is used to protect page->page_cgroup
3. User Interface 3. User Interface
...@@ -193,6 +192,15 @@ this file after a write to guarantee the value committed by the kernel. ...@@ -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 The memory.failcnt field gives the number of times that the cgroup limit was
exceeded. 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 4. Testing
Balbir posted lmbench, AIM9, LTP and vmmstress results [10] and [11]. Balbir posted lmbench, AIM9, LTP and vmmstress results [10] and [11].
...@@ -222,11 +230,8 @@ reclaimed. ...@@ -222,11 +230,8 @@ reclaimed.
A cgroup can be removed by rmdir, but as discussed in sections 4.1 and 4.2, a 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 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 tasks have migrated away from it. Such charges are automatically dropped at
the steps listed in sections 4.1 and 4.2, check the Swap Cache usage in rmdir() if there are no tasks.
/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.
4.4 Choosing what to account -- Page Cache (unmapped) vs RSS (mapped)? 4.4 Choosing what to account -- Page Cache (unmapped) vs RSS (mapped)?
...@@ -238,15 +243,11 @@ echo -n 1 > memory.control_type ...@@ -238,15 +243,11 @@ echo -n 1 > memory.control_type
5. TODO 5. TODO
1. Add support for accounting huge pages (as a separate controller) 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 2. Make per-cgroup scanner reclaim not-shared pages first
rather than pages (since page sizes can differ across platforms/machines). 3. Teach controller to account for shared-pages
3. Make cgroup lists per-zone 4. Start reclamation when the limit is lowered
4. Make per-cgroup scanner reclaim not-shared pages first 5. Start reclamation in the background when the limit is
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
not yet hit but the usage is getting closer not yet hit but the usage is getting closer
8. Create per zone LRU lists per cgroup
Summary 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