müfettiş
Moderatör
- Katılım
- 20 Ocak 2024
- Mesajlar
- 325
- Tepkime puanı
- 1
- Puanları
- 18
QEMU/KVM ile Yüksek Performanslı Linux Sanallaştırma Teknikleri
Giriş: Linux'un İçindeki Canavar
Sanal makine denince akla VMware veya VirtualBox gelir. Ancak Linux kullanıcıları için, işletim sisteminin kalbine gömülü, süper güçlü bir sanallaştırma teknolojisi vardır: KVM (Kernel-based Virtual Machine).KVM, Linux çekirdeğini (Kernel) bir Type-1 Hypervisor'a dönüştürür. Yani Linux'un kendisi, doğrudan donanımı yöneten bir sanallaştırma katmanı olur. QEMU ise bu yapının donanım emülasyonunu (Disk, Ağ Kartı, USB) yapan araçtır. Bu ikili, AWS ve Google Cloud gibi devlerin altyapısını oluşturan güçtür. Bu makalede, KVM ile "Native" (doğal) performansa nasıl ulaşacağınızı inceleyeceğiz.
Mimarisi: QEMU ve KVM İşbirliği
Bu ikiliyi Batman ve Robin gibi düşünebilirsiniz:- KVM (Kernel Modu): İşlemciyi (CPU) ve belleği (RAM) yönetir. Intel VT-x veya AMD-V teknolojilerini kullanarak sanal makinenin kodlarını doğrudan fiziksel işlemci üzerinde çalıştırır. Hızın kaynağı budur.
- QEMU (Kullanıcı Modu): Geri kalan her şeyi (Disk, Ekran Kartı, Klavye, Ağ) taklit eder (Emülasyon).
Performansın Sırrı: VirtIO Sürücüleri
Eğer sanal makinenize "Ben Intel E1000 ağ kartıyım" derseniz, QEMU her veri paketini fiziksel karta çevirmek için uğraşır (Overhead).Ancak VirtIO kullanırsanız, sanal makine (Guest) sanal olduğunu "bilir". Veriyi işlemek için emülasyon yapmaz, doğrudan Hypervisor ile konuşan özel bir kanal kullanır.- VirtIO Network: 10 Gbps ve üzeri hızlara ulaşabilir.
- VirtIO SCSI/Block: Disk yazma hızını neredeyse fiziksel disk hızına (NVMe) eşitler.
- İpucu: Windows sanal makineler kurarken, kurulum sırasında mutlaka "VirtIO Windows Drivers" ISO dosyasını bağlayıp sürücüleri yüklemelisiniz. Yoksa diskleri göremezsiniz.
Yönetim Araçları: Libvirt ve Virt-Manager
QEMU komutları (qemu-system-x86_64 ...) ile uğraşmak zordur. Bu yüzden Libvirt kütüphanesi ve onun grafik arayüzü olan Virt-Manager kullanılır.- Virt-Manager: VirtualBox benzeri bir arayüzdür. KVM makinelerini oluşturmak, ayarlarını değiştirmek ve ekranını görmek için kullanılır.
- Virsh: Komut satırı aracıdır. virsh list, virsh start vm1 gibi komutlarla sistemi yönetir.
İleri Seviye Performans Ayarları (Tuning)
KVM'i varsayılan ayarlarla kullanmak, Ferrari'yi 2. viteste sürmek gibidir. Tam performans için:1. CPU Pinning (İşlemci Sabitleme)
Normalde sanal makinenin iş parçacıkları (Threads), fiziksel işlemcinin çekirdekleri arasında rastgele gezinir. Bu geçişler (Context Switching) önbellek (Cache) performansını düşürür.- Çözüm: Sanal makinenin vCPU'sunu, fiziksel çekirdeğe "çivilemek" (Pinning). Böylece o çekirdek sadece o sanal makineye hizmet eder.
2. Hugepages
İşletim sistemleri belleği 4KB'lık sayfalar (Pages) halinde yönetir. 64GB RAM kullanan bir sanal makine için milyonlarca sayfa tablosu gerekir ve bu işlemciyi yorar.- Çözüm: Sayfa boyutunu 2MB veya 1GB'a çıkarmak (Hugepages). Bu, bellek yönetim yükünü %10-15 azaltır.