[lkml]   [2005]   [Dec]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Patch in this message
    SubjectRe: [PATCH 02/12] mm: supporting variables and functions for balanced zone aging
    On Thu, Dec 01, 2005 at 08:45:49PM -0800, Andrew Morton wrote:
    > Andrea Arcangeli <> wrote:
    > >
    > > low_mem_reserve
    > I've a suspicion that the addition of the dma32 zone might have
    > broken this.

    And there is a danger of (the last zone != the largest zone). This breaks my
    assumption. Either we should remove the two lines in shrink_zone():

    > 865 if (sc->nr_to_reclaim <= 0)
    > 866 break;

    Or explicitly add more weight to the balancing efforts with
    mm-add-weight-to-reclaim-for-aging.patch below.


    Subject: mm: add more weight to reclaim for aging
    Cc: Marcelo Tosatti <>, Magnus Damm <>
    Cc: Nick Piggin <>, Andrea Arcangeli <>

    Let HighMem = the last zone, we get in normal cases:
    - HighMem zone is the largest zone
    - HighMem zone is mainly reclaimed for watermark, other zones is almost always
    reclaimed for aging
    - While HighMem is reclaimed N times for watermark, other zones has N+1 chances
    to reclaim for aging
    - shrink_zone() only scans one chunk of SWAP_CLUSTER_MAX pages to get
    SWAP_CLUSTER_MAX free pages

    In the above situation, the force of balancing will win out the force of
    unbalancing. But if HighMem(or the last zone) is not the largest zone, the
    other larger zones can no longer catch up.

    This patch multiplies the force of balancing by 8 times, which should be more
    than enough. It just prevents shrink_zone() to return prematurely, and will
    not cause DMA zone to be scanned more than SWAP_CLUSTER_MAX at one time in
    normal cases.

    Signed-off-by: Wu Fengguang <>
    --- linux.orig/mm/vmscan.c
    +++ linux/mm/vmscan.c
    @@ -1453,12 +1453,14 @@ loop_again:
    all_zones_ok = 0;
    + sc.nr_to_reclaim = SWAP_CLUSTER_MAX;
    } else if (zone == youngest_zone &&
    youngest_zone)) {
    + sc.nr_to_reclaim = SWAP_CLUSTER_MAX * 8;
    } else
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at
     \ /
      Last update: 2005-12-02 07:42    [W:0.029 / U:15.252 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site