lkml.org 
[lkml]   [2006]   [May]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 13/33] readahead: min/max sizes
    - Enlarge VM_MAX_READAHEAD to 1024 if new read-ahead code is compiled in.
    This value is no longer tightly coupled with the thrashing problem,
    therefore constrained by it. The adaptive read-ahead logic merely takes
    it as an upper bound, and will not stick to it under memory pressure.

    - Slightly enlarge minimal/initial read-ahead size on big memory systems.
    Memory bounty systems are less likely to suffer from thrashing on small
    read-ahead sizes. A bigger initial value helps the ra_size scaling up
    progress.

    Signed-off-by: Wu Fengguang <wfg@mail.ustc.edu.cn>
    ---

    include/linux/mm.h | 4 ++++
    mm/readahead.c | 19 +++++++++++++++++++
    2 files changed, 23 insertions(+)

    --- linux-2.6.17-rc4-mm3.orig/include/linux/mm.h
    +++ linux-2.6.17-rc4-mm3/include/linux/mm.h
    @@ -1011,7 +1011,11 @@ extern int filemap_populate(struct vm_ar
    int write_one_page(struct page *page, int wait);

    /* readahead.c */
    +#ifdef CONFIG_ADAPTIVE_READAHEAD
    +#define VM_MAX_READAHEAD 1024 /* kbytes */
    +#else
    #define VM_MAX_READAHEAD 128 /* kbytes */
    +#endif
    #define VM_MIN_READAHEAD 16 /* kbytes (includes current page) */
    #define VM_MAX_CACHE_HIT 256 /* max pages in a row in cache before
    * turning readahead off */
    --- linux-2.6.17-rc4-mm3.orig/mm/readahead.c
    +++ linux-2.6.17-rc4-mm3/mm/readahead.c
    @@ -798,6 +798,25 @@ out:
    return nr_pages;
    }

    +/*
    + * ra_min is mainly determined by the size of cache memory. Reasonable?
    + *
    + * Table of concrete numbers for 4KB page size:
    + * inactive + free (MB): 4 8 16 32 64 128 256 512 1024
    + * ra_min (KB): 16 16 16 16 20 24 32 48 64
    + */
    +static inline void get_readahead_bounds(struct file_ra_state *ra,
    + unsigned long *ra_min,
    + unsigned long *ra_max)
    +{
    + unsigned long pages;
    +
    + pages = max_sane_readahead((1<<30) / PAGE_CACHE_SIZE);
    + *ra_max = min(min(pages, 0xFFFFUL), ra->ra_pages);
    + *ra_min = min(min(MIN_RA_PAGES + (pages >> 13),
    + (128*1024) / PAGE_CACHE_SIZE), *ra_max / 2);
    +}
    +
    #endif /* CONFIG_ADAPTIVE_READAHEAD */

    /*
    --
    -
    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: 2006-05-26 14:06    [W:0.024 / U:0.124 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site