• Vlastimil Babka's avatar
    mm, compaction: do not count compact_stall if all zones skipped compaction · 98dd3b48
    Vlastimil Babka authored
    The compact_stall vmstat counter counts the number of allocations stalled
    by direct compaction.  It does not count when all attempted zones had
    deferred compaction, but it does count when all zones skipped compaction.
    The skipping is decided based on very early check of
    compaction_suitable(), based on watermarks and memory fragmentation.
    Therefore it makes sense not to count skipped compactions as stalls.
    Moreover, compact_success or compact_fail is also already not being
    counted when compaction was skipped, so this patch changes the
    compact_stall counting to match the other two.
    
    Additionally, restructure __alloc_pages_direct_compact() code for better
    readability.
    Signed-off-by: default avatarVlastimil Babka <vbabka@suse.cz>
    Cc: Minchan Kim <minchan@kernel.org>
    Acked-by: default avatarMel 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>
    Acked-by: default avatarDavid Rientjes <rientjes@google.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    98dd3b48
page_alloc.c 185 KB