Re: [PATCH 1/1] iomap: avoid compaction for costly folio order allocation
From: IBM
Date: Fri Apr 03 2026 - 21:44:15 EST
Let's cc: linux-mm too.
Salvatore Dipietro <dipiets@xxxxxxxxx> writes:
> Commit 5d8edfb900d5 ("iomap: Copy larger chunks from userspace")
> introduced high-order folio allocations in the buffered write
> path. When memory is fragmented, each failed allocation triggers
Isn't it the right thing to do i.e. run compaction, when memory is
fragmented?
> compaction and drain_all_pages() via __alloc_pages_slowpath(),
> causing a 0.75x throughput drop on pgbench (simple-update) with
> 1024 clients on a 96-vCPU arm64 system.
>
I think removing the __GFP_DIRECT_RECLAIM flag unconditionally at the
caller may cause -ENOMEM. Note that it is the __filemap_get_folio()
which retries with smaller order allocations, so instead of changing the
callers, shouldn't this be fixed in __filemap_get_folio() instead?
Maybe in there too, we should keep the reclaim flag (if passed by
caller) at least for <= PAGE_ALLOC_COSTLY_ORDER + 1
Thoughts?
-ritesh