On Thu, Mar 06, 2025 at 07:50:37AM +1100, Dave Chinner wrote: > The only thing extra that I would do here is take a leaf from the > kmalloc() call in xlog_kvmalloc() and turn off direct reclaim for > this allocation because >= 32kB allocations are considered "costly" > and so will enter the compaction code if direct reclaim is enabled. > > Given that we fall back to vmalloc, clearing __GFP_DIRECT_RECLAIM > and setting __GFP_NORETRY here means that we don't burn lots of CPU > on memory compaction if there is no high order folios available for > immediate allocation. And on a busy machine, compaction is likely to > fail frequently and so this is all wasted CPU time. > > This may be one of the reasons why you don't see any change in real > performance with 64kB directory blocks - we spend more time in > folio allocation because of compaction overhead than we gain back > from avoiding the use of vmapped buffers.... FYI, this did not make any difference in my testing.