Re: [PATCH 06/11] mm, compaction: distinguish between full and partial COMPACT_COMPLETE

From: Vlastimil Babka
Date: Mon Apr 11 2016 - 09:42:34 EST


On 04/11/2016 03:27 PM, Michal Hocko wrote:
On Mon 11-04-16 14:53:36, Vlastimil Babka wrote:
On 04/11/2016 02:46 PM, Michal Hocko wrote:

The racy part is negligible but I didn't realize the sync/async migrate
scanner part until now. So yeah, free_pfn could have got to middle of zone
when it was in the async mode. But that also means that the async mode
recently used up all free pages in the second half of the zone. WRT free
pages isolation, async mode is not trying less than sync, so it shouldn't be
a considerable missed opportunity if we don't rescan the it, though.

I am not really sure I understand. The primary intention of this patch
is to distinguish where we have scanned basically whole zones from cases
where a new scan started off previous mark and so it was just unlucky to
see only tiny bit of the zone where we would clearly give up too early.
FWIU this shouldn't be the case if we start scanning from the beginning
of the zone even if we raced on the other end of the zone because the
missed part would be negligible. Is that understanding correct?

Yes, it should be less unlucky than seeing a tiny bit of the zone. Just wanted to point out that you might still not see the whole zone in one compaction attempt. E.g. async compaction is first, advances the free scanner and caches its position when it bails out due to being contended. Then direct reclaim frees some pages behind the cached position. Sync compaction attempts starts migration scanner from start_pfn, but picks up the cached free scanner pfn. The result is missing some free pages and the scanners meeting somewhat earlier than they otherwise would. Probably not critical even for OOM decisions, as that's also racy anyway.