Windows Server 2019

Низька швидкість мережі на хостах Hyper-V з Windows Server 2019

Низька швидкість мережі на хостах Hyper-V з Windows Server 2019

Я кілька разів зустрічався з тим, що швидкість копіювання файлів над V/на віртуальних машинах на Hyper-V у Windows Server 2019 значно нижча, ніж у VMI подібної конфігурації на хості з Windows Server 2016. У деяких тестах швидкість запису/читання даних у мережі на VM у Windows Server 2019 майже втричі нижча, ніж у WS2016 (копіювання SMB, SSH/SCP тестували). Ця стаття не претендує на абсолютну істину, але в ній я намагався зібрати різні методи покращення продуктивності мережі на віртуальних машинах Hyper-V на Windows Server 2019 (та останні збірки Windows 10).

Отримати сегмент, що зливається в Hyper-V 2019

Перш за все, вам потрібно згадати технологію Отримати сегмент з’єднання (RSC), який з'явився в Hyper-V на Windows Server 2019/2022 (і в Windows 10, починаючи з Build 1809). Отримати сегмент Coalescing використовується на віртуальному комутаторі (vSwitch), дозволяє зменшити навантаження на процесор та збільшити пропускну здатність мережі, поєднуючи кілька сегментів TCP у меншу кількість більших сегментів. Збільшення продуктивності мережі досягається через те, що кілька великих сегментів обробляються швидше, ніж багато малих.

У попередніх версіях Hyper-V на Windows Server 2016/2012R2 було підтримано лише апаратна версія сегмента прийому на рівні мережевої картки.

Наявність підтримки RSC часто є джерелом додаткової затримки мережі в деяких залізних комбінаціях.

Проблема проявляється як у повноцінному сервері Windows 2019 з графічним інтерфейсом, так і у безкоштовній версії сервера Windows Hyper-V.

За замовчуванням Windows Server 2019 RSC включений для всіх зовнішніх (зовнішніх) VSwitches.

Перевірте, чи можна включити RSC на віртуальні комутатори:

Get-vmswitch | Виберіть -Object *rsc *

Ви можете заборонити використовувати RSC для трафіку IPv4 на рівні адаптера клієнтської мережі:

Відключити -netadapterrsc -name "Ethernet" -ipv4

Перевірте, чи швидкість копіювання в HM на Hyper-V зросте, коли RSC відключиться. Якщо швидкість мережі зросла, ви можете вимкнути RSC на віртуальному комутаторі, до якого підключений VM.

Пропускна здатність мережі можна виміряти за допомогою утиліти IPERF.

Щоб вимкнути програмне забезпечення RSC для певного віртуального комутатора, виконайте команду:

Set -vmswitch -name vswitchname -enablesoftwarersc $ false

Ви можете увімкнути/вимкнути RSC на льоту, це не вплине на активні з'єднання.

Або ви можете повністю вимкнути RSC на хості:

Netsh int tcp set global rsc = вимкнено

Режим VMQ в мережевому адаптері

У деяких випадках наявність VMQ (черга віртуальної машини) У драйвері мережевого адаптера фізичного хоста Hyper-V може призвести до низької продуктивності мережі у віртуальних машинах Hyper-V. Це пов’язано з тим, що VMQ є апаратною функцією, і якщо вона не підтримується залізом, але включена до драйвера, це спричиняє втрату пакетів та збільшує затримку мережі. Ця проблема характерна для мережевих карт Gigabit Broadcom і зустрічається у всіх версіях Hyper-V на Windows 2012 R2/2016/2019.

VMQ призначений для підвищення продуктивності мережі, передаючи пакети з фізичного мережевого адаптера безпосередньо на віртуальні машини.

Ви можете відключити VMQ у властивості драйвера мережевого адаптера.

Або ви можете відобразити список мережевих адаптерів із підтримкою VMQ та їх статусом за допомогою PowerShell:

Get-netadaptervmq

Щоб вимкнути VMQ для конкретного адаптера, виконайте команду (мережевий адаптер буде недоступним протягом декількох секунд):

Set -netadaptervmq -name “nicname” -Enabled $ fals

Після відключення VMQ краще перезапустити хост і перевірити продуктивність мережі.

Переконайтесь, що Windows не має обмежень швидкості QoS.

Оптимізація параметрів протоколу TCP для Windows Server 2019 Hyper-V

Збережіть поточні параметри TCP на хості Hyper-V та використовуйте нові налаштування, які зроблять параметри протоколу TCP у Windows Server 2019 як подібним до Windows Server 2016.

Збережіть поточні налаштування:

Get-netcpsetting -settingname Datacenter, DataCenterCustom, InternetCusta, Інтернет | Виберіть Налаштування, CongestionProvider, Cwndrestart, ForceWs | Export-csv C: \ ps \ nettcp_.CSV

Windows Server 2019 та Windows 10 1709+ використовують реалізацію протоколу TCP - Кубічний. Цей алгоритм оптимізований для використання у високошвидкісних мережах з великою затримкою (він також використовується захистом у ядрі Linux, починаючи з 2.6.дев'ятнадцять).

Наступні налаштування повинні використовуватися лише на Windows Server 2019 або Hyper-V 2019.

Застосовуйте нові налаштування для мережі LAN:

Встановіть -nettcpsetting -settingname datacentcentercustom, datacenter -congestprovider dctcp
Встановити -nettcpsetting -settingname datacentcentercustom, Datacenter -Cwndrestart true
Встановіть -nettcpsetting -settingname datacentcentercustom, Datacenter -forcews вимкнено

Для WAN Network:

Встановіть -nettcpsetting -settingname Internetcusta, Інтернет -congestsprovider ctcp
Встановіть -nettcpsetting -settingname InternetCustom, Інтернет -delayedacktioutms 50
Встановіть -nettcpsetting -settingname InternetCustom, Інтернет -forcews вимкнено

Відключіть методи оптимізації мережі RSS та RSC на стеку TCP:

Netsh Intsp показує глобальний
Netsh int tcp set global rss = вимкнено
Netsh int tcp set global rsc = вимкнено

або на рівні мережевих адаптерів:

Get-Netadapter | Set -netadaptaradwancedproperty -displayname "Сегмент recv coalescing (ipv4)" -displayvalue "
Get-Netadapter | Set -netadaptaradwancedproperty -displayname "Сегмент recv coalescing (ipv6)" -displayvalue "
Get-Netadapter | Set -netadaptaradwancedproperty -displayname "Отримати бічне масштабування" -displayValue "ywaindabled" -norestart

Відключіть VRSS для всіх VM:

Get-vm | Set -vmnetworkadapter -vrssenabled $ false

Відключіть велику функцію відправлення (LSO) на мережеві картки:

Get-Netadapter | Set -netadaptaradwancedproperty -displayname "Великий відправлення Offloy 2 (ipv4)" -displayvalue "indivabled -norestart
Get-Netadapter | Set -netadaptaradwancedproperty -displayname "Великий надсилання Offloy 2 (ipv6)" -displayValue "вимкнено -norestart
Get-Netadapter | Перезапуск-Нетадаптер

Крім того, ці параметри можна відключити у властивостях мережевого адаптера на вкладці Advanced:

Налаштування стека TCP уважно закриються як можливі налаштування мережевих протоколів Windows Server 2019 до попередніх версій Windows Server.

Усунення інвалідів з оперативною пам’яттю
Сьогодні я розповім про те, як усунути проблеми з смужками оперативної пам’яті. Спочатку потрібно визначити, працює оперативна пам’ять чи ні. Якщо ком...
Як увімкнути протокол мережі SNMP у Windows 10
Оновлення Windows 10 перед складанням 1809 або вище, ви можете зіткнутися з проблемами контролю пристроїв, підключених до локальної мережі. Це не поми...
Як автоматично перезапустити програму відмови в Windows 10
Програми Windows 10 можуть раптом закінчити свою роботу або щільно замерзнути, це трапляється. Це не обов'язково вказує на нестабільність програми та ...