lkml.org 
[lkml]   [2008]   [Jan]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 07/19] (NEW) add some sanity checks to get_scan_ratio
    The access ratio based scan rate determination in get_scan_ratio
    works ok in most situations, but needs to be corrected in some
    corner cases:
    - if we run out of swap space, do not bother scanning the anon LRUs
    - if we have already freed all of the page cache, we need to scan
    the anon LRUs

    Signed-off-by: Rik van Riel <riel@redhat.com>

    Index: linux-2.6.24-rc6-mm1/mm/vmscan.c
    ===================================================================
    --- linux-2.6.24-rc6-mm1.orig/mm/vmscan.c 2008-01-07 17:33:50.000000000 -0500
    +++ linux-2.6.24-rc6-mm1/mm/vmscan.c 2008-01-07 17:57:49.000000000 -0500
    @@ -1182,7 +1182,7 @@ static unsigned long shrink_list(enum lr
    static void get_scan_ratio(struct zone *zone, struct scan_control * sc,
    unsigned long *percent)
    {
    - unsigned long anon, file;
    + unsigned long anon, file, free;
    unsigned long anon_prio, file_prio;
    unsigned long rotate_sum;
    unsigned long ap, fp;
    @@ -1230,6 +1230,20 @@ static void get_scan_ratio(struct zone *
    else if (fp > 100)
    fp = 100;
    percent[1] = fp;
    +
    + free = zone_page_state(zone, NR_FREE_PAGES);
    +
    + /*
    + * If we have no swap space, do not bother scanning anon pages
    + */
    + if (nr_swap_pages <= 0)
    + percent[0] = 0;
    + /*
    + * If we already freed most file pages, scan the anon pages
    + * regardless of the page access ratios or swappiness setting.
    + */
    + else if (file + free <= zone->pages_high)
    + percent[0] = 100;
    }


    --
    All Rights Reversed



    \
     
     \ /
      Last update: 2008-01-08 22:19    [W:0.021 / U:3.440 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site