On Tue 06-09-16 15:52:57, Vlastimil Babka wrote: > The new ultimate compaction priority disables some heuristics, which may result > in excessive cost. This is fine for non-costly orders where we want to try hard > before resulting for OOM, but might be disruptive for costly orders which do > not trigger OOM and should generally have some fallback. Thus, we disable the > full priority for costly orders. > > Suggested-by: Michal Hocko <mhocko@xxxxxxxxxx> > Signed-off-by: Vlastimil Babka <vbabka@xxxxxxx> > Cc: Michal Hocko <mhocko@xxxxxxxxxx> > Cc: Mel Gorman <mgorman@xxxxxxxxxxxxxxxxxxx> > Cc: Joonsoo Kim <iamjoonsoo.kim@xxxxxxx> > Cc: David Rientjes <rientjes@xxxxxxxxxx> > Cc: Rik van Riel <riel@xxxxxxxxxx> Acked-by: Michal Hocko <mhocko@xxxxxxxx> > --- > include/linux/compaction.h | 1 + > mm/page_alloc.c | 5 ++++- > 2 files changed, 5 insertions(+), 1 deletion(-) > > diff --git a/include/linux/compaction.h b/include/linux/compaction.h > index 585d55cb0dc0..0d8415820fc3 100644 > --- a/include/linux/compaction.h > +++ b/include/linux/compaction.h > @@ -9,6 +9,7 @@ enum compact_priority { > COMPACT_PRIO_SYNC_FULL, > MIN_COMPACT_PRIORITY = COMPACT_PRIO_SYNC_FULL, > COMPACT_PRIO_SYNC_LIGHT, > + MIN_COMPACT_COSTLY_PRIORITY = COMPACT_PRIO_SYNC_LIGHT, > DEF_COMPACT_PRIORITY = COMPACT_PRIO_SYNC_LIGHT, > COMPACT_PRIO_ASYNC, > INIT_COMPACT_PRIORITY = COMPACT_PRIO_ASYNC > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index f8bed910e3cf..ff60a2837c58 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -3165,6 +3165,7 @@ should_compact_retry(struct alloc_context *ac, int order, int alloc_flags, > int compaction_retries) > { > int max_retries = MAX_COMPACT_RETRIES; > + int min_priority; > > if (!order) > return false; > @@ -3204,7 +3205,9 @@ should_compact_retry(struct alloc_context *ac, int order, int alloc_flags, > * if we exhausted all retries at the lower priorities > */ > check_priority: > - if (*compact_priority > MIN_COMPACT_PRIORITY) { > + min_priority = (order > PAGE_ALLOC_COSTLY_ORDER) ? > + MIN_COMPACT_COSTLY_PRIORITY : MIN_COMPACT_PRIORITY; > + if (*compact_priority > min_priority) { > (*compact_priority)--; > return true; > } > -- > 2.9.3 -- Michal Hocko SUSE Labs -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>