Sanallaştırma Ortamlarında CPU Pinning ve NUMA Ayarları

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.
Eğer sanallaştırma yazılımınız (Hypervisor) NUMA farkındalığına sahip değilse, VM'in işlemcisini Soket 1'den, RAM'ini Soket 2'den verebilir. Bu performans katilidir.

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ı:
    1. Önbellek (L1/L2 Cache) Verimliliği: İşlemci sürekli değişmediği için, önbellekteki veriler (Cache Hit) korunur.
    2. İ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.

  1. NUMA: VM ayarlarında "NUMA" kutucuğunu işaretleyin. Bu, Hypervisor'ın VM'e RAM ve CPU'yu aynı soketten vermesini garanti eder.
  2. 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).

Sonuç​

NUMA ve Pinning, sanallaştırmanın "ince ayar" (Fine Tuning) kısmıdır. Doğru yapıldığında sanal makineden "Bare-Metal" (Fiziksel) performans almanızı sağlar. Ancak yanlış yapılırsa (örn: tüm VM'leri aynı çekirdeğe pinlemek) sistemi kilitlersiniz.
 
Geri
Üst