25 Гбит/с превращаются… в тыкву? История одного траблшутинга на кластере HPE

Написано

в

Дано: Новенький кластер HPE. Физические хосты с сетевыми картами 25 Гбит/с. Виртуальные машины с адаптерами VMXNET3, подключенные через Distributed Switch (vDS).
Проблема: При проверке скорости между ВМ утилита iperf3 показывает унылые 900 Мбит/с(??).
Задача: Понять, куда делись остальные 24 гигабита, и почему скорость ниже, чем на домашнем роутере.

Задача выглядела нетривиально, так как на соседнем кластере (Cisco HX) всё летало «из коробки». В следствии проверок мы прошли все стадии принятия и не малое количество процедур от проверки драйверов до глобальной перестройки сети, и вот как это было.

Этап 1: Проверка базовой гигиены на уровне железяк (ОС и Драйверы).
Первым делом исключил классику: старые драйверы и однопоточность
Проверка адаптера: На ВМ установлен корректный VMXNET3, VMware Tools свежие..
Многопоточный тест: Запустили iperf в 8 потоков, чтобы исключить упор в одно ядро CPU.

iperf3.exe -c 10.10.10.111 -P 8

Результат:
– Sender: ~2.5 Гбит/с
– Receiver: ~80 Мбит/с (!!!)

Катастрофическая разница. Приемник буквально “захлебывался” пакетами. Появилось подозрение на RSS (Receive Side Scaling) — технологию, которая паралелит обработку трафика по ядрам проца.

Проверили RSS в PowerShell:

Get-NetAdapterRss

Получил стандартный вывод: RSS включен, очереди распределены по ядрам. Настройки ОС в норме.

Этап 2: Танцы с бубном (RSC и Interrupt Moderation)
В Windows Server (2019/2022) есть функция RSC (Receive Segment Coalescing). На быстрых картах она часто конфликтует с драйверами VMware, вызывая дропы пакетов.

Отключил RSC:

Disable-NetAdapterRsc -Name "Ethernet*" #Тут имя вашего адаптера

Скорость на приеме выровнялась с отправкой, но общий потолок остался на уровне ~2–2.5 Гбит/с. Провалы исчезли, но скорости нет.

Тогда попробовал отключить модерацию прерываний (Interrupt Moderation) в свойствах сетевой карты. Это заставляет CPU обрабатывать каждый пакет мгновенно.
Эффект: Стабильность повысилась, но скорость не выросла.

Этап 3: Момент хуистины (UDP тест)
Чтобы понять, виноват ли протокол TCP (окна, задержки) или сама «труба» (сеть), запустил UDP-тест. UDP — протокол “глупый

iperf3.exe -c 10.10.10.111 -u -b 5G

Ровная полка в 1 Гбит/с. И это как раз тот момент когда начинаю что то понимать, ведь, если даже UDP упирается в гигабит, значит, где-то стоит жесткое ограничение.

Го искать? Го!:

Network I/O Control (NIOC) на vDS: Лимитов нет (Unlimited), Shares High.Traffic Shaping: Выключен.

Локальный vSwitch: Создал отдельный стандартный свитч, чтобы исключить баги Distributed Switch. Результат тот же.

Этап 4: Нахожу слона в комнате виновника (MTU)
Сравнил проблемный кластер HPE с работающим Cisco HX. Главное отличие: на Cisco используются кастомные карты с мощным Hardware Offload, а на HPE — стандартные адаптеры.

При стандартном размере пакета MTU 1500 байт, чтобы прокачать 10 Гбит/с, процессору нужно обработать около 800 000 пакетов в секунду. В виртуальной среде накладные расходы слишком велики, и сеть просто упиралась в производительность CPU на обработку прерываний.

Проверка гипотезы: Попытался пропинговать соседнюю ВМ большим пакетом с запретом фрагментации:

ping -f -l 8972 10.10.10.111

Ответ: Packet needs to be fragmented.

Сеть физически не пропускала большие пакеты. Тупо уперлись в “софтовый потолок” ~3 Гбит/с для стандартного фрейма.

Решение: Переход на Jumbo Frames (MTU 9000)
Чтобы получить скорость, нужно уменьшить количество пакетов, увеличив их размер. Реализовал план Swing-миграции, чтобы не уронить прод (изменение MTU на vDS “на живую” может положить сеть):

Подготовка: Вывел один физический аплинк из старого vDS.

Физика: Сетевые инженеры перенастроили порт свитча на MTU 9000.

Новый vDS: Создали новый Distributed Switch сразу с MTU 9000 и добавили туда освобожденный аплинк.

ВМ: Переключил тестовые машины в новый vDS и включил Jumbo Packet: 9000 в свойствах адаптера VMXNET3 внутри Windows.

Контрольный выстрел:

ping -f -l 8900 10.10.10.111
Reply from 10.10.10.111: bytes=8900 time=1ms…

Пинг прошел! Путь чист.

Финал: Замер скорости
Запускаю iperf на новой конфигурации:

iperf3.exe -c 10.10.10.111 -w 4M -P 8 -b 10G


Результат:

[SUM] 0.00-10.00 sec 7.64 GBytes 6.56 Gbits/sec sender
[SUM] 0.00-10.00 sec 7.56 GBytes 6.50 Gbits/sec receiver

Итог: Получаем рост производительности более чем в 2.5 раза (с 2.5 до 6.5+ Гбит/с) и абсолютно стабильный поток данных.

Выводы
MTU 1500 — это узкое горлышко для сетей 10/25 Гбит/с в виртуальной среде. Процессор просто не успевает обрабатывать заголовки.

TCP лжет: Если скорость скачет или падает в ноль, проверяйте UDP. Если там «полка» — ищите лимиты в конфигурации.

Swing-миграция — лучший способ внедрять изменения в сети без простоя. Строим новый «мост» рядом, переводим трафик, сносим старый. Но все же не забываем правило: Read-Only Friday.

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.