lkml.org 
[lkml]   [2001]   [May]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: Linux-2.4.5

    On Sat, 26 May 2001, Andrea Arcangeli wrote:
    >
    > On Fri, May 25, 2001 at 10:49:38PM -0400, Ben LaHaise wrote:
    > > Highmem. 0 free pages in ZONE_NORMAL. Now try to allocate a buffer_head.
    >
    > That's a longstanding deadlock, it was there the first time I read
    > fs/buffer.c, nothing related to highmem, we have it in 2.2 too. Also
    > getblk is deadlock prone in a smiliar manner.

    Indeed.

    This is why we always leave a few pages free, exactly to allow nested page
    allocators to steal the reserved pages that we keep around. If that
    deadlocks, then that's a separate issue altogether.

    If people are able to trigger the "we run out of reserved pages" behaviour
    under any load, that indicates that we either have too few reserved pages
    per zone, or that we have a real thinko somewhere that allows eating up
    the reserves we're supposed to have.

    And yes, things like spraying the box really hard with network packets can
    temporarily eat up the reserves, but that's why kswapd and friends exist,
    to get them back. But I could easily imagine that there are more schedule
    points missing that could cause user mode to not get to run much. Andrea
    fixed one, I think.

    If there are more situations like this, please get a stack trace on the
    deadlock (fairly easy these days with ctrl-scrolllock), and let's think
    about what make for the nasty pattern in the first place instead of trying
    to add more "reserved" pages.

    For example, maybe we can use HIGHMEM pages more aggressively in some
    places, to avoid the case where we're only freeing HIGHMEM pages and
    making the non-HIGHMEM case just worse.

    For example, we used to have logic in swapout_process to _not_ swap out
    zones that don't need it. We changed swapout to happen in
    "page_launder()", but that logic got lost. It's entirely possible that we
    should just say "don't bother writing out dirty pages that are in zones
    that have no memory pressure", so that we don't use up pages from the
    _precious_ zones to free pages in zones that don't need freeing.

    So don't try to paper over this by making up new rules. We should think
    about WHY the problem happens in the first place, not about trying to fix
    it once it has happened (and see the above as an example of why it might
    be happening).

    But sometimes the right solution is just to have more reserves.

    Linus

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 12:54    [W:0.024 / U:153.564 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site