Messages in this thread | | | Date | Fri, 29 Jun 2012 11:58:29 +0900 | From | Kamezawa Hiroyuki <> | Subject | Re: [PATCH -mm] mm: have order>0 compaction start off where it left |
| |
(2012/06/29 1:30), Rik van Riel wrote: > On 06/28/2012 06:29 AM, Mel Gorman wrote: > >> Lets say there are two parallel compactions running. Process A meets >> the migration PFN and moves to the end of the zone to restart. Process B >> finishes scanning mid-way through the zone and updates last_free_pfn. This >> will cause Process A to "jump" to where Process B left off which is not >> necessarily desirable. >> >> Another side effect is that a workload that allocations/frees >> aggressively will not compact as well as the "free" scanner is not >> scanning the end of the zone each time. It would be better if >> last_free_pfn was updated when a full pageblock was encountered >> >> So; >> >> 1. Initialise last_free_pfn to the end of the zone >> 2. On compaction, scan from last_free_pfn and record where it started >> 3. If a pageblock is full, update last_free_pfn >> 4. If the migration and free scanner meet, reset last_free_pfn and >> the free scanner. Abort if the free scanner wraps to where it started >> >> Does that make sense? > > Yes, that makes sense. We still have to keep track > of whether we have wrapped around, but I guess that > allows for a better name for the bool :) > > Maybe cc->wrapped? > > Does anyone have a better name? >
cc->second_scan ? (I have no sense of naming ;)
> As for point (4), should we abort when we wrap > around to where we started, or should we abort > when free_pfn and migrate_pfn meet after we > wrapped around? >
I'd like to vote for aborting earlier.
Regards, -Kame
| |