lkml.org 
[lkml]   [2009]   [May]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 1/5] mm: Add __GFP_NO_OOM_KILL flag
    On Thu, 7 May 2009, Andrew Morton wrote:

    > > > All of your tasks are in D state other than kthreads, right? That means
    > > > they won't be in the oom killer (thus no zones are oom locked), so you can
    > > > easily do this
    > > >
    > > > struct zone *z;
    > > > for_each_populated_zone(z)
    > > > zone_set_flag(z, ZONE_OOM_LOCKED);
    > > >
    > > > and then
    > > >
    > > > for_each_populated_zone(z)
    > > > zone_clear_flag(z, ZONE_OOM_LOCKED);
    > > >
    > > > The serialization is done with trylocks so this will never invoke the oom
    > > > killer because all zones in the allocator's zonelist will be oom locked.
    > > >
    > > > Why does this not work for you?
    > >
    > > Well, it might work too, but why are you insisting? How's it better than
    > > __GFP_NO_OOM_KILL, actually?
    > >
    > > Andrew, what do you think about this?
    >
    > I don't think I understand the proposal. Is it to provide a means by
    > which PM can go in and set a state bit against each and every zone? If
    > so, that's still a global boolean, only messier.
    >

    Why can't it be global while preallocating memory for hibernation since
    nothing but kthreads could allocate at this point and if the system is oom
    then the oom killer wouldn't be able to do anything anyway since it can't
    kill them?

    The fact is that _all_ allocations here are implicitly __GFP_NO_OOM_KILL
    whether it specifies it or not since the oom killer would simply kill a
    task in D state which can't exit or free memory and subsequent allocations
    would make the oom killer a no-op because there's an eligible task with
    TIF_MEMDIE set. The only thing you're saving with __GFP_NO_OOM_KILL is
    calling the oom killer in a first place and killing an unresponsive task
    but that would have to happen anyway when thawed since the system is oom
    (or otherwise lockup for GFP_KERNEL with order < PAGE_ALLOC_COSTLY_ORDER).


    \
     
     \ /
      Last update: 2009-05-07 23:29    [W:0.024 / U:0.776 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site