memcg: oom kill disable and oom status
This adds a feature to disable oom-killer for memcg, if disabled, of course, tasks under memcg will stop. But now, we have oom-notifier for memcg. And the world around memcg is not under out-of-memory. memcg's out-of-memory just shows memcg hits limit. Then, administrator or management daemon can recover the situation by - kill some process - enlarge limit, add more swap. - migrate some tasks - remove file cache on tmps (difficult ?) Unlike oom-killer, you can take enough information before killing tasks. (by gcore, or, ps etc.) [akpm@linux-foundation.org: coding-style fixes] Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Cc: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp> Cc: Balbir Singh <balbir@in.ibm.com> Cc: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp> Cc: David Rientjes <rientjes@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
committed by
Linus Torvalds
parent
9490ff2756
commit
3c11ecf448
@ -493,6 +493,8 @@ It's applicable for root and non-root cgroup.
|
||||
|
||||
10. OOM Control
|
||||
|
||||
memory.oom_control file is for OOM notification and other controls.
|
||||
|
||||
Memory controler implements oom notifier using cgroup notification
|
||||
API (See cgroups.txt). It allows to register multiple oom notification
|
||||
delivery and gets notification when oom happens.
|
||||
@ -505,6 +507,27 @@ To register a notifier, application need:
|
||||
Application will be notifier through eventfd when oom happens.
|
||||
OOM notification doesn't work for root cgroup.
|
||||
|
||||
You can disable oom-killer by writing "1" to memory.oom_control file.
|
||||
As.
|
||||
#echo 1 > memory.oom_control
|
||||
|
||||
This operation is only allowed to the top cgroup of subhierarchy.
|
||||
If oom-killer is disabled, tasks under cgroup will hang/sleep
|
||||
in memcg's oom-waitq when they request accountable memory.
|
||||
|
||||
For running them, you have to relax the memcg's oom sitaution by
|
||||
* enlarge limit or reduce usage.
|
||||
To reduce usage,
|
||||
* kill some tasks.
|
||||
* move some tasks to other group with account migration.
|
||||
* remove some files (on tmpfs?)
|
||||
|
||||
Then, stopped tasks will work again.
|
||||
|
||||
At reading, current status of OOM is shown.
|
||||
oom_kill_disable 0 or 1 (if 1, oom-killer is disabled)
|
||||
under_oom 0 or 1 (if 1, the memcg is under OOM,tasks may
|
||||
be stopped.)
|
||||
|
||||
11. TODO
|
||||
|
||||
|
Reference in New Issue
Block a user