Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure sanal makinelerinin (VM) ağ aktarım hızı için daha iyi hale getirilebilen varsayılan ağ ayarları vardır. Bu makalede Ubuntu ve Red Hat gibi büyük dağıtımlar dahil olmak üzere Windows ve Linux VM'leri için ağ aktarım hızının nasıl iyileştirilmeye başlandığı açıklanır.
Windows sanal makineleri
Windows VM'niz hızlandırılmış ağı destekliyorsa, en iyi aktarım hızı için bu özelliği etkinleştirin. Daha fazla bilgi için bkz . Hızlandırılmış ağ ile Windows VM oluşturma.
Diğer tüm Windows VM'leri için Alma Tarafı Ölçeklendirmesi (RSS) kullanmak RSS içermeyen bir VM'den daha yüksek maksimum aktarım hızına ulaşabilir. RSS bir Windows VM'de varsayılan olarak devre dışı bırakılmış olabilir. RSS'nin etkinleştirilip etkinleştirilmediğini denetlemek ve etkinleştirmek için şu adımları izleyin:
Get-NetAdapterRss PowerShell komutuyla bir ağ bağdaştırıcısı için RSS'nin etkinleştirilip etkinleştirilmediğini görün. Aşağıdaki örnekte, RSS'den
Get-NetAdapterRss
döndürülen çıkış etkinleştirilmedi.Name : Ethernet InterfaceDescription : Microsoft Hyper-V Network Adapter Enabled : False
RSS'yi etkinleştirmek için aşağıdaki komutu girin:
Get-NetAdapter | % {Enable-NetAdapterRss -Name $_.Name}
Bu komutun çıkışı yok. Komut, ağ arabirimi kartı (NIC) ayarlarını değiştirir. Yaklaşık bir dakika boyunca geçici bağlantı kaybına neden olur. Bağlantı kaybı sırasında Yeniden Bağlanma iletişim kutusu görüntülenir. Bağlantı genellikle üçüncü denemeden sonra geri yüklenir.
Komutunu yeniden girerek VM'de RSS'nin
Get-NetAdapterRss
etkinleştirildiğini onaylayın. Başarılı olursa aşağıdaki örnek çıkış döndürülür:Name : Ethernet InterfaceDescription : Microsoft Hyper-V Network Adapter Enabled : True
Linux sanal makineleri
RSS, Azure'daki bir Linux Sanal Makinesinde (VM) her zaman varsayılan olarak etkinleştirilir. Ekim 2017'den bu yana yayımlanan Linux çekirdekleri, Linux VM'lerinin daha yüksek ağ aktarım hızı elde etmelerini sağlayan yeni ağ iyileştirme seçenekleri içerir.
En iyi aktarım hızı için Azure Hızlandırılmış Ağ'ı etkinleştirme
Azure, ağ performansını, gecikme süresini ve değişim durumunu gerçekten geliştirebilen hızlandırılmış ağ sağlar. Şu anda sanal makine boyutuna bağlı olarak kullanılan iki farklı teknoloji vardır: Geniş kullanılabilir Mellanox ve Microsoft tarafından geliştirilen MANA .
Azure Ayarlanmış Çekirdekler
Ubuntu (Canonical) ve SUSE gibi bazı dağıtımlarda Azure tarafından ayarlanmış çekirdekler bulunur.
Azure çekirdeğini kullandığınızdan emin olmak için, genellikle adında azure
dizesi bulunan, aşağıdaki komutu kullanın.
uname -r
#sample output on Azure kernel on a Ubuntu Linux VM
6.8.0-1017-azure
Diğer Linux dağıtımları
Modern dağıtımların çoğunda yeni çekirdeklerle ilgili önemli geliştirmeler vardır. 4.19'dan yeni bir çekirdek çalıştırdığınızdan emin olmak için geçerli çekirdek sürümünü denetleyin. Bu çekirdek ağ üzerinde bazı büyük geliştirmeler içerir, örneğin BBR Congestion-Based Tıkanıklık Denetimi desteği.
Azure'da Linux VM'lerinde tutarlı aktarım hızları elde etme
Linux VM'leri genellikle özellikle Batı Avrupa ve Batı ABD gibi bölgeler arasında büyük dosyaları (1 GB ila 50 GB) aktarırken ağ performansı sorunlarıyla karşılaşır. Bu sorunlara eski çekirdek sürümlerinin yanı sıra varsayılan çekirdek yapılandırmaları, varsayılan ağ arabelleği ayarları ve gecikmeli paketler, sınırlı aktarım hızı ve verimsiz kaynak kullanımına neden olan varsayılan tıkanıklık denetimi algoritmaları neden olur.
Tutarlı ağ performansı elde etmek için Azure'da birçok durumda etkili olduğu kanıtlanmış aşağıdaki iyileştirmeleri uygulamayı göz önünde bulundurun:
-
Ağ arabelleği ayarları: Okuma ve yazma bellek arabelleklerini en üst düzeye çıkarmak için çekirdek parametrelerini ayarlayın. Bu yapılandırmaları
/etc/sysctl.d/99-azure-network-buffers.conf
içine ekleyin.
net.ipv4.tcp_mem = 4096 87380 67108864
net.ipv4.udp_mem = 4096 87380 33554432
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
net.core.rmem_default = 33554432
net.core.wmem_default = 33554432
net.ipv4.udp_wmem_min = 16384
net.ipv4.udp_rmem_min = 16384
net.core.wmem_max = 134217728
net.core.rmem_max = 134217728
net.core.busy_poll = 50
net.core.busy_read = 50
-
4.19 ve üzeri çekirdekler içinCongestion-Based Tıkanıklık denetimi: Darboğaz Bant Genişliği ve Gidiş dönüş yayılma süresi (BBR) tıkanıklık denetiminin etkinleştirilmesi genellikle daha iyi verime neden olabilir. Bu yapılandırmayı
/etc/sysctl.d/99-azure-congestion-control.conf
içine ekleyin.
net.ipv4.tcp_congestion_control = bbr
-
Genellikle daha iyi tutarlılık ve aktarım hızına yardımcı olacak ek TCP parametreleri: Bu yapılandırmaları öğesine
/etc/sysctl.d/99-azure-network-extras.conf
ekleyin:
# For deployments where the Linux VM is BEHIND an Azure Load Balancer, timestamps MUST be set to 0
net.ipv4.tcp_timestamps = 1
# Reuse does require tcp_timestamps to be enabled. If tcp_timestamps are disabled because of load balancers, you should set reuse to 2.
net.ipv4.tcp_tw_reuse = 1
# Allowed local port range. This will increase the number of locally available ports (source ports)
net.ipv4.ip_local_port_range = 1024 65535
# Maximum number of packets taken from all interfaces in one polling cycle (NAPI poll). In one polling cycle interfaces which are # registered to polling are probed in a round-robin manner.
net.core.netdev_budget = 1000
# For high-performance environments, it's recommended to increase from the default 20KB to 65KB, in some extreme cases, for environments that support 100G+ networking, you can
# increase it to 1048576
net.core.optmem_max = 65535
# F-RTO is not recommended on wired networks.
net.ipv4.tcp_frto = 0
# Increase the number of incoming connections / number of connections backlog
net.core.somaxconn = 32768
net.core.netdev_max_backlog = 32768
net.core.dev_weight = 64
-
Kuyruk uzmanlık alanı (qdisc): Azure'da paket işleme, varsayılan qdisc
fq
olarak ayarlanarak geliştirildi. Bu yapılandırmayı/etc/sysctl.d/99-azure-qdisc.conf
içine ekleyin.
net.core.default_qdisc = fq
-
NIC halkası arabelleklerini TX/RX için iyileştirme: Ağ arabirimlerine uygulandığından emin olmak için içinde
/etc/udev/rules.d/99-azure-ring-buffer.rules
bir udev kuralı oluşturun:
# Setup Accelerated Interface ring buffers (Mellanox / Mana)
SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION=="add", RUN+="/usr/sbin/ethtool -G $env{INTERFACE} rx 1024 tx 1024"
# Setup Synthetic interface ring buffers (hv_netvsc)
SUBSYSTEM=="net", DRIVERS=="hv_netvsc*", ACTION=="add", RUN+="/usr/sbin/ethtool -G $env{INTERFACE} rx 1024 tx 1024"
- qdisc'nin ağ arabirimlerine uygulandığından emin olmak için içinde
/etc/udev/rules.d/99-azure-qdisc.rules
bir udev kuralı oluşturun:
ACTION=="add|change", SUBSYSTEM=="net", KERNEL=="enP*", PROGRAM="/sbin/tc qdisc replace dev \$env{INTERFACE} root noqueue"
ACTION=="add|change", SUBSYSTEM=="net", KERNEL=="eth*", PROGRAM="/sbin/tc qdisc replace dev \$env{INTERFACE} root fq“
-
Kesme İsteği (IRQ) zamanlaması: İş yükünüze bağlı olarak, irqbalance hizmetinin belirli düğümlerde IRQ'ları planlamasını kısıtlamak isteyebilirsiniz. IRQBalance kullanırken, hangi CPU'lara IRQ atanmaması gerektiğini belirleyecek şekilde
/etc/default/irqbalance
'i güncelleyebilirsiniz. Dışlanması gereken CPU'ları dışlayacak maskeyi belirlemeniz gerekir.
Maske hesaplama hakkında daha fazla bilgi burada mevcuttur.
Aşağıdaki örnekte 8-15 ARASı CPU'ları dışlamak istediğiniz varsayılır
IRQBALANCE_BANNED_CPULIST=0000ff00
-
UDEV kuralları: Kuyruk uzunluğunu iyileştirmek ve cihaz bayraklarını verimli bir şekilde yönetmek için kurallar ekleyin. içinde
/etc/udev/rules.d/99-azure-txqueue-len.rules
aşağıdaki kuralı oluşturun:
SUBSYSTEM=="net", ACTION=="add|change", KERNEL=="eth*", ATTR{tx_queue_len}="10000“
İki kez geciken paketler için
Linux performans ağı söz konusu olduğunda SR-IOV Mellanox sürücüleriyle (mlx4 veya mlx5) kullanırız. Azure'a özgü bir şey, bunun yapay ve sanal arabirim olmak üzere iki arabirim oluşturmasıdır. Daha fazla bilgi edinin.
Ek Notlar
Sistem yöneticileri, , /etc/sysctl.d/
ve /etc/modules-load.d/
gibi /etc/udev/rules.d/
yapılandırma dosyalarını düzenleyerek bu çözümleri uygulayabilir. Çekirdek sürücüsü güncelleştirmelerinin ve sistemli yapılandırmaların olası regresyonlar için gözden geçirildiğinden emin olun.
Belirli yapılandırmalar ve sorun giderme hakkında daha fazla bilgi için ağ performansıyla ilgili Azure belgelerine bakın.
İlgili içerik
- Yakınlık yerleştirme gruplarıyla düşük gecikme süresi için VM'leri birbirine yakın dağıtın.
- Senaryonuz için Bant Genişliği/Aktarım Hızı testi ile en iyi duruma getirilmiş sonucu görün.
- Bant genişliğinin sanal makinelere nasıl ayrıldığı hakkında bilgi edinin.
- Azure Sanal Ağ sık sorulan sorular hakkında daha fazla bilgi edinin.