lkml.org 
[lkml]   [2004]   [Oct]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: lowmem_reserve (replaces protection)
    this _incremental_ 2/? patch should fix the longtanding kswapd issue
    vs protection algorithm, now lowmem_reserve (partly hidden by the lack
    of lowmem_reserve/protection or equivalent band-aid enabled in 2.6.9).

    --- 2-kswapd-balance/include/linux/mmzone.h.~1~ 2004-10-27 03:17:07.207812600 +0200
    +++ 2-kswapd-balance/include/linux/mmzone.h 2004-10-27 03:26:22.673369000 +0200
    @@ -273,7 +273,7 @@ void __get_zone_counts(unsigned long *ac
    void get_zone_counts(unsigned long *active, unsigned long *inactive,
    unsigned long *free);
    void build_all_zonelists(void);
    -void wakeup_kswapd(struct zone *zone);
    +void wakeup_kswapd(struct zone *zone, int classzone_idx);

    /*
    * zone_idx() returns 0 for the ZONE_DMA zone, 1 for the ZONE_NORMAL zone, etc.
    --- 2-kswapd-balance/mm/page_alloc.c.~1~ 2004-10-27 03:17:07.215811384 +0200
    +++ 2-kswapd-balance/mm/page_alloc.c 2004-10-27 03:24:31.351292528 +0200
    @@ -641,7 +641,7 @@ __alloc_pages(unsigned int gfp_mask, uns
    }

    for (i = 0; (z = zones[i]) != NULL; i++)
    - wakeup_kswapd(z);
    + wakeup_kswapd(z, classzone_idx);

    /*
    * Go through the zonelist again. Let __GFP_HIGH and allocations
    --- 2-kswapd-balance/mm/vmscan.c.~1~ 2004-10-27 03:14:22.563842288 +0200
    +++ 2-kswapd-balance/mm/vmscan.c 2004-10-27 03:26:57.462080312 +0200
    @@ -1169,11 +1169,11 @@ static int kswapd(void *p)
    /*
    * A zone is low on free memory, so wake its kswapd task to service it.
    */
    -void wakeup_kswapd(struct zone *zone)
    +void wakeup_kswapd(struct zone *zone, int classzone_idx)
    {
    if (zone->present_pages == 0)
    return;
    - if (zone->free_pages > zone->pages_low)
    + if (zone->free_pages > zone->pages_low + zone->lowmem_reserve[classzone_idx])
    return;
    if (!waitqueue_active(&zone->zone_pgdat->kswapd_wait))
    return;
    -
    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 14:07    [W:4.719 / U:0.728 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site