NUMA - RAM Aslında CPU'ya Eşit Uzaklıkta Değil
NUMA sistemlerinde CPU socket, memory locality ve remote memory erişiminin performans etkisini inceliyoruz.
Hakan E. · · Akademi

Çok soketli sunucularda bütün RAM'in bütün CPU çekirdeklerine aynı maliyetle bağlı olduğunu düşünmek ciddi performans hatalarına yol açabilir. NUMA mimarisinde her CPU node'una daha yakın bir bellek bölgesi vardır. Yerel belleğe erişim daha düşük gecikmeli olurken başka node'un belleğine erişim interconnect üzerinden gerçekleşir ve daha pahalıdır.
Linux numactl, numastat ve scheduler politikalarıyla process ve memory placement hakkında bilgi verebilir veya kontrol sağlayabilir. Büyük veritabanlarında, JVM iş yüklerinde ve yüksek throughput isteyen servislerde thread'lerin bir node'da çalışıp belleğin diğer node'da kalması görünmez bir fren yaratabilir. CPU yüzde 40'ta dururken sistemin ağır hissettirmesi bazen tam olarak budur.
İleri optimizasyonda CPU pinning, memory binding ve IRQ affinity birlikte düşünülür. Yalnızca process'i bir çekirdeğe sabitleyip network interrupt'larını başka NUMA node'unda bırakmak yarım çözümdür. NUMA size performans verir, ama karşılığında topolojiye saygı bekler. Biraz aristokrat bir mimaridir.