Вопрос или проблема
Я купил MCX311A-XCAT CX311A ConnectX-3 для своего серверa разработки с намерением купить еще один, если этот будет работать для моего ПК. В настоящее время мой сервер хранения и мой ПК имеют 2,5Gbe. Они все подключены к Davuaz Da-K6402W. Сервер разработки – Xeon E-2136 с частотой до 4,5GHz. Серверы хранения и разработки используют Rocky Linux 9 (основанный на RHEL) – ядро 5.14.0. 10G NIC работает, но загрузка ЦП составляет около 70% (это 70% на одном ядре) при подключении iperf3 к серверу хранения со скоростью около 2,30 Gbits/сек. Сервер хранения, с другой стороны, – Xeon E3-1285L – намного старше, и iperf3 использует там 5-10% ЦП. Когда происходит копирование с машины с 1G NIC, используется 30% ЦП.
Это также увеличивает потребление электроэнергии. Я измерил мощность своего сервера хранения с этим NIC. Оно варьируется от 66W до 105W (+40W) из-за загрузки ЦП просто при передаче данных на 2,5Gbit/s. Ограничение ЦП до 1GHz снизило потребление до 70W (всего на 4 ватта больше, чем в режиме ожидания).
Мощность ЦП: 38-40W для Xeon E-2136 с 10G NIC, который находится в режиме ожидания на 1W. Мощность ЦП: 19W для E3-1285L с 2,5G NIC, который находится в режиме ожидания на 10W.
Только что выяснил, что передача на 2,5G/s поддерживает загрузку ЦП на 5%, при получении – 68% (все другие тесты двунаправленные).
Почему 10G NIC требует так много ЦП даже на низких скоростях? Какие рекомендации для более дешевых вариантов 10G SPF+ NIC для домашней лаборатории?
Примечание: сетевое устройство находится в мосту – br0. Однако я тестировал без моста – без изменений.
Ответ или решение
Высокая загрузка ЦП при использовании Mellanox ConnectX-3: анализ и рекомендации
Контекст проблемы
Вы приобрели сетевую карту Mellanox ConnectX-3 (MCX311A-XCAT) для вашего серверного окружения, которое включает в себя сервер разработки на базе Xeon E-2136 с поддержкой 10GbE и несколько других устройств с 2.5GbE. При тестировании с использованием утилиты iperf3 вы заметили, что при скорости передачи около 2.3 Gbit/s загрузка одного ядра ЦП достигает 70%, в то время как на более старом сервере с E3-1285L данное значение составляет всего 5-10%.
Анализ причин высокой загрузки ЦП
Высокая загрузка ЦП при использовании Mellanox ConnectX-3 может быть вызвана несколькими факторами:
-
Обработка прерываний: В сетевых интерфейсах, особенно при работе на высоких скоростях, значительная часть нагрузки может приходиться на обработку прерываний. Если система не оптимизирована для работы с высокой частотой прерываний, это может привести к увеличению загрузки ЦП.
-
Качество драйверов: Драйверы для сетевой карты ConnectX-3 могут вызывать неэффективности. Плохо оптимизированные драйверы могут увеличивать использование ресурсов системы.
-
Настройки сети: По умолчанию могут быть выбраны неэффективные параметры для работы с высокоскоростными сетевыми интерфейсами. Это может включать в себя настройки на уровне ядра, такие как стратегия прерываний, параметры буферов и другие.
-
Сетевой стек: Загруженность программного обеспечения сетевого стека также может влияять на производительность. Например, TCP/IP стек может быть настроен на работу с сетевыми картами более низкой скорости, что также приведет к ухудшению производительности.
Рекомендуемые действия
Для уменьшения загрузки ЦП при использовании вашего 10G NIC, рекомендуем выполнить следующие шаги:
-
Оптимизация конфигурации прерываний:
- Убедитесь, что данная сетевая карта использует механизм RSS (Receive Side Scaling), который распределяет нагрузку по нескольким ядрам.
- Настройте прерывания по ядрам, чтобы минимизировать перегрузку.
-
Обновление драйверов:
- Проверьте, доступны ли более новые версии драйверов для вашей сетевой карты и операционной системы. Иногда обновления содержат полезные исправления, которые могут снизить нагрузку на ЦП.
-
Настройка параметров сети:
- Попробуйте увеличить размер MTU (Maximum Transmission Unit) для уменьшения нагрузки на ЦП при работе с большими объемами данных.
- Проверьте и, если необходимо, настройте параметры TCP offloading, такие как TSO (TCP Segmentation Offload) и LRO (Large Receive Offload).
-
Использование альтернативных решений:
- Рассмотрите возможность использования других моделей 10G NIC, которые более оптимизированы для работы в средах с низким уровнем нагрузки на ЦП. Например, сетевые карты на базе Broadcom или Intel могут демонстрировать лучшую производительность.
-
Мониторинг производительности:
- Используйте инструменты мониторинга (такие как
top
,htop
,nload
,iftop
и другие) для анализа загрузки системы и сетевых показателей в реальном времени, что может помочь в выявлении узких мест.
- Используйте инструменты мониторинга (такие как
Заключение
Высокая загрузка ЦП при использовании Mellanox ConnectX-3 на вашем сервере является сложной проблемой, уходящей корнями в различные аспекты сетевой архитектуры и программного обеспечения. Проведение вышеуказанных оптимизаций может значительно улучшить производительность системы и снизить затраты на электроэнергию. Если проблема останется нерешённой, возможно, стоит рассмотреть альтернативные сетевые решения для вашей домашней лаборатории.