EMZETT.
Giriş yap

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 --hardware düğümleri listeler, numactl --cpunodebind=0 --membind=0 program bilinç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ı