Вопрос или проблема
У меня есть два сервера Ubuntu 22.04.05 LTS с сетевой картой Mellanox CX-6 и линком на 25 Гбит/с. Я обнаружил очень странное поведение iperf3 при использовании ядра HWE. У меня установлен MTU по умолчанию 1500.
# uname -a
Linux mcc-ceph207-02 5.15.0-131-generic
#141-Ubuntu SMP Fri Jan 10 21:18:28 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Результаты iperf3
# iperf3 -c 10.230.35.130
Connecting to host 10.230.35.130, port 5201
[ 5] local 10.230.35.131 port 34384 connected to 10.230.35.130 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 2.56 GBytes 22.0 Gbits/sec 0 3.08 MBytes
[ 5] 1.00-2.00 sec 2.24 GBytes 19.2 Gbits/sec 361 1.55 MBytes
[ 5] 2.00-3.00 sec 2.72 GBytes 23.4 Gbits/sec 0 1.57 MBytes
[ 5] 3.00-4.00 sec 2.73 GBytes 23.5 Gbits/sec 0 1.81 MBytes
[ 5] 4.00-5.00 sec 2.73 GBytes 23.5 Gbits/sec 0 1.86 MBytes
[ 5] 5.00-6.00 sec 2.73 GBytes 23.5 Gbits/sec 0 1.86 MBytes
[ 5] 6.00-7.00 sec 2.31 GBytes 19.9 Gbits/sec 0 1.98 MBytes
[ 5] 7.00-8.00 sec 2.51 GBytes 21.6 Gbits/sec 0 2.03 MBytes
[ 5] 8.00-9.00 sec 2.73 GBytes 23.5 Gbits/sec 0 2.03 MBytes
[ 5] 9.00-10.00 sec 2.73 GBytes 23.5 Gbits/sec 0 2.03 MBytes- — — — — — — — — — — — — — — — — — — — — — — — —
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 26.0 GBytes 22.3 Gbits/sec 361 sender
[ 5] 0.00-10.04 sec 26.0 GBytes 22.2 Gbits/sec receiver
Теперь установлен HWE ядро на том же сервере и результат очень отличается
# uname -aLinux mcc-ceph207-01 6.8.0-52-generic #53~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Jan 15 19:18:46 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
Результаты iperf3
# iperf3 -c 10.230.35.130
Connecting to host 10.230.35.130, port 5201
[ 5] local 10.230.35.131 port 44400 connected to 10.230.35.130 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 1.87 GBytes 16.1 Gbits/sec 472 1.33 MBytes
[ 5] 1.00-2.00 sec 1.85 GBytes 15.9 Gbits/sec 0 1.33 MBytes
[ 5] 2.00-3.00 sec 1.86 GBytes 16.0 Gbits/sec 0 1.33 MBytes
[ 5] 3.00-4.00 sec 1.86 GBytes 15.9 Gbits/sec 0 1.33 MBytes
[ 5] 4.00-5.00 sec 1.85 GBytes 15.9 Gbits/sec 0 1.33 MBytes
[ 5] 5.00-6.00 sec 1.86 GBytes 16.0 Gbits/sec 0 1.33 MBytes
[ 5] 6.00-7.00 sec 1.86 GBytes 15.9 Gbits/sec 0 1.33 MBytes
[ 5] 7.00-8.00 sec 1.85 GBytes 15.9 Gbits/sec 0 1.33 MBytes
[ 5] 8.00-9.00 sec 1.85 GBytes 15.9 Gbits/sec 0 1.33 MBytes
[ 5] 9.00-10.00 sec 1.85 GBytes 15.9 Gbits/sec 0 1.33 MBytes- — — — — — — — — — — — — — — — — — — — — — — — —
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 18.6 GBytes 15.9 Gbits/sec 472 sender
[ 5] 0.00-10.04 sec 18.6 GBytes 15.9 Gbits/sec receiver
Ответ или решение
Использование обновленных или экспериментальных версий ядра в Linux, таких как HWE (Hardware Enablement) ядра в Ubuntu, может привести к изменению производительности сети или других компонентов системы. В данном случае, проблема выражается в снижении производительности сети при использовании HWE ядра на сервере с Ubuntu 22.04.05 LTS и сетевой картой Mellanox CX-6 с пропускной способностью 25 Гбит/с.
Теория
Когда речь идет о производительности сети в Linux, многие факторы могут повлиять на пропускную способность и стабильность соединения. Ядро Linux отвечает за управление сетью, включая установку соединений, управление очередями и передачу данных через стек TCP/IP. Любые изменения в ядре могут существенно повлиять на работу сети.
HWE ядра в Ubuntu обычно содержат более свежие версии драйверов и функции, которые могут быть не до конца протестированы или оптимизированы для всех конфигураций оборудования и программного обеспечения. Это может приводить как к улучшению работы на новом оборудовании, так и к ухудшению на существующем, как мы видим в вашем случае.
Пример
Обратимся к представленным данным:
- Сначала было использовано стандартное ядро 5.15.0-131-generic. Результаты iperf3 на этом ядре показали стабильное соединение с высокой пропускной способностью, почти соответствующей максимальной возможной на интерфейсе: порядка 22-23.5 Гбит/с, с минимальным количеством повторов передачи пакетов (Retr), что является показателем хорошей работы стека TCP/IP и конфигурации сетевой подсистемы.
- После перехода на HWE ядро версии 6.8.0-52-generic, наблюдается значительное снижение пропускной способности до 15.9 Гбит/с и увеличение числа повторов передачи на начальных интервалах, что указывает на возможные проблемы с обработкой пакетов или управлением очередями.
Применение
Для решения вашей проблемы, необходимо:
- Проверить наличие обновлений: Возможно, новая версия HWE ядра, недавно выпущенная, может содержать исправления, адресующие ваши проблемы. Убедитесь, что все пакеты и обновления установлены.
- Настройка параметров TCP: Проверьте параметры TCP в вашей системе. Например, увеличение размеров буферов TCP или настройка алгоритмов управления перегрузкой может помочь улучшить производительность при работе на новых ядрах.
- Анализировать работу драйверов сетевых карт: Убедитесь, что используете последние версии драйверов сетевой карты. Иногда производители выпускают патчи для драйверов, которые могут улучшить совместимость с новыми ядрами.
- Сравнить настройки сети: Проверьте, изменились ли настройки сети между использованием старого и нового ядра. Включает ли это MTU, размер окон TCP, конфигурацию правила QoS и другие параметры.
- Вернуться к предыдущей версии ядра: Если проблема не решается обновлениями драйверов или настройками, возможно, имеет смысл временно вернуться к предыдущей версии ядра, которая обеспечивала лучшую производительность, и дождаться будущих исправлений.
- Использовать отладочные инструменты: Это может включать внутренние утилиты, такие как ethtool для проверки статистики сетевой карты, tc для управления очередями, а также perf или bpftrace для анализа производительности ядра.
- Обратиться за поддержкой: В случае, если все предложенные меры не помогают, стоит обратиться за помощью в сообщество Ubuntu или к разработчику ядра/драйвера. Возможно, проблема требует более глубокого анализа и исправления со стороны разработчиков.
Заключение
Работа с HWE ядрами может предложить как преимущества в виде новой функциональности, так и возможные проблемы, требующие внимательного подхода к их решению. Следует тщательно тестировать такие ядра в тестовых средах перед внедрением в продуктивную. Тщательная настройка, мониторинг и своевременное обновление инфраструктуры может значительно улучшить производительность и стабильность систем на базе Ubuntu.