VMware

NUMA | vNUMA | VSphere’de “Core Per Socket” VM yapılandırmasını dikkate almalı mıyız?

NUMA nedir?

Paylaşılan bir veri yolu (veya başka bir ara bağlantı türü) aracılığıyla belleğe erişen tüm işlemciler olarak tanımlanan “UMA” (Tekdüzen Bellek Mimarisi) mimarisiyle başlayalım . NUMA ( Tek Tip Olmayan Bellek Erişimi) , aynı zamanda paylaşılan bir bellek mimarisidir, ancak ana bellek modüllerinin çok işlemcili bir sistemdeki işlemcilere göre yerleştirilmesini açıklar, yani her işlemcinin kendine özgü bir performansla doğrudan erişebileceği kendi yerel bellek modülü vardır. avantaj. Aynı zamanda başka bir işlemciye ait herhangi bir bellek modülüne de paylaşılan bir veri yolu kullanarak erişebilir.

Hipervizörün dünyasında neden önemlidir?

Genel olarak, iki veya daha fazla fiziksel işlemci soketini destekleyen bir sunucu kullandığınızda NUMA farkındalığı önemlidir. Örneğin, iki soketli bir sunucuda (yukarıdaki resim) , doğrudan işlemci 0’a bağlı belleğe erişen işlemci 1, doğrudan ona bağlı belleğe erişen işlemci 1’den daha yavaş olacaktır, çünkü işlemci 1’in bir işlemciler arası geçiş yapması gerekecektir. otobüs. Bu erişim, erişim mesafesinin daha uzun olması nedeniyle , işlemci 0’ın bu belleğe işlemci 1’den daha hızlı  erişmesi anlamında “tek tip değildir”  .

Bir NUMA Düğümü, doğrudan bağlı belleğe sahip bir işlemci olarak adlandırılır. Bazı (ancak tümü değil) koşullarda, NUMA sınırlarının ötesinde belleğe veya cihazlara erişmek performansın düşmesine neden olur.

Bu, VM’lerin üzerinde çalıştığı işlemciye doğrudan eklenmiş belleği kullanması için belirgin hale gelir, aksi takdirde (bazı durumlarda) çalışan VM bir tür performans düşüşü yaşayacaktır.

VSphere’de NUMA

ESXi için, bir sistemin NUMA gibi davrandığını belirlemek, BIOS’ta “düğüm serpiştirme” (serpiştirilmiş bellek olarak da bilinir) adı verilen bir ayarla yapılır. Düğüm serpiştirme devre dışı bırakılırsa, ESXi sistemi NUMA olarak algılar ve NUMA optimizasyonlarını uygular. Düğüm serpiştirme etkinleştirilirse, ESXi sistemi NUMA olarak algılamaz. Daha fazla bilgi için sunucunuzun belgelerine bakın.

VSphere 4.1 ile ilk olarak vCPU Çekirdeklerini ve Soketini tanımlama seçeneği sunma yeteneği tanıtıldı. VSphere 5’te, yapılandırma İşletim Sistemine maruz kalan vNUMA topolojisini belirledi.

ESXi’deki akıllı, uyarlanabilir NUMA zamanlama ve bellek yerleştirme ilkeleri, tüm sanal makineleri şeffaf bir şekilde yönetebilir, böylece yöneticilerin sanal makineleri düğümler arasında elle dengelemenin karmaşıklığıyla uğraşmasına gerek kalmaz.

Varsayılan olarak, ESXi NUMA zamanlaması ve ilgili optimizasyonlar yalnızca toplam en az dört CPU çekirdeği ve NUMA düğümü başına en az iki CPU çekirdeği olan sistemlerde etkinleştirilir.

NUMA Geçersiz Kılma / Gelişmiş yapılandırma

  • Bu varsayılan davranışı geçersiz kılmak için manuel kontroller mevcuttur, ancak ileri düzey yöneticiler, ayarı VM yapılandırma dosyasına ekleyerek manuel olarak NUMA yerleşimini ayarlamayı tercih edebilir:

numa.nodeAffinity = 0,1

0 ve 1 değeri, sanal makine kaynak planlamasını NUMA düğüm 0 ve 1 ile sınırlar.

  • Hiper iş parçacıklı sistemlerde, bir NUMA düğümündeki çekirdek sayısından daha büyük ancak her fiziksel NUMA düğümündeki mantıksal işlemci sayısından daha düşük vCPU’lara sahip sanal makineler, tam çekirdekler yerine yerel belleğe sahip mantıksal işlemcileri kullanmaktan yararlanabilir. uzak bellek. Bu davranış, aşağıdaki ayarlar kullanılarak belirli bir sanal makine için veya fiziksel ana bilgisayarda çalışan tüm VM’ler için yapılandırılabilir.

– Belirli bir VM için, .vmx dosyasına aşağıdaki yapılandırmayı ekleyin (veya gelişmiş yapılandırma kullanılarak GUI’den)

numa.vcpu.preferHT = Doğru

– Tüm VM’lerin NUMA ile hyper-threading kullanması için ESXi Host Advance ayarlarına aşağıdaki yapılandırmayı ekleyin.

numa.PreferHT = 1

Bunlar, yoğun önbellek kullanan ancak yoğun CPU kullanmayan iş yüklerine yardımcı olmak için tasarlanmış gelişmiş ayarlardır.

vSphere’de vNUMA

Sanal NUMA (vNUMA), NUMA topolojisini konuk işletim sistemine sunarak, NUMA’ya duyarlı konuk işletim sistemleri ve uygulamalarının, temeldeki donanımın NUMA mimarisini en verimli şekilde kullanmasını sağlar.

Sanal NUMA, sanal donanım sürümü 8 veya daha yenisini gerektirir, bazı durumlarda geniş sanal makineler için önemli performans avantajları sağlayabilir (yani, her fiziksel NUMA düğümündeki çekirdek sayısından daha fazla vCPU’ya sahip sanal makineler), ancak faydaları büyük ölçüde konuk işletim sistemi ve uygulamalarındaki NUMA optimizasyon düzeyi.

İşletim sistemi ve uygulamalar, iş parçacığı yerleşimlerini optimize ettikten sonra yerel bellek gecikmeleri beklerken potansiyel olarak uzak bellek erişim gecikmeleriyle karşılaşır. CPU paketinin fiziksel sınırlarıyla uyumlu olması için VM’nin “Soket Başına Çekirdek” yapılandırmasının yapılandırılması önerilir.

vSphere 6.5 ve sonraki sürümleri ile vNUMA

VSphere v6.5 ve sonraki sürümlerden itibaren, vNUMA işleme geliştirildi – bu, temeldeki ESXi ana bilgisayarına göre konuk işletim sistemine sunulacak uygun vNUMA topolojisini otomatik olarak belirler. “Soket Başına Çekirdek” artık vNUMA’yı veya vNUMA topolojisinin yapılandırmasını etkilemiyor. “Soket Başına Çekirdek” yapılandırması artık yalnızca sanal işlemcilerin konuk işletim sistemine sunumunu etkiliyor, bu da potansiyel olarak yazılım lisanslamasıyla ilgili bir şey.

Örneğin: vSphere v6.5’ten önce, yuva başına 16 çekirdekli (toplam 32 fiziksel çekirdek için) çift soketli fiziksel ESXi ana bilgisayarında – dört vSocket sanal makine oluşturur ve yuva başına çekirdekleri dörde ayarlarsanız ( toplam 16 vCPU için), vNUMA, corespersocket ayarına göre dört vNUMA düğümü oluşturabilirdi. VSphere 6.5 ve sonraki sürümlerde, konuk işletim sistemi soket başına dört yuva ve dört çekirdek görmeye devam edecek, ancak vNUMA artık tüm sanal makine için yalnızca bir 16 çekirdekli vNUMA düğümü oluşturacak çünkü bu sanal makine tek bir fiziksel NUMA düğümüne yerleştirilebilir – ama bekleyin, aşağıdaki blogda daha sonra yer alan “Uyarı” bölümüne bakın.

Corepersocket ayarının vNUMA’dan bu yeni ayrıştırılması, VM’ler Advance Virtual NUMA Attributes olmadığı sürece vSphere’in en iyi vNUMA topolojisini otomatik olarak belirlemesine olanak tanır.

Hususlar:

  • “CPU Hot Add” veya “CPU Hot Plug”, çalışan bir sanal makineye vCPU’ların eklenmesine izin veren bir özelliktir. Bu özelliğin etkinleştirilmesi, ilgili sanal makine için vNUMA’yı devre dışı bırakır ve konuk işletim sisteminin tek bir vNUMA düğümü görmesiyle sonuçlanır. Bu da konuk işletim sisteminin optimal olmayan zamanlama kararları vermesine neden olabilir ve bu da büyük sanal makinelerde çalışan uygulamalar için düşük performansa yol açar. Bu nedenle, bu seçeneği yalnızca ihtiyacınız olduğunda kullanmayı düşünün.
  • Varsayılan olarak, vNUMA yalnızca sekizden fazla vCPU’ya sahip sanal makineler için etkinleştirilir. Bu özellik daha küçük sanal makineler için etkinleştirilebilir, ancak yine de ESXi’nin vNUMA topolojisini otomatik olarak yönetmesine izin verir. Bu, sekiz veya daha az vCPU’ya sahip geniş sanal makineler (yani, her fiziksel NUMA düğümündeki çekirdek sayısından daha fazla vCPU’ya sahip sanal makineler) için yararlı olabilir.

vNUMA Geçersiz Kılma / Gelişmiş Yapılandırma

  • Sekiz veya daha az vCPU’ya sahip sanal makinelerde vNUMA’yı etkinleştirmek için .vmx dosyasına aşağıdaki yapılandırma değeri eklenebilir.

numa.vcpu.min = X

Not: X, sanal makinedeki vCPU sayısıdır.

  • Otomatik vNUMA topolojisini eski davranışa döndürmek ve cpuid.coresPerSocket’e bağlı olan vNUMA düğüm boyutlandırmasını doğrudan kontrol etmek için, .vmx dosyasına aşağıdaki yapılandırma değeri eklenebilir.

numa.vcpu.followcorespersocket = 1

Uyarı:

VSphere v6.5 ve sonraki sürümlerin otomatik vNUMA düğümü belirlemesi, VM’nin CPU’sunu ve Belleğini pNUMA ile uyumlu hale getirmek için mükemmel bir optimizasyondur, ancak sanal soket sayısı ” önbellek adres alanını”, yani L3 önbelleği dikkate almaz . Bu nedenle, “Soket Başına Çekirdek” yapılandırılırken dikkatli olunması ve optimum performans için fiziksel CPU’ların sınırları dikkate alınarak hizalanması önerilir. Daha fazla bilgi ve derinlemesine inceleme için, Frank Denneman’ın buradaki bloguna bakın .

Başparmak Kuralları ( “Mark Achtemichuk ” tarafından), Sphere v6.7 ve 7.0 için hala geçerlidir:

  1. Birçok gelişmiş vNUMA ayarı olsa da, yalnızca nadir durumlarda varsayılanlardan değiştirilmeleri gerekir.
  2. Sanal makine vCPU sayısını, tek bir fiziksel NUMA düğümünün fiziksel çekirdek sayısını aşana kadar YA DA tek bir fiziksel NUMA düğümünde kullanılabilir toplam belleği aşana kadar Soket Başına Çekirdek olarak yansıtılacak şekilde yapılandırın.
  3. NUMA düğümünde fiziksel çekirdekten daha fazla vCPU yapılandırmanız gerektiğinde VEYA bir NUMA düğümünün içerdiğinden daha fazla bellek atarsanız, vCPU sayısını minimum NUMA düğümü sayısına eşit olarak bölün.
  4. Sanal makinenizin boyutu, vCPU sayısı veya yapılandırılmış bellek ile ölçülen fiziksel bir NUMA düğümünü aştığında tek sayıda vCPU atamayın.
  5. VNUMA’nın devre dışı bırakılmasından memnun değilseniz, vCPU Hızlı Eklemeyi etkinleştirmeyin  .
  6. Ana makinenizin toplam fiziksel çekirdek sayısından daha büyük bir VM oluşturmayın.

Sanal makine yapılandırılmalıdır nasıl ana hatları aşağıdaki tabloda, SM’nin bellek yapılandırması ise daha az ya da buna eşit için pNUMA düğümün hafızada, bağımsız vSphere versiyonunun optimal vNUMA topoloji ve performans sağlamak için.

Aşağıdaki tablo, VM’nin bellek yapılandırması pNUMA düğüm belleğinden daha fazlaysa, vSphere sürümünden bağımsız olarak optimum vNUMA topolojisi ve performansı sağlamak için bir sanal makinenin nasıl yapılandırılması gerektiğini özetlemektedir.

Kaynak https://shuttletitan.com/vsphere/numa-vnuma-should-we-consider-cores-per-socket-vm-configuration-in-vsphere/

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir