On Thu, 3 Jun 2010 17:23:53 +0900, KAMEZAWA Hiroyuki <kamezawa.hiroyu@xxxxxxxxxxxxxx> wrote: > Very sorry that my test wasn't enough and delayed. > > == > From: KAMEZAWA Hiroyuki <kamezawa.hiroyu@xxxxxxxxxxxxxx> > > OOM-waitqueue should be waken up when oom_disable is canceled. > This is a fix for > memcg-oom-kill-disable-and-oom-status.patch > > How to test: > Create a cgroup A... > 1. set memory.limit and memory.memsw.limit to be small value > 2. echo 1 > /cgroup/A/memory.oom_control, this disables oom-kill. > 3. run a program which must cause OOM. > > A program executed in 3 will sleep by oom_waiqueue in memcg. > Then, how to wake it up is problem. > > 1. echo 0 > /cgroup/A/memory.oom_control (enable OOM-killer) > 2. echo big mem > /cgroup/A/memory.memsw.limit_in_bytes(allow more swap) > etc.. > > Without the patch, a task in slept can not be waken up. > Acked-by: Daisuke Nishimura <nishimura@xxxxxxxxxxxxxxxxx> > Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@xxxxxxxxxxxxxx> > --- > mm/memcontrol.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > Index: mmotm-2.6.34-May21/mm/memcontrol.c > =================================================================== > --- mmotm-2.6.34-May21.orig/mm/memcontrol.c > +++ mmotm-2.6.34-May21/mm/memcontrol.c > @@ -1413,7 +1413,7 @@ static void memcg_wakeup_oom(struct mem_ > > static void memcg_oom_recover(struct mem_cgroup *mem) > { > - if (mem->oom_kill_disable && atomic_read(&mem->oom_lock)) > + if (atomic_read(&mem->oom_lock)) > memcg_wakeup_oom(mem); > } > > @@ -3830,6 +3830,8 @@ static int mem_cgroup_oom_control_write( > return -EINVAL; > } > mem->oom_kill_disable = val; > + if (!val) > + memcg_oom_recover(mem); > cgroup_unlock(); > return 0; > } > -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>