NUMA (düzensiz bellek erişimi)
Kısaca: NUMA’da (“Non-Uniform Memory Access”) her işlemcinin kendine yakın belleği vardır; başka bir işlemcinin belleğine erişim daha uzun sürer.
Biraz daha ayrıntılı: Birden çok işlemci soketli veya çok chiplet’li sunucular RAM’i bölgelere (“düğümler”) ayırır. Kendi düğümüne erişim hızlıdır, yabancı olana daha yavaş ve daha az aktarım hızıyla.
Ayrıntılı
- UMA’dan fark: Orada tüm bellek erişimleri eşit hızlıdır; tek işlemcili masaüstü bilgisayarlar için tipiktir.
- Yazılım için sonuç: Düğüm 0’da çalışıp düğüm 1’deki verileri okuyan bir iş parçacığı yavaşlar.
- İşletim sistemi: Linux varsayılan olarak belleği isteyen çekirdeğe yakın ayırır (“first touch”) ve süreçleri düğümlerinde tutmaya çalışır.
- Araçlar:
numactl --hardwaredüğümleri listeler,numactl --cpunodebind=0 --membind=0 programbilinçli bağlar. - Veritabanları ve YZ: Çok soketli sunucularda kötü dağıtılmış yük aktarım hızına mal olabilir. Sabitleme (pinning) ve bellek ilkeleri yardımcı olur.
- Masaüstü CPU’larda da: Bazı Ryzen Threadripper modelleri benzer davranır.
Ayrıca bak: Bellek hiyerarşisi ve önbellek satırları