• Mel Gorman's avatar
    mm: compaction: defer compaction using an exponential backoff when compaction fails · 4f92e258
    Mel Gorman authored
    The fragmentation index may indicate that a failure is due to external
    fragmentation but after a compaction run completes, it is still possible
    for an allocation to fail.  There are two obvious reasons as to why
    
      o Page migration cannot move all pages so fragmentation remains
      o A suitable page may exist but watermarks are not met
    
    In the event of compaction followed by an allocation failure, this patch
    defers further compaction in the zone (1 << compact_defer_shift) times.
    If the next compaction attempt also fails, compact_defer_shift is
    increased up to a maximum of 6.  If compaction succeeds, the defer
    counters are reset again.
    
    The zone that is deferred is the first zone in the zonelist - i.e.  the
    preferred zone.  To defer compaction in the other zones, the information
    would need to be stored in the zonelist or implemented similar to the
    zonelist_cache.  This would impact the fast-paths and is not justified at
    this ...
    4f92e258
page_alloc.c 148 KB