lkml.org 
[lkml]   [2010]   [Jun]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [BUGFIX][PATCH] memcg fix wake up in oom wait queue
    On Thu, 3 Jun 2010 17:23:53 +0900, KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> wrote:
    > Very sorry that my test wasn't enough and delayed.
    >
    > ==
    > From: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    >
    > 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@mxp.nes.nec.co.jp>

    > Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    > ---
    > 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;
    > }
    >


    \
     
     \ /
      Last update: 2010-06-04 03:27    [from the cache]
    ©2003-2014 Jasper Spaans. hosted at Digital Ocean