• V
    mm, compaction: remember position within pageblock in free pages scanner · e14c720e
    Vlastimil Babka 提交于
    Unlike the migration scanner, the free scanner remembers the beginning of
    the last scanned pageblock in cc->free_pfn.  It might be therefore
    rescanning pages uselessly when called several times during single
    compaction.  This might have been useful when pages were returned to the
    buddy allocator after a failed migration, but this is no longer the case.
    
    This patch changes the meaning of cc->free_pfn so that if it points to a
    middle of a pageblock, that pageblock is scanned only from cc->free_pfn to
    the end.  isolate_freepages_block() will record the pfn of the last page
    it looked at, which is then used to update cc->free_pfn.
    
    In the mmtests stress-highalloc benchmark, this has resulted in lowering
    the ratio between pages scanned by both scanners, from 2.5 free pages per
    migrate page, to 2.25 free pages per migrate page, without affecting
    success rates.
    
    With __GFP_NO_KSWAPD allocations, this appears to result in a worse ratio
    (2.1 instead of 1.8), but page migration successes increased by 10%, so
    this could mean that more useful work can be done until need_resched()
    aborts this kind of compaction.
    Signed-off-by: NVlastimil Babka <vbabka@suse.cz>
    Reviewed-by: NZhang Yanfei <zhangyanfei@cn.fujitsu.com>
    Reviewed-by: NNaoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Acked-by: NDavid Rientjes <rientjes@google.com>
    Acked-by: NMinchan Kim <minchan@kernel.org>
    Acked-by: NMel Gorman <mgorman@suse.de>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Michal Nazarewicz <mina86@mina86.com>
    Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Zhang Yanfei <zhangyanfei@cn.fujitsu.com>
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    e14c720e
compaction.c 40.6 KB