• Hugh Dickins's avatar
    mm: fix migratetype bug which slowed swapping · a7016235
    Hugh Dickins authored
    After memory pressure has forced it to dip into the reserves, 2.6.32's
    5f8dcc21 "page-allocator: split per-cpu
    list into one-list-per-migrate-type" has been returning MIGRATE_RESERVE
    pages to the MIGRATE_MOVABLE free_list: in some sense depleting reserves.
    
    Fix that in the most straightforward way (which, considering the overheads
    of alternative approaches, is Mel's preference): the right migratetype is
    already in page_private(page), but free_pcppages_bulk() wasn't using it.
    
    How did this bug show up?  As a 20% slowdown in my tmpfs loop kbuild
    swapping tests, on PowerMac G5 with SLUB allocator.  Bisecting to that
    commit was easy, but explaining the magnitude of the slowdown not easy.
    
    The same effect appears, but much less markedly, with SLAB, and even
    less markedly on other machines (the PowerMac divides into fewer zones
    than x86, I think that may be a factor).  We guess that lumpy reclaim
    of short-lived high-order pages is imp...
    a7016235
page_alloc.c 141 KB