Linux sanal makinelerinde büyük ölçekte veri transferi gerçekleştirirken TCP performans sorunlarıyla karşılaşmak mümkün olabilir. Bunun başlıca sebeplerinden biri VMXNET2 (Enhanced) ve VMXNET3 ağ cihazlarında varsayılan olarak etkin olan Large Receive Offload (LRO) özelliğidir.
Bu makalede LRO’nun Linux sanal makinelerinde TCP performansına etkileri ve bu durumu iyileştirmek için uygulanabilecek çözümler ele alınacaktır.
RO ve TCP Performansı
LRO ağ performansını iyileştirmek için kullanılan bir teknolojidir. Ancak Linux TCP/IP stack belirli senaryolarda LRO tarafından oluşturulan paketleri işlerken performans düşüklüğü yaşayabilir. Bunun sonucunda LRO’nun etkin olduğu Linux sanal makinelerinde TCP performansı olumsuz etkilenebilir.
Etkilenen Sistemler
Bu sorun aşağıdaki VMware ESXi ve vSphere sürümleriyle çalışan sanal makineleri etkileyebilir:
- VMware ESXi 4.0.x ve 4.1.x (Installable ve Embedded)
- VMware ESX 4.0.x ve 4.1.x
- VMware vSphere ESXi 5.0, 5.1, 5.5, 6.0 ve 6.5
Çözüm: LRO’nun Devre Dışı Bırakılması
Linux Sanal Sunucu İşletim Sisteminde LRO’nun Devre Dışı Bırakılması
VMXNET3 sanal ağ cihazlarını kullanan ve Linux çekirdeği 2.6.24 veya daha büyük bir sürümle çalışan sanal makinelerde LRO’yu devre dışı bırakmak için ethtool komutu kullanılabilir:
# ethtool -K ethX lro off
Örnek:
# ethtool -K eth0 lro off
Not: Bu değişiklik yeniden başlatmalarda kalıcı olmaz. Değişikliğin kalıcı olması için rc.local dosyasına eklenmelidir. Daha eski Linux çekirdekleri veya VMXNET2 kullanılıyorsa ağa yüklenen modül için disable_lro=1 parametresi belirlenmelidir.
Adımlar:
- /etc/modules veya /etc/modules.conf dosyasını bir düzenleyici ile açın.
- VMXNET veya VMXNET3 için alias girdisini bulun:
alias eth0 vmxnet alias eth0 vmxnet3
- LRO’yu devre dışı bırakacak şu satırı ekleyin:
options vmxnet disable_lro=1 options vmxnet3 disable_lro=1
- Dosyayı kaydedin ve Linux sanal makinesini yeniden başlatın.
Alternatif olarak, /etc/rc.local dosyasına aşağıdaki komutlar eklenerek LRO devre dışı bırakılabilir:
rmmod vmxnet
modprobe vmxnet disable_lro=1
veya
rmmod vmxnet3
modprobe vmxnet3 disable_lro=1
Dosyayı kaydedin ve sanal makineyi yeniden başlatın.
VMware ESXi Sunucusunda LRO’nun Devre Dışı Bırakılması
LRO özelliği ESXİ sunucularında aşağıdaki adımlarla devre dışı bırakılabilir:
- vSphere Client ile ESXi sunucusuna veya vCenter Server’a giriş yapın.
- Configuration sekmesine giderek Advanced Settings bölümünü açın.
- Net sekmesine giderek Vmxnet ile başlayan parametreleri bulun.
- Aşağıdaki parametreleri 1’den 0’a düşürün:
- Net.VmxnetSwLROSL
- Net.Vmxnet3SwLRO
- Net.Vmxnet3HwLRO
- Net.Vmxnet2SwLRO
- Net.Vmxnet2HwLRO
- ESXi sunucusunu bu işlemlerden sonra MUTLAKA yeniden başlatınız.
NOT : Linux sanal makinesinde promiscuous mode kullanımı LRO’yu otomatik olarak devre dışı bıraktığı için performans sorunlarını gidermeye yardımcı olabilir.