lkml.org 
[lkml]   [2009]   [Mar]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 16/27] Save text by reducing call sites of __rmqueue()
    Date
    __rmqueue is inlined in the fast path but it has two call sites, the low
    order and high order paths. However, a slight modification to the
    high-order path reduces the call sites of __rmqueue. This reduces text
    at the slight increase of complexity of the high-order allocation path.

    Signed-off-by: Mel Gorman <mel@csn.ul.ie>
    ---
    mm/page_alloc.c | 11 +++++++----
    1 files changed, 7 insertions(+), 4 deletions(-)

    diff --git a/mm/page_alloc.c b/mm/page_alloc.c
    index 0ba9e4f..795cfc5 100644
    --- a/mm/page_alloc.c
    +++ b/mm/page_alloc.c
    @@ -1123,11 +1123,14 @@ again:
    list_del(&page->lru);
    pcp->count--;
    } else {
    - spin_lock_irqsave(&zone->lock, flags);
    - page = __rmqueue(zone, order, migratetype);
    - spin_unlock(&zone->lock);
    - if (!page)
    + LIST_HEAD(list);
    + local_irq_save(flags);
    +
    + /* Calling __rmqueue would bloat text, hence this */
    + if (!rmqueue_bulk(zone, order, 1, &list, migratetype))
    goto failed;
    + page = list_entry(list.next, struct page, lru);
    + list_del(&page->lru);
    }

    __count_zone_vm_events(PGALLOC, zone, 1 << order);
    --
    1.5.6.5


    \
     
     \ /
      Last update: 2009-03-16 19:01    [W:0.023 / U:30.780 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site