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 makinelerin (VM) aktarım hızını ve tutarlılığı geliştirmek için iyileştirilebilen varsayılan ağ ayarları vardır. Bu makalede, Windows ve Linux VM'leri için ağ performansını iyileştirme açıklanmaktadır.
Important
Bu makalede açıklanan iyileştirmelerin çoğu (örneğin, tıkanıklık denetimi, kuyruk disiplini, arabellek boyutları ve NIC ayarlaması) sistemler arasındaki trafiğin akışını etkiler.
En iyi sonuçları elde için aşağıdakiler dahil olmak üzere iş yüküne katılan tüm sanal makinelere bu ayarları tutarlı bir şekilde uygulayın:
- İstemci sistemleri
- Sunucu sistemleri
Bu yapılandırmaların yalnızca bir sanal makine alt kümesine uygulanması şunlara yol açabilir:
- Tutarsız aktarım hızı
- Paket yeniden iletimleri artırıldı
- Optimal olmayan tıkanıklık davranışı
Veri yolunun tamamında değişiklikleri her zaman doğrulayın ve performansı uçtan uca test edin.
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'ler için Alma Tarafı Ölçeklendirmesi (RSS), RSS olmayan bir VM'den daha yüksek aktarım hızı sağlayabilir. RSS 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 komutunu kullanarak ağ bağdaştırıcısı için RSS'nin etkinleştirilip etkinleştirilmediğini denetleyin. Aşağıdaki örnekte,
Get-NetAdapterRssçıktısı RSS'nin etkin olmadığını gösterir.Name : Ethernet InterfaceDescription : Microsoft Hyper-V Network Adapter Enabled : FalseRSS'yi etkinleştirmek için aşağıdaki komutu girin:
Get-NetAdapter | % {Enable-NetAdapterRss -Name $_.Name}Bu komutun çıkışı yok. Ağ arabirim kartı (NIC) ayarlarını değiştirir ve 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-NetAdapterRssetkinleş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 Linux sanal makinelerinde (VM) varsayılan olarak etkindir. Ekim 2017'den bu yana yayımlanan Linux çekirdekleri, Linux VM'lerinin daha yüksek aktarım hızı elde etmelerine yardımcı olan ek ağ iyileştirme seçenekleri içerir.
En iyi aktarım hızı için Azure Hızlandırılmış Ağ'ı etkinleştirme
Azure Hızlandırılmış Ağ, aktarım hızını önemli ölçüde artırabilir, gecikme süresini ve değişim süresini azaltabilir. VM boyutuna ve platform oluşturma işlemine bağlı olarak Azure iki teknolojiden birini kullanır: yaygın olarak kullanılabilen Mellanox ve Microsoft tarafından geliştirilen MANA.
Azure için ayarlanmış çekirdekler
Ubuntu (Canonical) ve SUSE gibi bazı dağıtımlar, Azure için ayarlanmış çekirdekler sunar.
Genellikle çekirdek adında bulunan azure Azure çekirdeğini kullandığınızı doğrulamak için aşağıdaki komutu kullanın.
uname -r
# Sample output for an Azure kernel on an Ubuntu Linux VM
6.8.0-1017-azure
Diğer Linux dağıtımları
Modern dağıtımların çoğu, daha yeni çekirdeklerde önemli ağ geliştirmeleri içerir. Çekirdek sürümünüzü denetleyin ve mümkün olduğunda 4.19 veya üzerini kullanın. Daha yeni çekirdekler daha iyi ağ davranışı içerir ve BBR gibi modern tıkanıklık denetimi seçeneklerini destekler.
Azure'da Linux VM'lerinde tutarlı aktarım hızları elde etme
Linux VM'leri özellikle büyük bölgesel aktarımlarda (örneğin, Batı Avrupa ile Batı ABD arasında 1 GB ila 50 GB) tutarsız aktarım hızları gösterebilir. Yaygın nedenler arasında eski çekirdekler, varsayılan arabellek boyutları ve ayarlanmamış tıkanıklık denetimi veya kuyruk disiplini ayarları yer alır.
Daha tutarlı aktarım hızı elde etmek için aşağıdaki temel ayarlamayı uygulayın ve ardından iş yükünüz için tıkanıklık/qdisc birleşimlerini test edin.
Temel sysctl ayarları (kopyala-yapıştır)
Aşağıdaki temel sysctl ayarlarını uygulayın:
sudo tee /etc/sysctl.d/99-azure-network-tuning.conf > /dev/null <<'EOF'
# Buffer and memory tuning
# Overall TCP memory pressure thresholds (min, pressure, max pages)
net.ipv4.tcp_mem = 4096 87380 67108864
# Overall UDP memory pressure thresholds (min, pressure, max pages)
net.ipv4.udp_mem = 4096 87380 33554432
# Per-socket TCP read buffer limits (min, default, max bytes)
net.ipv4.tcp_rmem = 4096 87380 67108864
# Per-socket TCP write buffer limits (min, default, max bytes)
net.ipv4.tcp_wmem = 4096 65536 67108864
# Default socket receive buffer size in bytes
net.core.rmem_default = 33554432
# Default socket send buffer size in bytes
net.core.wmem_default = 33554432
# Minimum UDP send buffer per socket in bytes
net.ipv4.udp_wmem_min = 16384
# Minimum UDP receive buffer per socket in bytes
net.ipv4.udp_rmem_min = 16384
# Maximum socket send buffer size in bytes
net.core.wmem_max = 134217728
# Maximum socket receive buffer size in bytes
net.core.rmem_max = 134217728
# Busy polling time in microseconds for low-latency packet receive
net.core.busy_poll = 50
# Busy read time in microseconds when polling sockets
net.core.busy_read = 50
# Extra TCP and networking settings
# Enable TCP timestamps for RTT measurement and PAWS protection
net.ipv4.tcp_timestamps = 1
# Allow safer TIME-WAIT socket reuse for outbound connections
net.ipv4.tcp_tw_reuse = 1
# Expand available ephemeral source port range
net.ipv4.ip_local_port_range = 1024 65535
# Increase packets processed per NAPI polling cycle
net.core.netdev_budget = 1000
# Increase per-socket ancillary/option memory limit in bytes
net.core.optmem_max = 65535
# Disable F-RTO (typically unnecessary on stable wired paths)
net.ipv4.tcp_frto = 0
# Increase maximum listen backlog for pending connections
net.core.somaxconn = 32768
# Increase ingress packet backlog queue length
net.core.netdev_max_backlog = 32768
# Increase per-CPU packet processing quota per softirq cycle
net.core.dev_weight = 64
EOF
sudo sysctl --system
Tıkanıklık denetimi ve qdisc testleri (sysctl)
Farklı iş yükleri farklı davranır. Bu birleşimleri test edin ve gecikme süresi, aktarım hızı ve yeniden iletim profiliniz için en iyi sonuçları vereni koruyun.
-
BBR + FQ (genellikle yüksek aktarım hızı ve uzun mesafeli aktarımlar için güçlü bir varsayılan değerdir)
sudo sysctl -w net.ipv4.tcp_congestion_control=bbr sudo sysctl -w net.core.default_qdisc=fq -
BBR + PFIFO_FAST (ani veya karışık trafik altında kuyruk davranışını karşılaştırmak için kullanışlıdır)
sudo sysctl -w net.ipv4.tcp_congestion_control=bbr sudo sysctl -w net.core.default_qdisc=pfifo_fast -
CUBIC + PFIFO_FAST (uyumluluk ve karşılaştırma için ortak eski temel)
sudo sysctl -w net.ipv4.tcp_congestion_control=cubic sudo sysctl -w net.core.default_qdisc=pfifo_fast
Her seçeneği temsili trafikle ölçün, ardından ortamınız için en iyi performansa sahip bileşimi kullanın.
Note
pfifo_fast kullanılabilirlik, dağıtıma/çekirdeke göre farklılık gösterebilir. Kullanılamıyorsa ortamınızda desteklenen en yakın qdisc seçeneğini kullanın ve karşılaştırmaya devam edin.
NIC halka arabellekleri için UDEV kuralı (TX/RX)
Ağ arabirimlerine halka arabelleği ayarlarını uygulamak için içinde /etc/udev/rules.d/99-azure-ring-buffer.rules bir udev kuralı oluşturun:
Hızlandırılmış Ağ arabirimleri için rx 4096 tx 4096 (hv_pci) kullanın ve sentetik rx 1024 tx 1024 arabirimleri için hv_netvsc koruyun.
Halka arabelleği ince ayarı için etkileşimli bir yaklaşım tercih ediyorsanız, şu yardımcı aracı da kullanabilirsiniz: Azure Linux NIC kurulumu (bash).
Note
Bu GitHub aracı isteğe bağlı bir yardımcıdır ve Microsoft Learn ürün belgelerinin bir parçası değildir. Geniş kapsamlı dağıtımdan önce betikleri gözden geçirin ve üretim dışı bir ortamdaki değişiklikleri test edin.
# Setup Accelerated Interface ring buffers (Mellanox / Mana)
SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION=="add", RUN+="/usr/sbin/ethtool -G $env{INTERFACE} rx 4096 tx 4096"
# 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"
NIC iletim kuyruğu uzunluğu için UDEV kuralı
İletim kuyruğu uzunluğunu artırmak için 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"
SR-IOV çift arabirimli davranışı ve yan etkileri
Linux'ta yüksek performanslı ağ iletişiminde Azure, SR-IOV kullanır (örneğin, mlx4 veya mlx5 gibi Mellanox sürücüleriyle). Bu modelde, aynı VM ağ yolu için hem yapay arabirimi hem de sanal işlev (VF) arabirimini görebilirsiniz.
Daha fazla bilgi edinin.
Bu tasarım beklenir, ancak her iki arabirim de bağımsız veri yolları olarak değerlendirilirse ayarlama ve sorun giderme sırasında karışıklık oluşturabilir.
Olası yan etkiler şunlardır:
- Ayarlar bir arabirime uygulandığında ancak trafik diğerini kullandığında tutarsız karşılaştırma sonuçları elde edilir.
- Sentetik ve VF yolları arasındaki yük devretme sırasında beklenmeyen gecikme sıçramaları veya yeniden iletimler.
- Sayaçlar ve paket yakalamaları yanlış arabirimden toplanırsa tanılamalar yanıltıcı olabilir.
Riski azaltmak için:
- Ayarlamadan önce hangi arabirimin iş yükü trafiğinizi taşıdığını doğrulayın.
- udev ve sysctl ayarlarını arabirim stratejinizle tutarlı tutun.
- Yeniden başlatma, sürücü güncelleştirmeleri veya hızlandırılmış ağ durumu değişiklikleri sonrasında aktarım hızını ve gecikme süresini yeniden test edin.
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 önerileri uygulayabilir. Regresyonları önlemek için çekirdek ve sürücü güncelleştirmelerini dikkatle gözden geçirin.
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.
- Sık sorulan Azure Sanal Ağ soruyu okuyun.