On Mon 10-12-18 14:53:22, osalvador@xxxxxxx wrote: > On 2018-12-07 11:35, osalvador@xxxxxxx wrote: > > On 2018-12-07 11:32, Michal Hocko wrote: > > > On Fri 07-12-18 10:54:50, Vlastimil Babka wrote: > > > > Well, __pageblock_pfn_to_page() has to be called for each > > > > pageblock in > > > > compaction, when zone_contiguous is false. And that's unchanged since > > > > the introduction of zone_contiguous, so the numbers should still > > > > hold. > > > > > > OK, this means that we have to carefully re-evaluate zone_contiguous > > > for > > > each offline operation. > > I started to think about this but some questions arose. > > Actually, no matter what we do, if we re-evaluate zone_contiguous > in the offline operation, zone_contiguous will be left unset. > > set_zone_contiguous() calls __pageblock_pfn_to_page() in > pageblock_nr_pages chunks to determine if the zone is contiguous, > and checks the following: > > * first/end pfn of the pageblock are valid sections > * first pfn of the pageblock is online > * we do not intersect different zones > * first/end pfn belong to the same zone > > Now, when dropping the shrink code and re-evaluating zone_contiguous in > offline > operation, set_zone_contiguous() will return false, leaving us with > zone_contiguous > unset. Yeah. But does anything prevent us to alter the logic that the zone is not contiguous iff there are offline holes or zones intermixed. -- Michal Hocko SUSE Labs