Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Proxmox'ta Ağ Performansını Artırma: VirtIO NIC Ayarları ve Çok Kuyruklu (Multiqueue) Yapılandırması

✖ Kapat
Duyuru
✖ Kapat
Duyuru

devnix

Okur Üye
Üye
Katılım
14 Mart 2026
Mesajlar
69
Merhaba arkadaşlar, bugün sizlere özellikle yüksek ağ trafiği olan Proxmox sunucularınızda sanal makinelerinizin (VM) ağ performansını ciddi anlamda artırabileceğiniz bir konfigürasyondan bahsedeceğim. VirtIO ağ sürücüleri zaten performans için standart, ama çok kuyruklu (multiqueue) özelliğini aktif etmek, CPU çekirdeklerinizi daha verimli kullanarak paket işleme hızınızı katlayabilir. Özellikle dosya sunucusu, yüksek trafikli web sunucusu veya yedekleme altyapınız varsa bu ayarlar tam size göre.

🔍 Multiqueue (Çok Kuyruk) Nedir ve Ne İşe Yarar?

Normalde bir VM'nin ağ kartı (NIC) için gelen ve giden paketler tek bir işlem kuyruğunda (queue) işlenir. Bu da tek bir CPU çekirdeğini meşgul eder. Multiqueue özelliği aktif edildiğinde ise, birden fazla kuyruk oluşturulur ve bu kuyruklar farklı CPU çekirdeklerine dağıtılabilir. Böylece ağ yükü, mevcut CPU kaynaklarınıza paralel olarak paylaştırılır ve darboğazlar ortadan kalkar. Performans artışı, özellikle çok çekirdekli sunucularda gözle görülür seviyededir.

⚙️ Adım Adım Multiqueue Yapılandırması

Öncelikle, bu ayarı yapacağınız sanal makinenin DURDURULMUŞ olması gerekiyor. Çalışan bir VM'de bu değişiklikleri yapamazsınız.

İlk adım, VM'nizin donanım ayarlarına girip mevcut ağ aygıtınızı kontrol etmek. Ağ aygıtı modelinizin VirtIO (paravirtualized) olduğundan emin olun. Eğer değilse, önce bunu değiştirmelisiniz.

Şimdi, Proxmox web arayüzünden veya komut satırından bu ayarı aktif edelim. Ben genelde komut satırını tercih ederim, daha hızlı ve kontrollü oluyor. VM'nizin ID'sini bilmeniz gerekiyor (örneğin 101).

Bash:
qm set <VM_ID> -args "-device virtio-net-pci,mac=XX:XX:XX:XX:XX:XX,netdev=hostnet0,vectors=8,mq=on"

Bu komutta dikkat etmeniz gereken iki önemli parametre var:
- vectors: Bu, toplam MSI-X vektör sayısıdır. Kural olarak, vectors = (kuyruk sayısı 2) + 2 şeklinde hesaplanır. 4 kuyruk için vectors=10, 8 kuyruk için vectors=18 gibi.
- mq=on: Çok kuyruk özelliğini açar.

Ancak, Proxmox GUI üzerinden de yapabilirsiniz. VM > Donanım > Ağ Aygıtı'nı seçip "Gelişmiş" butonuna tıklayın. "Çok Kuyruklu (Multiqueue)" seçeneğini aktifleştirin ve "Kuyruk Sayısı"nı girin (örneğin 4 veya 8). Arka planda yukarıdaki komutu sizin için oluşturacaktır.

🐧 VM İçi (Guest) Linux Ayarları

Sadece Hypervisor (Proxmox) tarafında ayar yapmak yetmez. Sanal makinenizin içindeki işletim sisteminde de bu kuyrukları tanımlamalısınız. Linux için bu oldukça basit.

Öncelikle, mevcut ağ arayüzünüzün adını öğrenin (genelde ens18, eth0 gibidir).

Bash:
ip link show

Şimdi, bu arayüz için kuyruk sayısını değiştirelim. Aşağıdaki komutta ens18 kısmını kendi arayüz adınızla değiştirin ve 4 yerine Proxmox tarafında ayarladığınız kuyruk sayısını yazın.

Bash:
sudo ethtool -L ens18 combined 4

Bu ayarın kalıcı olması için, sistem açılışında uygulanacak şekilde yapılandırmak en iyisidir. Bunun için /etc/rc.local dosyasını veya systemd serveti oluşturabilirsiniz. Ben pratik olarak network manager dispatcher script'i kullanıyorum:

/etc/NetworkManager/dispatcher.d/99-multiqueue dosyasını oluşturun ve içine şunları yazın:

Bash:
#!/bin/bash
INTERFACE="ens18"
if [ "$1" = "$INTERFACE" ] && [ "$2" = "up" ]; then
    /sbin/ethtool -L $INTERFACE combined 4
fi

Dosyaya çalıştırma izni verin:

Bash:
sudo chmod +x /etc/NetworkManager/dispatcher.d/99-multiqueue

⚠️ Dikkat Edilmesi Gerekenler ve Sınırlamalar

Bu ayarları yaparken birkaç kritik noktaya dikkat etmelisiniz:
1. VM Durdurulmalı: Donanım ayarını değiştirmek için VM kapalı olmalı.
2. CPU Çekirdek Sayısı: Ayarladığınız kuyruk sayısı, VM'ye atanmış CPU çekirdek sayısını geçmemeli. Hatta daha az olması daha dengeli olabilir.
3. Destek Kontrolü: VM içindeki işletim sisteminizin ve kernel'in multiqueue'yu desteklediğinden emin olun. Modern Linux dağıtımları destekliyor.
4. Fiziksel NIC Desteği: Altındaki fiziksel sunucunuzun NIC'i ve sürücüsü de bu özelliği desteklemeli. Çoğu modern NIC destekler.
5. Performans Testi: Ayarlardan sonra mutlaka iperf3 gibi bir araçla önce-sonra performans testi yapın. Gözle görülür bir fark göreceksiniz.

📈 Sonuç ve Performans Beklentisi

Doğru yapılandırıldığında, özellikle 10Gbps ve üzeri ağ bağlantılarında, paket işleme gecikmesi (latency) azalır ve toplam bant genişliği kullanımınız artar. CPU kullanımı daha dengeli dağılır ve tek bir çekirdeğin %100 olup diğerlerinin boş kalması engellenir.

Ben kendi sunucularımda, yüksek trafik alan VM'lerde genelde 4 veya 8 kuyruk kullanıyorum. Fiziksel çekirdek sayısına ve iş yüküne göre bu sayıyı ayarlamak gerekiyor.

Umarım bu detaylı rehber işinize yarar. Siz bu konfigürasyonu kendi sunucularınızda nasıl yapıyorsunuz? Farklı bir yönteminiz veya eklemek istediğiniz bir püf noktası var mı? Ya da uygularken bir sorunla karşılaştınız mı? Aşağıya yorum olarak yazabilirsiniz, birlikte çözelim.
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri