VMware Üzerinde Database Sunucuları İçin En Doğru vCPU Core/Socket ve NUMA Yapılandırması

VMware Üzerinde Database Sunucuları İçin En Doğru vCPU CoreSocket ve NUMA Yapılandırması

VMware üzerinde SQL Server veya Oracle gibi yüksek performans gerektiren database sunucuları çalıştırıyorsanız, vCPU core/socket ve NUMA ayarları performansın kaderini belirler. Yanlış yapılandırma, donanım ne kadar güçlü olursa olsun %20–30’a varan performans kayıplarına yol açabilir.

Bu yazıda, örnek olarak Intel Xeon Gold 6152 (2×22 core) işlemcili bir ESXi host üzerinde database sanal makineleri için en ideal vCPU dağılımını, NUMA mimarisini ve SQL/Oracle tuning önerilerini tüm detaylarıyla ele alacağım.

Fiziksel Host Topolojisi: Intel Xeon Gold 6152

Örnek ortamımızın donanım yapısı:

  • CPU: Intel Xeon Gold 6152 @ 2.10GHz
  • Soket sayısı: 2
  • Soket başına core: 22
  • Toplam fiziksel core: 44
  • Her soket bağımsız bir NUMA node’dur.

Database VM’inizin tek bir NUMA node’un kapasitesini aşmaması, performans açısından en önemli konudur.

Not: NUMA node = CPU soketi demektir. Her soketin kendi lokal belleği vardır ve yerel belleğe erişim her zaman daha hızlıdır.

NUMA Nedir ve VMware İçin Neden Bu Kadar Önemlidir?

NUMA (Non-Uniform Memory Access), işlemcilerin kendi yerel belleğine daha hızlı eriştiği bir mimaridir. VMware bu yapıyı sanal makineler için vNUMA olarak sunar.

Doğru vNUMA yapılandırması:

  • Bellek gecikmesini azaltır
  • CPU scheduling’i dengeler
  • SQL/Oracle execution planlarını iyileştirir
  • Genel sistem stabilitesini artırır

Yanlış yapılandırma ise:

  • Cross-node memory access oluşturur
  • CPU wait ve context switch artar
  • Query süreleri uzar

Büyük database VM’lerinde vNUMA = pNUMA uyumu sağlamak performansın %50’sidir.

Intel 6152 Host Üzerinde En İdeal vCPU Yapılandırmaları

Önerilen Dağılımlar

Toplam vCPU Soket Core/Socket Durum
16 1 16 En iyi
24 2 12 En iyi
32 2 16 En iyi

 

22 core’luk bir NUMA node’a 16 veya 12 core rahatça sığar.

24 veya 32 core’u tek sokete verirseniz NUMA split olur.

Split = performans kaybı.

1×32 veya 1×24 yapılandırması teknik olarak çalışır ama performans olarak doğru değildir.

CPU Hot Add Mutlaka Kapalı Olmalı

Database VM’lerinde CPU Hot Add açıksa vNUMA çalışmaz.

Bu da:

  • NUMA farkındalığını bozar
  • SQL ve Oracle’ın sistemi tek node gibi görmesine neden olur
  • Performans düşürür

Not: Büyük VM’ler için CPU Hot Add bir “feature” değil, bir performans riskidir.

Bellek (RAM) ve NUMA Uyumu

  • Bellek mümkün olduğunca node’lara eşit dağılmalıdır.
  • Örneğin 128 GB RAM → 64 + 64 şeklinde.
  • Memory overcommit, ballooning ve swap kesinlikle olmamalıdır.

Büyük database VM’lerinde memory reservation kullanmak iyi bir pratik olabilir.

SQL Server İçin NUMA Tuning Önerileri

MAXDOP

  • 2×16 vCPU yapısı için başlangıç değeri: 8
  • Gerekirse test ederek 12 veya 16’ya çıkarılabilir.

Cost Threshold for Parallelism

  • Varsayılan 5 çok düşüktür.
  • Önerilen: 25–50

NUMA Kontrolü

SQL Server’ın NUMA’yı doğru görüp görmediğini şu DMV’lerle kontrol edebilirsiniz:

  • sys.dm_os_nodes
  • sys.dm_os_schedulers

Oracle Database İçin NUMA Tuning Önerileri

  • Linux’ta numactl –hardware ile NUMA yapısını kontrol edin.
  • HugePages kullanımı önerilir.
  • SGA/PGA bellekleri dengeli dağıtılmalıdır.
  • Oracle’ın internal NUMA parametreleri destek olmadan değiştirilmemelidir.

Örnek vNUMA Mimarisi

NUMA Node 0 (22 Core)  NUMA Node 1 (22 Core)

|                       |

+——— ESXi ——–+

|

Database VM (32 vCPU)

vNUMA0 (16)  vNUMA1 (16)

Intel Xeon Gold 6152 (2×22 core) bir host üzerinde database sanal makineleri için:

  • 16 vCPU → 1×16
  • 24 vCPU → 2×12
  • 32 vCPU → 2×16

İncelemek isterseniz aşağıdaki linkten detaylara bakabilirsiniz.

Virtual Machine vCPU and vNUMA Rightsizing – Guidelines

şeklindeki yapılandırmalar en doğru, en stabil ve en performanslı sonuçları verir. Doğru vCPU dağılımı, NUMA uyumu ve temel SQL/Oracle tuning ayarlarıyla mevcut donanımınızdan maksimum verimi alabilirsiniz.


 

Bir yanıt yazın

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