Field note / 9 November 2011
Finding NUMA boundaries on modern server processors
Core count is a headline. Memory locality is the detail that decides whether those cores work together efficiently.
A processor can expose many cores while grouping memory access around a smaller number of nodes. Applications that ignore those boundaries may still run, but they can pay a penalty when a thread reaches across the machine for memory.
SQL Server and virtualisation platforms each have their own way of describing and using NUMA. The first step is to find what the hardware actually presents, not what the marketing sheet implies.
Read the topology from the operating system
Collect the node count, processor groups, core counts and memory ranges from the running system. Compare that with the vendor documentation for the exact processor model and firmware level. A virtual machine may present a simplified topology that differs from the physical host.
Then check how the workload is placed. A large virtual machine that spans nodes can behave differently from several smaller machines confined to one node. Record the layout before and after a change so a performance result can be attributed to something specific.
The short list
Checks worth running
- Capture the NUMA topology from the operating system, not only the purchase order.
- Confirm the firmware and hypervisor presentation of the processor.
- Compare workload placement before and after any topology change.
NUMA is not a tuning trick for every server. It is a structural fact that becomes important when a workload grows large enough to cross the boundaries.
Outside reading
Reference shelf
Official documentation and independent community reading for the subjects in this note.
- Microsoft Learn: Soft NUMA in SQL Server (opens in a new tab)Background on SQL Server NUMA configuration for large processor layouts.
- Microsoft Learn: SQL Server documentation (opens in a new tab)Official reference material for database engine configuration, performance and recovery.
- Microsoft Learn: Server memory configuration (opens in a new tab)How SQL Server allocates memory and how the maximum server memory setting is applied.
- Microsoft Learn: Windows Server documentation (opens in a new tab)Current guidance for Windows Server roles, networking, storage and management.
- Microsoft Learn: Hyper V on Windows (opens in a new tab)Documentation for virtual machines, virtual switches and host configuration.
- Microsoft Support (opens in a new tab)Support articles, troubleshooting steps and product help from Microsoft.
- Microsoft Tech Community (opens in a new tab)Community discussion, product announcements and practical posts from Microsoft teams.
- Microsoft Learn Q&A (opens in a new tab)A community question and answer space hosted by Microsoft.
- SharePoint Stack Exchange (opens in a new tab)An independent question and answer community for SharePoint practitioners.
- Microsoft Learn: Azure Architecture Center (opens in a new tab)Reference architectures and design guidance for resilient cloud workloads.
- Microsoft Download Center (opens in a new tab)Official downloads for Microsoft tools, updates and supporting packages.
- Microsoft Learn: Always On availability groups (opens in a new tab)Architecture and operational overview for SQL Server high availability groups.
- Microsoft Learn: SharePoint documentation (opens in a new tab)The starting point for current SharePoint administration, development and hybrid guidance.
- Microsoft Learn: SharePoint administration (opens in a new tab)Operational guidance for service settings, site management and the modern admin experience.
- Microsoft Learn: SharePoint search (opens in a new tab)Documentation for search architecture, crawling and result management.