freenode
Kernel & Low-Level

Linux mm series proposes private NUMA nodes, isolated by default

Gregory Price's v5 patchset flips device-backed memory from fully fungible to opt-in kernel services.

A 36-patch series from Gregory Price proposes Private Memory NUMA nodes for the Linux kernel: device-hosted memory that is isolated from ordinary allocation and most mm services by default, then opted back into specific features the owner declares safe.

Today, NUMA memory is treated as fully fungible unless something (cpusets, mempolicy, zone type, page flags) restricts it. Private nodes reverse that model. They participate in page allocation and OOM killing, but are omitted from normal fallback zonelists so ordinary allocators never land on them by accident. Owners enable capabilities one by one: reclaim and compaction, demotion, NUMA balancing, long-term pinning, userland NUMA controls, and hot-unplug migrations.

The design targets accelerators that want demotion and reclaim without becoming general-purpose RAM, compressed-memory devices that should only be demotion targets, network adapters with large ring-buffer regions, slow disaggregated pools, and per-workload dedicated nodes for things like KVM guest_memfd. Isolation at the zonelist layer is meant to let those devices reuse core mm code instead of reinventing allocators in drivers or userspace.

Version 5 drops earlier complexity (ops structs, GFP flags, task flags) in favor of dedicated private zonelists and an alloc flag. Reviewers including Balbir Singh pressed on why user NUMA and hot-unplug are opt-in; Price argued some devices must own placement (for example compressed memory used only as a demotion sink) and that unexpected migration is unsafe for others. Further comments covered DAMON skipping private folios, whether private zonelists could fall back across owners, and collapse paths that need the same isolation checks as ZONE_DEVICE.

The series is still under review on the linux-kernel list and is not merged.