Linux
Kernel
NUMA
System Configuration
Performance Tuning

Your kernel may have been built without NUMA support

Data Structures & Algorithms practice on Codemia

Step through 300 algorithm problems with animated visualisers that show the data structure changing as the code runs.

Practice algorithms

Introduction

The message "your kernel may have been built without NUMA support" usually appears when software checks for NUMA features and cannot find them. NUMA stands for Non-Uniform Memory Access, a hardware and kernel feature that matters mainly on systems with multiple CPU sockets or complex memory topology. On many developer machines, this warning is informational rather than catastrophic.

What NUMA Support Changes

In a NUMA system, memory is divided into nodes that are physically closer to some CPUs than others. Accessing local memory is faster than accessing remote memory. A NUMA-aware kernel can expose that topology to the scheduler and memory allocator so processes can stay closer to their preferred memory node.

If the kernel lacks NUMA support, the system behaves more like a uniform-memory machine from software's perspective. That may reduce performance on large multi-socket servers, but it often makes little or no difference on laptops, desktops, or single-socket machines.

How to Check Whether NUMA Is Actually Relevant

First check the hardware and the kernel view of it.

bash
lscpu | grep -i numa
numactl --hardware
grep CONFIG_NUMA /boot/config-$(uname -r)

What to look for:

  • if lscpu reports only one NUMA node, the warning is usually harmless
  • if numactl --hardware is unavailable or shows no nodes, the machine may not expose NUMA topology
  • if the kernel config shows CONFIG_NUMA=n, the running kernel was not built with NUMA enabled

Not every machine even benefits from NUMA awareness. If there is only one node, enabling NUMA support will not create extra performance out of nowhere.

Why Frameworks Print This Warning

Libraries such as TensorFlow, PyTorch, database engines, and JVM-based systems probe the machine for CPU and memory topology because it can affect threading and memory placement decisions. If they expected NUMA information and the kernel does not provide it, they may print a warning.

That warning does not automatically mean the application is broken. It means one optimization path is unavailable.

When You Should Care

You should care if all of these are true:

  • the machine has multiple NUMA nodes
  • the workload is memory-intensive or highly parallel
  • performance or tail latency matters
  • you are benchmarking or serving production traffic on that host

In that environment, a non-NUMA-aware kernel can reduce locality and increase remote-memory access.

You usually do not need to care much if you are on a workstation with one socket and one visible NUMA node. In that case, the warning is mostly noise.

What to Do If NUMA Support Is Missing

If you confirmed the hardware is NUMA-capable and the running kernel disables NUMA, the fix is operational rather than application-level. You need a kernel build that enables NUMA support.

On a distribution kernel, that often means installing the standard vendor kernel instead of a stripped-down custom build. On custom kernels, it means enabling the relevant kernel option and rebooting into that build.

After rebooting, verify again:

bash
uname -r
lscpu | grep -i numa
grep CONFIG_NUMA /boot/config-$(uname -r)

Application-Level Workarounds

Even without NUMA-aware kernel support, you can still improve behavior in other ways:

  • set sensible thread counts
  • avoid oversubscribing CPU cores
  • reduce memory pressure
  • benchmark on hardware that matches production

For example, a machine learning workload may gain more from correct batch sizing or thread-pool settings than from NUMA tuning on a single-node workstation.

Common Pitfalls

The most common mistake is treating the warning as a guaranteed error. It often just means the program could not enable an optional optimization.

Another mistake is trying to fix NUMA warnings on hardware that has only one node. That effort usually produces no practical gain.

A third problem is benchmarking server software on a non-representative development machine and then drawing conclusions about NUMA-related performance.

Summary

  • The warning means the application could not find kernel-level NUMA support
  • NUMA mainly matters on multi-socket or multi-node systems
  • On single-node developer machines, the warning is often harmless
  • Check hardware topology and CONFIG_NUMA before trying to fix anything
  • Only invest in NUMA support if the machine and workload can actually benefit from it

Related reading
Course
Intermediate
27 lessons
15 hours
DSA Fundamentals

Master algorithmic patterns and data structures through hands-on LeetCode-style problems - from arrays and hashing to dynamic programming and advanced graphs.

View the course
Track what you have practised

A free account saves your progress, solutions and study plan across every problem on Codemia.

Data Structures & Algorithms practice on Codemia

Step through 300 algorithm problems with animated visualisers that show the data structure changing as the code runs.

Practice algorithms

All Rights Reserved.