On Mon, Jul 18, 2016 at 11:12:51AM +0200, Vlastimil Babka wrote:
On 07/06/2016 07:09 AM, Joonsoo Kim wrote:
On Fri, Jun 24, 2016 at 11:54:29AM +0200, Vlastimil Babka wrote:
A recent patch has added whole_zone flag that compaction sets when scanning
starts from the zone boundary, in order to report that zone has been fully
scanned in one attempt. For allocations that want to try really hard or cannot
fail, we will want to introduce a mode where scanning whole zone is guaranteed
regardless of the cached positions.
This patch reuses the whole_zone flag in a way that if it's already passed true
to compaction, the cached scanner positions are ignored. Employing this flag
Okay. But, please don't reset cached scanner position even if whole_zone
flag is set. Just set cc->migrate_pfn and free_pfn, appropriately. With
Won't that result in confusion on cached position updates during
compaction where it checks the previous cached position? I wonder
what kinds of corner cases it can bring...
whole_zone would come along with ignore_skip_hint so I think that
there is no problem on cached position updating.
your following patches, whole_zone could be set without any compaction
I don't understand what you mean here? Even after whole series,
whole_zone is only checked, and positions thus reset, after passing
the compaction_suitable() call from compact_zone(). So at that point
we can say that compaction is being actually tried and it's not a
My point is that we should not initialize zone's cached pfn in case of
the whole_zone because what compaction with COMPACT_PRIO_SYNC_FULL
want is just to scan whole range. zone's cached pfn exists for
efficiency and there is no reason to initialize it by compaction with
COMPACT_PRIO_SYNC_FULL. If there are some parallel compaction users,
they could be benefit from un-initialized zone's cached pfn so I'd
like to leave them.