Re: [RFC 4/4] mm, page_alloc: disallow migratetype fallback in fastpath

From: Vlastimil Babka
Date: Thu Oct 13 2016 - 07:47:52 EST

On 10/13/2016 09:58 AM, Joonsoo Kim wrote:
On Thu, Sep 29, 2016 at 11:05:48PM +0200, Vlastimil Babka wrote:
The previous patch has adjusted async compaction so that it helps against
longterm fragmentation when compacting for a non-MOVABLE high-order allocation.
The goal of this patch is to force such allocations go through compaction
once before being allowed to fallback to a pageblock of different migratetype
(e.g. MOVABLE). In contexts where compaction is not allowed (and for order-0
allocations), this delayed fallback possibility can still help by trying a
different zone where fallback might not be needed and potentially waking up
kswapd earlier.

Hmm... can we justify this compaction overhead in case of that there is
high order freepages in other migratetype pageblock? There is no guarantee
that longterm fragmentation happens and it affects the system

Yeah, I hoped testing would show whether this makes any difference, and what the overhead is, and then we can decide whether it's worth.

And, it would easilly fail to compact in unmovable pageblock since
there would not be migratable pages if everything works as our
intended. So, I guess that checking it over and over doesn't help to
reduce fragmentation and just increase latency of allocation.

The pageblock isolation_suitable heuristics of compaction should mitigate rescanning blocks without success. We could also add a per-zone flag that gets set during a fallback allocation event and cleared by finished compaction, or something.