lkml.org 
[lkml]   [2010]   [Feb]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [RFC][PATCH] memcg: page fault oom improvement v2
On Wed, 24 Feb 2010, KAMEZAWA Hiroyuki wrote:

> > > > This allows us to hijack the TIF_MEMDIE bit to detect when there is a
> > > > parallel pagefault oom killing when the oom killer hasn't necessarily been
> > > > invoked to kill a system-wide task (it's simply killing current, by
> > > > default, and giving it access to memory reserves). Then, we can change
> > > > out_of_memory(), which also now handles memcg oom conditions, to always
> > > > scan the tasklist first (including for mempolicy and cpuset constrained
> > > > ooms), check for any candidates that have TIF_MEMDIE, and return
> > > > ERR_PTR(-1UL) if so. That catches the parallel pagefault oom conditions
> > > > from needlessly killing memcg tasks. panic_on_oom would only panic after
> > > > the tasklist scan has completed and returned != ERR_PTR(-1UL), meaning
> > > > pagefault ooms are exempt from that sysctl.
> > > >
> > > Sorry, I see your concern but I'd like not to do clean-up and bug-fix at
> > > the same time.
> > >
> > > I think clean up after fix is easy in this case.
> > >
> >
> > If you develop on top of my oom killer rewrite, pagefault ooms already
> > attempt to kill current first and then defer back to killing another task
> > if current is unkillable.
>
> After my fix, page_fault_out_of_memory is never called. (because memcg doesn't
> return needless failure.)
>

Of course it's called, it's called from the pagefault handler whenever we
return VM_FAULT_OOM. Whenever that happens, we'd needlessly panic the
machine for panic_on_oom if we didn't do the tasklist scan and check for
eligible tasks with TIF_MEMDIE set because it prefers to kill current
first in pagefault conditions without consideration given to the sysctl.
pagefault_out_of_memory() has changed radically with my rewrite, so I'd
encourage you to develop on top of that where I've completely removed
mem_cgroup_oom_called() and memcg->last_oom_jiffies already because
they're nonsense.

My patches are available from
http://www.kernel.org/pub/linux/kernel/people/rientjes/oom-killer-rewrite

Thanks.


\
 
 \ /
  Last update: 2010-02-24 03:29    [W:0.041 / U:0.408 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site