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.