NIC / Настройка производительности сети в CentOS - PullRequest
0 голосов
/ 29 октября 2018

Мы запускаем сервер приложений на основе UDP, на котором мы ожидаем большой трафик. Поэтому я нахожусь в процессе настройки нашего сетевого адаптера для достижения наилучшей производительности с высокой пропускной способностью (с небольшой задержкой).

Для тестирования я использую 2 машины со следующими конфигурациями.

Информация о машине

CPU : 40core
Threads per core: 2
Cores per socket : 2
NUMA node : 2
Model name : Intel(R) Xenon(R ) CPU E5-2630v4
CPU MHx: 2199.841
NUMA 0: 0-9, 20-29
NUMA 1: 10-19, 30-39
RAM: 128GB

Информация о плате:

Driver: ixgbe
Version : 4.4.0-k-rh7.3
10G capable

При выполнении простого нагрузочного теста я заметил, что скорость приема (пакетов / сек) не совпадает с отправителем.

(Наблюдение статистики через команду SAR) Отправитель: (sar -n UDP 1) odgm / s

1098825.00
1097993.00
1098103.00

Получатель: Idgm / s

622742.00
616321.00
649075.00

Из приведенного выше вы можете увидеть разницу между пакетами дейтаграмм отправителя и получателя.

Потеря пакета Наблюдение:

Ethtool, netstat, sar - наблюдаются статистические данные во всех этих инструментах, и здесь не сообщается об отбрасывании пакетов.

В настоящее время настроено: (с этой настройкой мне удалось достичь максимального значения 630k avg / sec на стороне приемника)

IRQBALANCE : disabled
CPU affinity   : manually distributed (each rx-tx queue / CPU)
Interrupt coalesce : rx-usecs 15
Flow control : on
Ring Buffer : rx 512
Rx Queue : 40
rmem_default = 16777216
rmem_max = 16777216

Все остальные значения по умолчанию Edit1: я перешел к опросу «занято» - 50 и смог добиться лучшего во всем, но не последовательно.

  1. Почему существует разница в скорости между отправителем и получателем? Какие все остальные параметры NIC / OS можно настроить для достижения равной пропускной способности в качестве отправителя?

  2. Одна странная вещь, которую я наблюдаю при использовании ethtool, заключается в том, что этот параметр « rx_no_dma_resources » продолжает быстро увеличиваться во время теста.

  3. Несмотря на то, что я отключил «irqbalance» в / proc / interrupts и / proc / net / softnet_stat, нет равного распределения прерываний.
  4. В целом, моей конечной целью является достижение максимальной пропускной способности при минимальной потере пакетов.

1 Ответ

0 голосов
/ 31 октября 2018

У меня нет ответов на все ваши вопросы, а также нет конкретных centos. Это мой предыдущий опыт приема пакетов на основе прерываний.

Как вы упомянули, что вам нужна лучшая пропускная способность, метод, основанный на прерываниях, не подходит. В одном из наших проектов мы определили, что метод, основанный на прерываниях, имеет огромные издержки из-за переключения контекста, поэтому отбрасывается огромное количество пакетов. Я предлагаю вам использовать опрос с низкой частотой. Хотя это вызывает больше накладных расходов на выполнение. Вы сможете достичь лучшей пропускной способности.

Надеюсь, мое предложение будет полезным для вашего проекта.

...