Messages in this thread | | | Date | Sat, 30 Jun 2012 12:51:00 +0900 | From | Kamezawa Hiroyuki <> | Subject | Re: [PATCH -mm v2] mm: have order > 0 compaction start off where it left |
| |
(2012/06/29 2:55), Rik van Riel wrote: > Order > 0 compaction stops when enough free pages of the correct > page order have been coalesced. When doing subsequent higher order > allocations, it is possible for compaction to be invoked many times. > > However, the compaction code always starts out looking for things to > compact at the start of the zone, and for free pages to compact things > to at the end of the zone. > > This can cause quadratic behaviour, with isolate_freepages starting > at the end of the zone each time, even though previous invocations > of the compaction code already filled up all free memory on that end > of the zone. > > This can cause isolate_freepages to take enormous amounts of CPU > with certain workloads on larger memory systems. > > The obvious solution is to have isolate_freepages remember where > it left off last time, and continue at that point the next time > it gets invoked for an order > 0 compaction. This could cause > compaction to fail if cc->free_pfn and cc->migrate_pfn are close > together initially, in that case we restart from the end of the > zone and try once more. > > Forced full (order == -1) compactions are left alone. > > Cc: Andrew Morton <akpm@linux-foundation.org> > Cc: Mel Gorman <mel@csn.ul.ie> > Reported-by: Jim Schutt <jaschut@sandia.gov> > Signed-off-by: Rik van Riel <riel@redhat.com>
Reviewed-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
| |