Вопрос или проблема
Для обеих машин:
- Ubuntu 20.04
- Карты Mellanox MT28908 ConnectX-6 в режиме ethernet
- Ядро модуля: mlx5_core (из MLNX_OFED_LINUX-24.04-0.6.6.0-ubuntu20.04-x86_64)
Карты ConnectX-6 напрямую соединены друг с другом с помощью Nvidia DAC, используя адреса RFC1918; т.е. небольшая 2-узловая сеть. Машины представляют собой серверные системы в стойках, одна из которых оборудована процессором Intel Xeon Gold 5318Y, а другая – 2 x Intel Xeon Platinum 8358. Ожидается, что эти карты обеспечивают соединение на скорости 100 Гбит/с. Тем не менее
root@zakynthos:~# iperf3 -c 192.168.101.1
Подключение к хосту 192.168.101.1, порт 5201
[ 5] локальный 192.168.101.2 порт 45974 подключен к 192.168.101.1 порт 5201
[ ID] Интервал Передача Скорость Повторений Cwnd
[ 5] 0.00-1.00 сек 3.17 GBytes 27.2 Gbits/sec 227 912 KBytes
[ 5] 1.00-2.00 сек 2.58 GBytes 22.1 Gbits/sec 1382 755 KBytes
[ 5] 2.00-3.00 сек 2.36 GBytes 20.3 Gbits/sec 2459 1.08 MBytes
[ 5] 3.00-4.00 сек 3.07 GBytes 26.4 Gbits/sec 3433 723 KBytes
[ 5] 4.00-5.00 сек 3.36 GBytes 28.9 Gbits/sec 3004 1.05 MBytes
[ 5] 5.00-6.00 сек 2.83 GBytes 24.3 Gbits/sec 1692 942 KBytes
[ 5] 6.00-7.00 сек 2.47 GBytes 21.2 Gbits/sec 1819 1022 KBytes
[ 5] 7.00-8.00 сек 3.03 GBytes 26.0 Gbits/sec 1578 841 KBytes
[ 5] 8.00-9.00 сек 3.37 GBytes 28.9 Gbits/sec 1920 1024 KBytes
[ 5] 9.00-10.00 сек 2.91 GBytes 25.0 Gbits/sec 1239 1.06 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Интервал Передача Скорость Повторений
[ 5] 0.00-10.00 сек 29.1 GBytes 25.0 Gbits/sec 18753 отправитель
[ 5] 0.00-10.04 сек 29.1 GBytes 24.9 Gbits/sec приемник
Я привык видеть, что iperf3 обеспечивает около 90% от номинальной пропускной способности карты, поэтому для меня это выглядит ужасно и неприемлемо. Есть ли у кого-то мысли о том, почему я не вижу производительности хотя бы 80-90 Гбит/с здесь?
серверные системы в стойках – что это за системы и в какой слот вы подключили NIC?
MT28908 ConnectX-6 поддерживает PCIe 4.0 x16 с теоретической пропускной способностью до 252 Гбит/с – достаточно для 2x 100 GbE. Однако, если этот слот поддерживает, например, PCIe 3.0 x4 электрически (“x16 @ x4”), тогда пропускная способность падает до 31 Гбит/с, что приводит к примерно такому результату, который вы видите.
Другой возможностью является плохая настройка памяти с одним каналом (хотя это маловероятно).
Проверьте характеристики вашего сервера.
Проблемой был тот факт, что версия iperf3, поставляемая с Ubuntu 20.04, не может обрабатывать пропускные способности выше 25 Гбит/с. Я скачал и скомпилировал последнюю версию iperf3 (которая поддерживает выполнение параллельных потоков), и запустил 16 параллельных клиентских потоков:
/opt/iperf-3.17.1/bin/iperf3 -c 10.119.8.9 -P 16
Я смог получить около 98-99 Гбит/с, что достаточно близко к теоретическому максимуму для карты.
Ответ или решение
Давайте подробно рассмотрим проблему, связанную с низкой пропускной способностью сети на прямом соединении между двумя Linux-машинами, оснащенными картами Mellanox ConnectX-6.
Фоновая информация
Для обеих машин используются:
- Операционная система: Ubuntu 20.04
- Сетевые карты: Mellanox MT28908 ConnectX-6 в режиме Ethernet
- Ядро: Модуль
mlx5_core
(из MLNX_OFED_LINUX-24.04-0.6.6.0-ubuntu20.04-x86_64)
К ардам подключены напрямую через Nvidia DAC, используя адреса RFC1918, что формирует небольшую двухузловую сеть. Серверы являются оборудованием серверного класса: один с процессором Intel Xeon Gold 5318Y, и другой — с двумя процессорами Intel Xeon Platinum 8358. Ожидаемая пропускная способность составит 100 Гбит/с.
Описание проблемы
Используя утилиту iperf3
, было установлено, что фактическая пропускная способность составляет около 25 Гбит/с. Это значение значительно ниже ожидаемого и может вызывать серьезные сомнения относительно производительности сетевого подключения:
[ ID] 0.00-10.00 sec 29.1 GBytes 25.0 Gbits/sec
Причины низкой пропускной способности
-
Версия
iperf3
: Важной причиной может быть версияiperf3
, поставляемая с Ubuntu 20.04. Более ранние версии имеют ограничения по пропускной способности и могут не справляться с нагрузками, превышающими 25 Гбит/с. В таком случае рекомендуем обновитьiperf3
до последней версии и обеспечить использование параллельных потоков. -
PCIe-соединение: Нужно проверить, в какой слот PCIe установлены сетевые карты. Если слот поддерживает только PCIe 3.0 x4 (что может выглядеть как x16 на плате), тогда общее доступное полное пропускная способность будет ограничена до 31 Гбит/с, что подтверждает ваши результаты.
-
Настройки памяти: Проверьте настройки памяти на серверах. В редких случаях, если используется только одна канал памяти, это может также привести к снижению производительности.
-
Настройки сети: Убедитесь, что все необходимые настройки сети, связанные с MTU, Jumbo Frames и другими параметрами, должным образом настроены. Неправильно заданные настройки могут привести к дополнительным накладным расходам и потере пакетной информации.
Решения
-
Обновление
iperf3
: Скомпилируйте и установите самую свежую версиюiperf3
, которая поддерживает многопоточность. Например, запустив команду:/opt/iperf-3.17.1/bin/iperf3 -c 192.168.101.1 -P 16
вы сможете протестировать производительность с параллельными потоками.
-
Проверка аппаратного обеспечения: Убедитесь, что карты установлены в слоты, поддерживающие максимальную пропускную способность, и что материнская плата совместима с PCIe 4.0.
-
Оптимизация сетевых настроек: Проверьте, что MTU настроен на более высокие значения (например, 9000 для Jumbo Frames) и что нет ограничений на сторонних устройствах, таких как маршрутизаторы или коммутаторы.
Заключение
Важно учитывать, что для достижения ожидаемой пропускной способности 100 Гбит/с нужно не только иметь оборудование с соответствующей поддержкой, но и оптимизировать программное обеспечение и сетевые настройки. После выполнения вышеуказанных рекомендаций вы должны получить значительно увеличенную пропускную способность в тестах iperf3
.