Re: [RFC PATCH 25/26] mm: page_alloc: disallow fallbacks when 2M defrag is enabled

Johannes Weiner
2023-04-21T15:24:56Z

On Fri, Apr 21, 2023 at 03:56:57PM +0100, Mel Gorman wrote:
> On Tue, Apr 18, 2023 at 03:13:12PM -0400, Johannes Weiner wrote:
> > Fallbacks are already unlikely due to watermarks being enforced
> > against MIGRATE_FREE blocks. Eliminate them altogether. This allows
> > compaction to look exclusively at movable blocks, reducing the number
> > of pageblocks it needs to scan on an ongoing basis.
> >
> > Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
>
> Conceptually this could be fun if a GFP_NOFS allocation cannot migrate
> enough memory to free one pageblock and there are no pageblocks
> available of the correct migratetype. Fallbacks might be unlikely but
> never being able to fallback is a livelock risk, no?

The reserves below the watermarks are maintained in neutral
MIGRATE_FREE blocks. So just like today, critical/limited allocation
contexts are ensured forward progress as long as there are reserves.

An argument could be made that because smaller orders type-claim the
entire neutral block on allocation now, the reserves can deplete
faster than they do today given comparable watermarks. I haven't run
into this issue during testing that would have me raise the reserves
by a factor of NR_MIGRATETYPES. But something to keep an eye out for.