US East introductory rate: KVM VPS and CDN origin VPS in our Ashburn region are 50% off, applied automatically at checkout. Explore US East →Monthly and longer billing periods. New orders until 31 October 2026.

← Back to blog

Single vs Dual Socket Servers: NUMA and When Two CPUs Help

Maria Ilinca Bostan

The single vs dual socket server choice comes down to one trade. Two sockets double the cores, the memory capacity and the memory channels, but each socket owns its own memory. A process on one socket reading memory attached to the other pays extra latency and shares the link between the sockets. That is NUMA, and it decides which workloads gain from a second CPU.

What a second socket adds: NUMA explained

A dual CPU server is two complete processors on one motherboard. Each socket brings its own cores, L3 cache and memory controllers. The AMD EPYC 9004 platform has twelve DDR5 memory channels per socket, 24 on a two socket board. Intel Xeon E5 v3 and v4 have four DDR4 channels per socket. The bandwidth you actually get depends on how many channels are populated.

The operating system sees one pool of RAM, but it is not uniform. Memory attached to the socket your thread runs on is local. Memory attached to the other socket is remote: each request crosses the link between sockets, which AMD calls Infinity Fabric and Intel's E5 generation calls QPI. Remote access is slower, and every core on both sockets shares that link. This is non uniform memory access, and each group of cores with its local memory is a NUMA node.

Linux copes well by default. It allocates memory on the node where the requesting thread runs, and automatic NUMA balancing moves pages towards the CPU using them. Trouble starts when one process has threads on both sockets working on the same data.

The same CPU sold both ways: Single vs Dual EPYC 9254

The Single EPYC 9254 costs €485 a month with 24 cores, 48 threads and 128 GB of DDR5 ECC memory. The Dual EPYC 9254 costs €739 a month with 48 cores, 96 threads and 256 GB. Both have the same Zen 4 cores at 2.9 GHz base and 4.15 GHz boost, 128 MB of L3 per socket, 2 × 1 TB NVMe and built to order delivery of about 14 days. The second socket and its memory cost €254 a month.

Per unit, the dual build is cheaper: €15.40 per physical core instead of €20.21, and €2.89 per GB of RAM instead of €3.79. Our dedicated server cost per core comparison runs these numbers across all seven configurations.

What the extra €254 does not buy is a faster single process. A program only gains from 48 cores if it can spread its work out, and once it spans both sockets it pays for remote memory traffic.

Sockets and NUMA nodes across our range

All three Xeon servers are dual socket, and so are the Dual EPYC 9554 and Dual EPYC 9754. The Single EPYC 9254 is our only one socket configuration. The node count assumes the usual firmware default of one NUMA node per socket.

ServerSocketsCores per socketMemory per serverMemory channels per socket (platform)NUMA nodes at default settings
Dual Xeon E5 2630 v328128 GB DDR442
Dual Xeon E5 2690 v4214128 GB DDR442
Dual Xeon E5 2699 v4222256 GB DDR442
Single EPYC 9254124128 GB DDR5121
Dual EPYC 9254224256 GB DDR5122
Dual EPYC 9554264512 GB DDR5122
Dual EPYC 975421281 TB DDR5122

With memory split evenly between sockets, as is normal, each node on a Dual EPYC 9554 holds 64 cores and about 256 GB of local RAM. Confirm the real split with the tools below once your server is live.

How Linux shows NUMA, and how to pin work to one node

lscpu is the quickest check. Its output has a Socket(s) line, a NUMA node(s) line and one line per node listing its CPU numbers. A Dual EPYC 9254 at the usual default shows two nodes with 48 logical CPUs each.

numactl with its hardware option lists every node with its CPUs, total and free memory, and a distance table. The distances are relative costs from the firmware, local listed as 10 and remote nodes higher. Read them as a ranking, not a latency measurement.

numastat counts, per node, allocations that landed where they were wanted and allocations that did not. If numa_miss and other_node keep climbing under load, memory is coming from the wrong socket. It can also break down one process's memory by node, which shows whether a database has spread across both sockets.

Pinning a process to one node

numactl can launch a program with a CPU and memory policy. For a latency sensitive service, bind both its CPUs and its memory to the same node, so every thread and every allocation stays on one socket. Other policies prefer one node with fallback, or interleave memory across all nodes, which suits a large shared cache. systemd can apply the same CPU affinity and NUMA policy in a service's unit file.

Pinning a VM in Proxmox VE

Proxmox VE has a NUMA checkbox in each VM's processor settings. Ticking it gives the guest a NUMA layout matching the virtual sockets you configure, so the guest kernel places memory sensibly. It does not keep the VM on one physical socket by itself. For that, size the VM to fit inside one host node, list that node's cores in the CPU affinity field, and bind the VM's memory to that host node in its configuration. Our guide on when you need a virtualisation host covers wider sizing.

Firmware can split a socket further

AMD EPYC firmware has a setting called NPS, nodes per socket. NPS1 shows each socket as one node and is the usual default. NPS2 and NPS4 split each socket into two or four nodes, which can help carefully NUMA aware software and hurt software that is not. This is a firmware setting, not something you change from Linux. If a particular NPS setting matters for your software, ask support before ordering.

When two sockets win

Two sockets pay off when the work splits into pieces that each fit on one socket, because then most memory access stays local without effort.

  • Many independent processes. Web workers, queue consumers, CI runners and containers each keep a small working set, and the Linux scheduler keeps most of them local.
  • VMs that each fit inside one socket. A VM of up to 24 cores fits on one node of a Dual EPYC 9254. On the Dual EPYC 9554 the limit is 64 cores per node, and on the Dual EPYC 9754 it is 128.
  • Throughput and parallel batch work. Transcoding, rendering, compression and test suites care about total cores more than single access latency. Twice the cores runs twice as many jobs at once, and the gain in finished work depends on how memory hungry each job is.
  • More RAM than one socket holds in our range. The Single EPYC 9254 comes with 128 GB. The dual EPYC builds list 256 GB, 512 GB and 1 TB, and the Dual Xeon E5 2699 v4 has 256 GB of DDR4 for €325 a month. Memory upgrades are quoted per server, so ask support first.

When one socket is the better buy

One socket wins when a single process needs fast access to all of its memory and cannot be split.

  • One big latency sensitive process. A database primary with a large buffer pool or a matching engine reads shared structures from every thread. On two sockets some reads are always remote, on one socket none are. Our database server guide and trading bot hosting page cover sizing.
  • Software that does not scale across nodes. Many applications assume one shared memory space. They run on two sockets, but threads on the far socket wait on remote memory and the second socket adds little.
  • Simpler tuning. With one node there is nothing to pin and no cross socket traffic to chase. The Single EPYC 9254 gives you 24 Zen 4 cores at up to 4.15 GHz and 128 MB of L3, all local.

A dual socket server can imitate a single socket one if you bind the database to one node, but that only pays when other work fills the second socket.

Check your licensing

Socket count can change your software bill. Proxmox VE subscriptions are priced per CPU socket, so a dual socket host needs a two socket subscription. Windows Server is licensed per core, so the Dual EPYC 9254 has 48 cores to license against 24 on the single build. Check your licensing for everything you plan to run.

Questions we get

Does a dual socket server make one program twice as fast?

No. A second socket doubles the cores, not the speed of each core. A program only gets faster if it splits its work across more threads, and threads sharing memory across both sockets lose part of the gain to remote access. How much depends on the workload.

Is the CPU in the Single EPYC 9254 different from the Dual EPYC 9254?

No. Both use the EPYC 9254 with 24 Zen 4 cores, 2.9 GHz base, 4.15 GHz boost and 128 MB of L3 per socket. The dual build adds a second identical chip and doubles memory to 256 GB for €254 more a month.

Can I choose how many NUMA nodes the server shows?

The node count comes from firmware settings such as NPS on EPYC, not from the operating system. If your software needs a particular layout, ask support before you order.

Pick your socket count

If your workload is one large process that needs every memory access to stay local, start with the Single EPYC 9254. If it splits into VMs, containers or batch jobs, a dual socket server gives you more cores and memory per euro. Compare all seven configurations on our dedicated servers page.

Ready in under a minute

Deploy your first server now.

No contracts, no minimum term. Start on an Ion KVM VPS at €0.0063 an hour and move to a monthly bare-metal server the day you outgrow it.

$ curl https://my.voxa.host/api/v1/products -H "Authorization: Bearer fbk_…"

KVM VPS billed hourly, capped monthly · Dedicated billed monthly · No setup fee

Included on every plan
Free IPv4
Every VPS
Unmetered traffic
Every plan
DDoS protection
1 Tbps · L3/L4
Root access
Included
Setup fee
€0.00
Minimum term
None