müfettiş
Moderatör
- Katılım
- 20 Ocak 2024
- Mesajlar
- 325
- Tepkime puanı
- 1
- Puanları
- 18
Sanallaştırma Ortamlarında CPU Pinning ve NUMA Ayarları
Giriş: "Gürültülü Komşu" Sorunu
Sanallaştırmanın temel mantığı paylaşmaktır. 10 farklı sanal makine (VM), aynı fiziksel işlemciyi (CPU) sırayla kullanır. Bu, genel kullanım için harikadır ancak yüksek performans gerektiren işlerde (Yüksek Frekanslı Ticaret, Gerçek Zamanlı Ses İşleme, Ağır Veritabanları) sorun yaratır.Eğer VM'iniz tam işlem yapacakken, işlemci o sırada başka bir VM ile meşgulse, milisaniyelik gecikmeler (Latency) yaşanır. Çözüm: VM'e özel işlemci tahsis etmek (CPU Pinning) ve belleği doğru yerden vermek (NUMA).
NUMA (Non-Uniform Memory Access) Nedir?
Modern sunucularda genellikle çift işlemci (Socket) bulunur. Anakart üzerindeki RAM yuvalarının yarısı 1. İşlemciye, diğer yarısı 2. İşlemciye doğrudan bağlıdır.- Local Access: İşlemci 1, kendine bağlı RAM'e erişirse çok hızlıdır.
- Remote Access: İşlemci 1, İşlemci 2'ye bağlı RAM'e erişirse, verinin QPI/UPI köprüsü üzerinden geçmesi gerekir. Bu %20-30 daha yavaştır.
CPU Pinning (Çekirdek Sabitleme)
Normalde bir sanal işlemci (vCPU), fiziksel işlemcilerin (pCPU) herhangi birinde çalışabilir (Floating).Pinning, sanal çekirdeği fiziksel çekirdeğe "çivilemektir".- Örnek: "Sanal Makine A'nın 0. çekirdeği, sadece Fiziksel İşlemcinin 4. çekirdeğinde çalışsın."
- Avantajı:
- Önbellek (L1/L2 Cache) Verimliliği: İşlemci sürekli değişmediği için, önbellekteki veriler (Cache Hit) korunur.
- İzolasyon: Diğer VM'ler bu çekirdeği işgal edemez.
Nasıl Yapılır? (Proxmox Örneği)
Proxmox'ta bu ayarlar VM konfigürasyon dosyasından veya arayüzden yapılır.- NUMA: VM ayarlarında "NUMA" kutucuğunu işaretleyin. Bu, Hypervisor'ın VM'e RAM ve CPU'yu aynı soketten vermesini garanti eder.
- CPU Affinity: /etc/pve/qemu-server/100.conf dosyasına şu satırı ekleyin:cpu: host, hidden=1, flags=+pcid (İşlemci özelliklerini birebir geçirir)taskset komutları ile çekirdekler atanabilir.
Ne Zaman Kullanılmalı?
- Gerekli: Oyun sunucuları, NFV (Network Function Virtualization - Sanal Router/Firewall), Gerçek zamanlı sistemler.
- Gereksiz: Web sunucuları, Dosya sunucuları, Active Directory. (Bu sistemler için paylaşım daha verimlidir).