Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Azure komputer virtual (VM) memiliki pengaturan jaringan default yang dapat dioptimalkan untuk meningkatkan throughput dan konsistensi. Artikel ini menjelaskan cara mengoptimalkan performa jaringan untuk VM Windows dan Linux.
Important
Banyak pengoptimalan yang dijelaskan dalam artikel ini (misalnya, kontrol kemacetan, disiplin antrean, ukuran buffer, dan penyetelan NIC) memengaruhi bagaimana arus lalu lintas antar sistem.
Untuk hasil terbaik, terapkan pengaturan ini secara konsisten di semua komputer virtual yang berpartisipasi dalam beban kerja, termasuk:
- Sistem klien
- Sistem server
Menerapkan konfigurasi ini hanya ke subset komputer virtual yang dapat menyebabkan:
- Laju transfer yang tidak konsisten
- Peningkatan pengiriman ulang paket
- Perilaku kemacetan suboptimal
Selalu validasi perubahan di seluruh jalur data dan uji performa end-to-end.
Mesin virtual Windows
Jika VM Windows Anda mendukung jaringan yang dipercepat, aktifkan fitur tersebut untuk throughput yang optimal. Untuk informasi selengkapnya, lihat Membuat VM Windows dengan jaringan yang dipercepat.
Untuk semua VM Windows lainnya, Receive Side Scaling (RSS) dapat memberikan throughput maksimum yang lebih tinggi daripada VM tanpa RSS. RSS mungkin dinonaktifkan secara default. Untuk memeriksa apakah RSS diaktifkan dan mengaktifkannya, ikuti langkah-langkah berikut:
Periksa apakah RSS diaktifkan untuk adaptor jaringan dengan menggunakan perintah PowerShell Get-NetAdapterRss . Dalam contoh berikut, output dari
Get-NetAdapterRssmenunjukkan bahwa RSS tidak diaktifkan.Name : Ethernet InterfaceDescription : Microsoft Hyper-V Network Adapter Enabled : FalseUntuk mengaktifkan RSS, masukkan perintah berikut:
Get-NetAdapter | % {Enable-NetAdapterRss -Name $_.Name}Perintah ini tidak memiliki output. Ini mengubah pengaturan kartu antarmuka jaringan (NIC) dan menyebabkan hilangnya konektivitas sementara selama sekitar satu menit. Dialog Menyambungkan Kembali muncul saat kehilangan konektivitas. Konektivitas biasanya dipulihkan setelah upaya ketiga.
Pastikan bahwa RSS diaktifkan dalam VM dengan memasukkan perintah
Get-NetAdapterRsslagi. Jika berhasil, contoh output berikut muncul kembali:Name : Ethernet InterfaceDescription : Microsoft Hyper-V Network Adapter Enabled : True
Mesin virtual Linux
RSS diaktifkan secara default di komputer virtual Linux (VM) di Azure. Kernel Linux yang dirilis sejak Oktober 2017 mencakup opsi pengoptimalan jaringan tambahan yang membantu VM Linux mencapai throughput yang lebih tinggi.
Mengaktifkan Azure Accelerated Networking untuk mendapatkan throughput optimal
Azure Accelerated Networking dapat secara signifikan meningkatkan throughput dan mengurangi latensi dan jitter. Tergantung pada ukuran VM dan pembuatan platform, Azure menggunakan salah satu dari dua teknologi: Mellanox, yang tersedia secara luas, dan MANA, yang dikembangkan oleh Microsoft.
kernel Azure yang dioptimalkan
Beberapa distribusi, seperti Ubuntu (Canonical) dan SUSE, menyediakan kernel yang disetel Azure.
Gunakan perintah berikut untuk memverifikasi bahwa Anda menggunakan kernel Azure, yang biasanya disertakan azure dalam nama kernel.
uname -r
# Sample output for an Azure kernel on an Ubuntu Linux VM
6.8.0-1017-azure
Distribusi Linux lainnya
Sebagian besar distribusi modern termasuk peningkatan jaringan utama di kernel yang lebih baru. Periksa versi kernel Anda dan gunakan 4.19 atau yang lebih baru jika memungkinkan. Kernel yang lebih baru mencakup perilaku jaringan yang lebih baik dan mendukung opsi kontrol kemacetan modern seperti BBR.
Mencapai kecepatan transfer yang konsisten di VM Linux di Azure
VM Linux dapat menunjukkan kecepatan transfer yang tidak konsisten, terutama selama transfer regional besar (misalnya, 1 GB hingga 50 GB antara Eropa Barat dan AS Barat). Penyebab umum meliputi kernel versi lama, ukuran buffer bawaan, serta pengaturan pengendalian kemacetan atau disiplin antrean yang belum disetel dengan tepat.
Untuk mendapatkan throughput yang lebih konsisten, terapkan penyetelan garis besar berikut lalu uji kombinasi kemacetan/qdisc untuk beban kerja Anda.
Penyesuaian dasar sysctl (salin/tempel)
Terapkan pengaturan sysctl garis besar berikut:
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
Kontrol kemacetan dan pengujian qdisc (sysctl)
Beban kerja yang berbeda berperilaku secara berbeda. Uji kombinasi ini dan pertahankan kombinasi yang memberikan hasil terbaik untuk latensi, throughput, dan profil transmisi ulang Anda.
-
BBR + FQ (sering menjadi pilihan bawaan yang baik untuk transfer data berthroughput tinggi dan jarak jauh)
sudo sysctl -w net.ipv4.tcp_congestion_control=bbr sudo sysctl -w net.core.default_qdisc=fq -
BBR + PFIFO_FAST (berguna untuk membandingkan perilaku antrean saat menghadapi lalu lintas dalam lonjakan atau lalu lintas campuran)
sudo sysctl -w net.ipv4.tcp_congestion_control=bbr sudo sysctl -w net.core.default_qdisc=pfifo_fast -
CUBIC + PFIFO_FAST (garis besar warisan umum untuk kompatibilitas dan perbandingan)
sudo sysctl -w net.ipv4.tcp_congestion_control=cubic sudo sysctl -w net.core.default_qdisc=pfifo_fast
Ukur setiap opsi dengan lalu lintas representatif, lalu gunakan kombinasi berkinerja terbaik untuk lingkungan Anda.
Note
pfifo_fast ketersediaan dapat bervariasi menurut distro/kernel. Jika tidak tersedia, gunakan opsi qdisc terdekat yang didukung di lingkungan Anda dan lanjutkan pengujian tolok ukur.
Aturan UDEV untuk buffer cincin NIC (TX/RX)
Buat aturan udev di /etc/udev/rules.d/99-azure-ring-buffer.rules untuk menerapkan pengaturan buffer cincin ke antarmuka jaringan:
Gunakan rx 4096 tx 4096 untuk antarmuka Accelerated Networking (hv_pci) dan simpan rx 1024 tx 1024 untuk antarmuka sintetis hv_netvsc .
Jika Anda lebih menyukai pendekatan interaktif untuk penyetelan ring buffer, Anda juga dapat menggunakan alat bantu ini: Penyiapan NIC Azure Linux (bash).
Note
Alat GitHub ini adalah pembantu opsional dan bukan bagian dari dokumentasi produk Microsoft Learn. Tinjau skrip dan uji perubahan di lingkungan non-produksi sebelum peluncuran luas.
# 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"
Aturan UDEV untuk panjang antrean transmisi NIC
Buat aturan berikut di /etc/udev/rules.d/99-azure-txqueue-len.rules untuk meningkatkan panjang antrean transmisi:
SUBSYSTEM=="net", ACTION=="add|change", KERNEL=="eth*", ATTR{tx_queue_len}="10000"
Perilaku antarmuka ganda dan efek samping SR-IOV
Di jaringan berkinerja tinggi Linux, Azure menggunakan SR-IOV (misalnya, dengan driver Mellanox seperti mlx4 atau mlx5). Dalam model ini, Anda dapat melihat antarmuka sintetis dan antarmuka fungsi virtual (VF) untuk jalur jaringan VM yang sama.
Pelajari lebih lanjut.
Desain ini diharapkan, tetapi dapat menciptakan kebingungan selama penyetelan dan pemecahan masalah jika kedua antarmuka diperlakukan sebagai jalur data independen.
Kemungkinan efek samping meliputi:
- Hasil tolok ukur yang tidak konsisten ketika pengaturan diterapkan ke satu antarmuka tetapi lalu lintas menggunakan yang lain.
- Lonjakan latensi tak terduga atau transmisi ulang selama failover antara jalur sintetis dan VF.
- Diagnostik yang menyesatkan jika penghitung dan pengambilan paket dikumpulkan dari antarmuka yang salah.
Untuk mengurangi risiko:
- Pastikan antarmuka mana yang digunakan untuk lalu lintas beban kerja Anda sebelum melakukan penyetelan.
- Jaga agar penyetelan udev dan sysctl tetap konsisten dengan strategi antarmuka Anda.
- Uji ulang throughput dan latensi setelah boot ulang, pembaruan driver, atau perubahan status jaringan yang dipercepat.
Catatan tambahan
Administrator sistem dapat menerapkan rekomendasi ini dengan mengedit file konfigurasi seperti /etc/sysctl.d/, , /etc/modules-load.d/dan /etc/udev/rules.d/. Tinjau pembaruan kernel dan driver dengan hati-hati untuk menghindari regresi.
Untuk informasi selengkapnya tentang konfigurasi dan pemecahan masalah tertentu, lihat dokumentasi Azure tentang performa jaringan.
Konten terkait
- Sebarkan VM yang dekat satu sama lain untuk latensi rendah dengan grup penempatan kedekatan.
- Lihat hasil dioptimalkan dengan pengujian Bandwidth/Throughput untuk skenario Anda.
- Baca tentang bagaimana bandwidth dialokasikan ke mesin virtual.
- Baca pertanyaan yang sering diajukan Microsoft Azure Virtual Network.