Non-Uniform Memory Access (NUMA)

Emre Marangoz
2 min readAug 11, 2022

--

Numa nedir?

NUMA, Düzensiz Bellek Erişimi veya Düzensiz Bellek Mimarisi “Non-Uniform Memory Access veya Non-Uniform Memory Architecture” çok işlemcililerde bellek erişim zamanının belleğin işlemci üzerindeki yerine bağlı olduğu bir bilgisayar belleği tasarımıdır.

Açılımı Non Unified Memory Access. Yani CPU unun memory erişimini optimize eden bir teknolojidir. Her CPU, bir memory controller üzerinden memory e erişir ve her CPU bir NUMA node içerisinde tutulur ki, kendisine uzak kalan memory e erişmesin, kendi lokalindeki memory e erişsin, böylelikle işlemler daha hızlı bir şekilde tamamlansın. Eğer bir CPU, uzaktaki memory modüllerini kullanırsa, o zaman CPU daki işler bir nebze daha yavaş tamamlanacaktır. Çünkü kendisine atanan memory ‘de değil, uzaktaki memory ‘de işlerini görecektir.

ESXi NUMA Scheduler

Aşağıdaki resim üzerinden NUMA ve ESXi NUMA Scheduler servisini anlatalım:

  • Elinizde iki soketli bir fiziksel sunucu var. Varsayılan olarak bu makinede iki NUMA node açılır. Bunlara NUMA Home Node denilir.
  • Her NUMA Home Node kendine atanmış CPU ve Memory modüllerinden oluşur.
  • Şu ana kadar sanallaştırmayı işin içine dahil etmedik. Şimdi bu sunucuya ESXi işletim sistemini kurduğumuzu varsayalım. İlk olarak bilmemiz gereken servis, ESXi NUMA Scheduler.
  • ESXi NUMA Scheduler, CPU ya gelen işleri ilgili NUMA node içerisinde atanmış memory ‘i kullanarak tamamlamaya çalışır. Bu varsayılan davranıştır.
  • Bu ortamda bir sanal makine açtığınızda ESXi NUMA Scheduler bu makineyi ilgili NUMA home node içerisinde dinamik olarak konumladırmaya çalışır. Çalışır diyorum çünkü bu sanal makineye vereceğiniz vCPU ve memory bunu belirleyecektir.
  • Ayrıca dinamik dedik ya, mesela aynı NUMA home node içerisinde birden fazla VM denk geldi, diğer NUMA Home node biraz daha boş. Bu durumda sanal makineleri çalışırken siz fark etmeden diğer NUMA node içerisine de taşıyabilir. Dinamikliği buradan geliyor.

Wide VM lerde yaşanan performans sorunun önüne geçmek için VMware tarafından virtual NUMA (vNUMA) özelliği otomatik devreye girer. vNUMA, wide VM oluşturulduğu anda sanal makine özelinde aktif edilir ve VM içerisindeki NUMA farkındalığı olan işletim sisteminin hizmetine sunulur. vNUMA, fiziksel makinedeki NUMA özelliğinin üstünde çalışır. vNUMA, Wide VM oluşturulup, sanal makineyi açtığınız anda çalışmaya başlar, sizin özel bir şey yapmanıza gerek yok.

vNUMA topoloji hangi durumda kullanılır?

  1. Bir sanal makine 8 den fazla CPU ya sahipse ve
  2. vCPU sayısı, fiziksel NUMA home node içerisindeki cpu sayısında fazla ise devreye girer.

--

--