Как улучшить пропускную способность Intel X520-DA2 10Gb NIC без Пакетов крупного размера

Если это - довольно простое соглашение "одиночной станции", что-нибудь, что может обработать ожидаемую пропускную способность, должен быть прекрасным. Вам (вероятно), не будут нужны большие таблицы маршрутизации (один маршрут по умолчанию, или статически указывающий на ISP или полученный через протокол маршрутизации, один маршрут, указывающий на LAN).

Если Вы будете намереваться сделать свой брандмауэринг и окончание VPN на маршрутизаторе, то Вам будет нужно больше лошадиной силы, но я нашел, что Вы будете обычно заканчивать с более дешевым решением при разделении маршрутизации (с одной стороны) и брандмауэра/VPN (на другой и возможно третьей руке).

С другой стороны, возьмите стандартный ПК, установите Linux или BSD на нем, установите relvant маршрутизация демонов (если таковые имеются) и возьмите его оттуда.

5
задан 5 September 2013 в 00:04
3 ответа

Одна из проблем с высокопроизводительными сетевыми адаптерами заключается в том, что современная архитектура ПК не выдерживает должного уровня. Но в вашем случае проблема не в этом. Позвольте мне объяснить.

ЦП должен делать много работы, обрабатывая TCP-пакеты. Это влияет на пропускную способность. Что ограничивает в вашем случае, так это не сетевое оборудование, а способность сервера загружать сетевые ссылки.

В последнее время мы видели, как обработка перемещается от ЦП к сетевой карте, как разгрузка контрольной суммы. Intel также добавила функции, помогающие еще больше снизить нагрузку. Это круто, и я уверен, что все функции оптимизации включены.

Как вы уже упоминали, jumbo-кадры - на самом деле это несколько увеличивает пропускную способность. Но не настолько, как RDMA .

Большинство аппаратных средств Ethernet 10 Гбит / с будут иметь очень полезную малоиспользуемую функцию, называемую RDMA или удаленный прямой доступ к памяти. Это позволяет сетевой карте делать копии из памяти в память по сети без вмешательства ЦП. Ну, хорошо, CPU сообщает NIC, что делать, а затем NIC делает все остальное. Беда в том, что он пока мало используется. Но дело идет. По-видимому, в самой последней версии Microsoft Windows Server 2012 есть нечто, называемое SMB Direct . Он использует RDMA. Итак, если вы хотите увеличить пропускную способность, вы хотите это использовать.

Можете ли вы собрать тестовое оборудование и установить его там, чтобы посмотреть, как оно работает?

Кстати, я не уверен, что вы так много увидите на 10 Гбит, но быстрая RAM помогает с RDMA, особенно с 56 Гбит Infiniband. В общем, это возможность RDMA сетевых адаптеров. Когда объединились, сеть адаптеры не поддерживают RDMA.


Обновление: Похоже, что не ВСЕ 10GBit NIC по какой-то причине поддерживают RDMA. Так что сначала проверьте особенности вашей модели.

Еще я подумал, что тип протокола, который используется для вашего тестирования, может влиять на результаты. т.е. накладные расходы протокола поверх накладных расходов TCP. Я предлагаю вам изучить то, что можно протестировать, не касаясь жесткого диска, например iperf. Где-то есть порт для Windows.

3
ответ дан 3 December 2019 в 01:45

Мне кажется, этот вопрос: Почему моя гигабитная связь не обеспечивает пропускную способность не менее 150 МБ / с? связан с вашей проблемой. Я говорил там о Dell PowerEdge 6950. Ответ был в основном «использовать jumbo-кадры» для уменьшения количества прерываний. Я могу представить, что настройка механизма разгрузки сетевой карты может помочь в вашем случае, но я не знаю, как это сделать на W2K8R2.

Идея: Увеличьте количество буферов в сетевой карте, увеличьте триггер прерывания для пакетов в буфере, чтобы каждое прерывание обрабатывало больше пакетов (т.е. передавало их в стек OS-IP).

См. Эту ссылку: Установка параметров объединения с помощью ethtool для 10 Гб это то, о чем я в основном говорю.

1
ответ дан 3 December 2019 в 01:45

На скриншоте с загрузкой ЦП показаны 2 потенциальных узких места:

  1. 4 ядра работают на максимум, выполняя работу ядра (то есть, вероятно, обработчики прерываний обрабатывают пакеты)
  2. Максимальное использование 1 ядра в основном в пользовательском режиме

Для решения первой проблемы:

  • Попробуйте изменить настройки модерации прерывания, в зависимости от ваших драйверов это больше, чем просто включение / выключение, вы можете установить стратегию модерации.
  • Попробуйте отключить / включить все функции разгрузки (в вашем случае отключение может оказаться полезным, чтобы переместить потенциальное узкое место с вашего (одноядерного) сетевого адаптера, на который будут переданы функции, на ваши (многоядерные) процессоры)
  • Попробуйте включить параметр «Получать Объединение »(при получении TCP) и различных функций« Большой прием ... »,« Большая передача ... »и т. Д., Которые может предоставить ваш драйвер
  • Не можете ли вы установить для очередей RSS значение выше 4? Кажется, что используется только один из ваших двух портов (как вы сказали, вы знаете об этом,Я предполагаю, что вы установили свой второй порт как минимум на 4 (или 8, не уверен, нужно ли подсчитывать HT)
  • Если возможно, увеличьте количество различных используемых портов TCP / UDP или исходных / целевых IP-адресов, потому что один 5 кортежей адреса / порта / протокола (или кортежей адресов / протоколов для трафика, отличного от TCP / UDP) всегда должны переходить в одно и то же ядро, независимо от ваших настроек RSS.

Что касается последнего (не зная, что приложение, которое вы фактически используете):

Если это 1 ядро ​​с максимальным выходом в пользовательском режиме указывает на ваше однопоточное (или однопоточное) приложение, оно должно быть

  • исправлено или
  • перенастроено (например, увеличьте # рабочих потоков, если возможно), или
  • перепроектирован

для использования нескольких ядер, что может быть или не быть тривиальным.

Кроме того, поскольку ваше приложение (если это действительно ваше приложение), очевидно, работает на Узел NUMA № 1, но обработка пакетов ядром выполняется на узле NUMA № 0,

  • попробуйте привязать приложение к узлу NUMA № 0

Например щелкнув правой кнопкой мыши процесс в диспетчере задач, что даст вам возможность изменить это, по крайней мере, в Win2012R2. Я попробовал, и мне это не помогло, но стоит попробовать, так как это может улучшить частоту попаданий в кеш.

Кстати, это машина, о которой идет речь, отправляет? Получение? И то и другое? С точки зрения настройки производительности вашей системы отправка и получение почти полностью не связаны, хотя мои предложения выше охватывают и то, и другое.

0
ответ дан 3 December 2019 в 01:45

Теги

Похожие вопросы