>> > > --- a/mm/page_alloc.c Thu Feb 25 15:43:18 2016 > > +++ b/mm/page_alloc.c Fri Feb 26 15:18:55 2016 > > @@ -3113,6 +3113,8 @@ should_reclaim_retry(gfp_t gfp_mask, uns > > struct zone *zone; > > struct zoneref *z; > > > > + if (order <= PAGE_ALLOC_COSTLY_ORDER) > > + return true; > > This is defeating the whole purpose of the rework - to behave > deterministically. You have just disabled the oom killer completely. > This is not the way to go > Then in another direction, below is what I can do.
thanks Hillf --- a/mm/page_alloc.c Thu Feb 25 15:43:18 2016 +++ b/mm/page_alloc.c Fri Feb 26 18:14:59 2016 @@ -3366,8 +3366,11 @@ retry: no_progress_loops++; if (should_reclaim_retry(gfp_mask, order, ac, alloc_flags, - did_some_progress > 0, no_progress_loops)) + did_some_progress > 0, no_progress_loops)) { + /* Burn more cycles if any zone seems to satisfy our request */ + no_progress_loops /= 2; goto retry; + } /* Reclaim has failed us, start killing things */ page = __alloc_pages_may_oom(gfp_mask, order, ac, &did_some_progress); --