Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az Azure-beli virtuális gépek (VM-ek) alapértelmezett hálózati beállításokkal rendelkeznek, amelyek tovább optimalizálhatók a hálózati átviteli sebességre. Ez a cikk azt ismerteti, hogyan optimalizálhatja a hálózati átviteli sebességet Windows és Linux rendszerű virtuális gépekhez, beleértve az olyan főbb disztribúciókat, mint az Ubuntu és a Red Hat.
Windows rendszerű virtuális gépek
Ha a Windows rendszerű virtuális gép támogatja a gyorsított hálózatkezelést, engedélyezze ezt a funkciót az optimális átviteli sebesség érdekében. További információ: Windows rendszerű virtuális gép létrehozása gyorsított hálózatkezeléssel.
Az összes többi Windows rendszerű virtuális gép esetén a Fogadóoldali skálázás (RSS) használata nagyobb maximális átviteli sebességet érhet el, mint egy RSS nélküli virtuális gép. Előfordulhat, hogy az RSS alapértelmezés szerint le van tiltva egy Windows rendszerű virtuális gépen. Az RSS engedélyezésének és engedélyezésének ellenőrzéséhez kövesse az alábbi lépéseket:
Ellenőrizze, hogy engedélyezve van-e az RSS a Get-NetAdapterRss PowerShell-paranccsal rendelkező hálózati adapterekhez . Az alábbi példában az
Get-NetAdapterRssRSS-ből visszaadott kimenet nincs engedélyezve.Name : Ethernet InterfaceDescription : Microsoft Hyper-V Network Adapter Enabled : FalseAz RSS engedélyezéséhez írja be a következő parancsot:
Get-NetAdapter | % {Enable-NetAdapterRss -Name $_.Name}Ez a parancs nem rendelkezik kimenettel. A parancs módosítja a hálózati adapter (NIC) beállításait. Ez körülbelül egy percig okoz ideiglenes kapcsolatvesztést. A kapcsolat megszakadása során megjelenik egy újracsatlakozási párbeszédpanel. A kapcsolatot általában a harmadik kísérlet után állítja vissza a rendszer.
Győződjön meg arról, hogy az RSS engedélyezve van a virtuális gépen a
Get-NetAdapterRssparancs ismételt beírásával. Ha sikeres, a rendszer a következő példakimenetet adja vissza:Name : Ethernet InterfaceDescription : Microsoft Hyper-V Network Adapter Enabled : True
Linux rendszerű virtuális gépek
Az RSS alapértelmezés szerint engedélyezve van egy Linux rendszerű virtuális gépen (VM) az Azure-ban. A 2017 októbere óta kiadott Linux-kernelek új hálózati optimalizálási lehetőségeket tartalmaznak, amelyek lehetővé teszik a Linux rendszerű virtuális gépek számára a nagyobb hálózati átviteli sebesség elérését.
Az Azure gyorsított hálózatkezelésének engedélyezése az optimális átviteli sebesség érdekében
Az Azure gyorsított hálózatkezelést biztosít, amely valóban javíthatja a hálózati teljesítményt, a késést és a jittert. Jelenleg két különböző technológiát használnak a virtuális gépek méretétől függően, a Széles körben elérhető Mellanox és a Microsoft által kifejlesztett MANA .
Azure-ra hangolt kernelek
Egyes disztribúciók, például az Ubuntu (Canonical) és a SUSE Azure-ra hangolt kernelekkel rendelkeznek.
Az alábbi paranccsal győződjön meg arról, hogy az Azure-kernelt használja, amely általában az azure elnevezésben szereplő sztringet tartalmazza.
uname -r
#sample output on Azure kernel on a Ubuntu Linux VM
6.8.0-1017-azure
Egyéb Linux-disztribúciók
A legtöbb modern disztribúció jelentős fejlesztést jelent az újabb kernelekkel. Ellenőrizze az aktuális kernelverziót, hogy a 4.19-esnél újabb kernelt futtat-e, amely a hálózatkezelés terén is jelentős fejlesztéseket tartalmaz, például a BBR Congestion-Based Torlódás-vezérlés támogatását.
Konzisztens átviteli sebesség elérése Linux rendszerű virtuális gépeken az Azure-ban
A Linux rendszerű virtuális gépek gyakran tapasztalnak hálózati teljesítménnyel kapcsolatos problémákat, különösen akkor, ha nagy méretű fájlokat (1 GB-ról 50 GB-ra) továbbítanak régiók, például Nyugat-Európa és az USA nyugati régiója között. Ezeket a problémákat a régebbi kernelverziók, valamint az alapértelmezett kernelkonfigurációk, az alapértelmezett hálózati pufferbeállítások és az alapértelmezett torlódás-vezérlési algoritmusok okozzák, amelyek késleltetett csomagokat, korlátozott átviteli sebességet és nem hatékony erőforrás-használatot eredményeznek.
A konzisztens hálózati teljesítmény érdekében fontolja meg a következő optimalizálások implementálását, amelyek számos esetben hatékonynak bizonyulnak az Azure-ban:
-
Hálózati puffer beállításai: A kernelparaméterek módosítása az olvasási és írási memóriapufferek maximalizálása érdekében. Adja hozzá ezeket a konfigurációkat a következőhöz
/etc/sysctl.d/99-azure-network-buffers.conf:
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
-
Congestion-Based 4.19-s és újabb kernelek torlódás-vezérlése: A szűk keresztmetszetű sávszélesség és a BBR-alapú túlterheltség szabályozásának engedélyezése gyakran jobb átviteli sebességet eredményezhet. Adja hozzá ezt a konfigurációt a következőhöz
/etc/sysctl.d/99-azure-congestion-control.conf:
net.ipv4.tcp_congestion_control = bbr
-
Extra TCP-paraméterek, amelyek általában segítenek a jobb konzisztenciában és átviteli sebességben: Adja hozzá ezeket a konfigurációkat a következőhöz
/etc/sysctl.d/99-azure-network-extras.conf:
# 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
-
Üzenetsor-szemlélet (qdisc): Az Azure-ban a csomagfeldolgozás az alapértelmezett qdisc
fqbeállításával javul. Adja hozzá ezt a konfigurációt a következőhöz/etc/sysctl.d/99-azure-qdisc.conf:
net.core.default_qdisc = fq
-
Hálózati adapter gyűrűpuffereinek optimalizálása TX/RX-hez: Hozzon létre egy udev-szabályt
/etc/udev/rules.d/99-azure-ring-buffer.rules, amely biztosítja, hogy azok a hálózati adapterekre legyenek alkalmazva:
# 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"
- Hozzon létre egy udev-szabályt
/etc/udev/rules.d/99-azure-qdisc.rules, amely biztosítja, hogy a qdisc a hálózati adapterekre legyen alkalmazva:
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“
-
Megszakításkérés (IRQ) ütemezése: A számítási feladattól függően előfordulhat, hogy korlátozni kívánja az irqbalance szolgáltatást, hogy az ne ütemezzen megszakításokat bizonyos csomópontokon. Az IRQBalance használata esetén frissíthet
/etc/default/irqbalance, hogy megadhassa, mely CPU-kon ne legyenek megszakítási kérelmek ütemezve. Ehhez meg kell határoznia azt a maszkot, amely kizárja azokat a CPU-kat, amelyeket ki kell zárni.
További információ az itt elérhető maszk kiszámításáról.
Az alábbi példa feltételezi, hogy ki szeretné zárni a 8–15-ös processzorokat
IRQBALANCE_BANNED_CPULIST=0000ff00
-
UDEV-szabályok: Szabályok hozzáadása az üzenetsor hosszának optimalizálásához és az eszközjelölők hatékony kezeléséhez. Hozza létre a következő szabályt a következőben
/etc/udev/rules.d/99-azure-txqueue-len.rules:
SUBSYSTEM=="net", ACTION=="add|change", KERNEL=="eth*", ATTR{tx_queue_len}="10000“
Kétszer késleltetett csomagok esetén
Linuxos teljesítmény-hálózatkezelés esetén SR-IOV használunk Mellanox illesztőprogramokkal (mlx4 vagy mlx5), az Azure-ra jellemző, hogy ez két felületet hoz létre egy szintetikus és egy virtuális felülettel. További információ.
További megjegyzések
A rendszergazdák ezeket a megoldásokat olyan konfigurációs fájlok szerkesztésével implementálhatják, mint például /etc/sysctl.d/a . /etc/modules-load.d//etc/udev/rules.d/ Győződjön meg arról, hogy a rendszermag-illesztőprogram frissítései és a rendszerkonfigurációk áttekintve vannak a lehetséges regressziók szempontjából.
Az egyes konfigurációkkal és hibaelhárítással kapcsolatos további információkért tekintse meg az Azure hálózati teljesítményre vonatkozó dokumentációját.
Kapcsolódó tartalom
- Helyezzen üzembe egymáshoz közeli virtuális gépeket alacsony késés érdekében, közeli elhelyezési csoportokkal.
- Tekintse meg az optimalizált eredményt a forgatókönyv sávszélesség- /átviteli sebesség tesztelésével .
- Megtudhatja, hogyan van lefoglalva a sávszélesség a virtuális gépekhez.
- További információ az Azure Virtual Network gyakori kérdéseiről.