lkml.org 
[lkml]   [2008]   [Mar]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [13/14] vcompound: Use vcompound for swap_map
    From
    Date
    Christoph Lameter <clameter@sgi.com> writes:

    > Use virtual compound pages for the large swap maps. This only works for
    > swap maps that are smaller than a MAX_ORDER block though. If the swap map
    > is larger then there is no way around the use of vmalloc.

    Have you considered the potential memory wastage from rounding up
    to the next page order now? (similar in all the other patches
    to change vmalloc). e.g. if the old size was 64k + 1 byte it will
    suddenly get 128k now. That is actually not a uncommon situation
    in my experience; there are often power of two buffers with
    some small headers.

    A long time ago (in 2.4-aa) I did something similar for module loading
    as an experiment to avoid too many TLB misses. The module loader
    would first try to get a continuous range in the direct mapping and
    only then fall back to vmalloc.

    But I used a simple trick to avoid the waste problem: it allocated a
    continuous range rounded up to the next page-size order and then freed
    the excess pages back into the page allocator. That was called
    alloc_exact(). If you replace vmalloc with alloc_pages you should
    use something like that too I think.

    -Andi



    \
     
     \ /
      Last update: 2008-03-21 22:29    [W:0.024 / U:29.700 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site