Thread (12 messages) 12 messages, 5 authors, 2025-05-05

Re: [PATCH] mm: Add ARCH_FORCE_PAGE_BLOCK_ORDER to select page block order

From: Juan Yescas <hidden>
Date: 2025-05-01 21:07:27
Also in: linux-mm, lkml

On Thu, May 1, 2025 at 11:38 AM Matthew Wilcox [off-list ref] wrote:
On Wed, Apr 30, 2025 at 10:25:11PM -0700, Juan Yescas wrote:
quoted
Problem: On large page size configurations (16KiB, 64KiB), the CMA
alignment requirement (CMA_MIN_ALIGNMENT_BYTES) increases considerably,
and this causes the CMA reservations to be larger than necessary.
This means that system will have less available MIGRATE_UNMOVABLE and
MIGRATE_RECLAIMABLE page blocks since MIGRATE_CMA can't fallback to them.

The CMA_MIN_ALIGNMENT_BYTES increases because it depends on
MAX_PAGE_ORDER which depends on ARCH_FORCE_MAX_ORDER. The value of
ARCH_FORCE_MAX_ORDER increases on 16k and 64k kernels.
Sure, but why would any architecture *NOT* want to set this?
This seems like you're making each architecture bump into the problem
by itself, when the real problem is that the CMA people never thought
about this and should have come up with better defaults.
Sorry Matthew about my previous reply. I think I misunderstood you.

You mean that we should move the configuration to mm/Kconfig as per Zi
suggestion so that other architectures can utilize if need? and have
something like this in mm/Kconfig

config ARCH_FORCE_PAGE_BLOCK_ORDER
       int "Page Block Order"
       range 1 ARCH_FORCE_MAX_ORDER
       default ARCH_FORCE_MAX_ORDER if ARCH_FORCE_MAX_ORDER
       default 10 if !ARCH_FORCE_MAX_ORDER

Or should we include ARCH_FORCE_PAGE_BLOCK_ORDER only on the
architectures that configure ARCH_FORCE_MAX_ORDER? In this case

arch/arc/Kconfig
arch/arm/Kconfig
arch/arm64/Kconfig
arch/loongarch/Kconfig
arch/m68k/Kconfig.cpu
arch/mips/Kconfig
arch/nios2/Kconfig
arch/powerpc/Kconfig
arch/sh/mm/Kconfig
arch/sparc/Kconfig
arch/xtensa/Kconfig
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help