Мы запускаем сервер приложений на основе 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 и смог добиться лучшего во всем, но не последовательно.
Почему существует разница в скорости между отправителем и получателем? Какие все остальные параметры NIC / OS можно настроить для достижения равной пропускной способности в качестве отправителя?
Одна странная вещь, которую я наблюдаю при использовании ethtool, заключается в том, что этот параметр « rx_no_dma_resources » продолжает быстро увеличиваться во время теста.
- Несмотря на то, что я отключил «irqbalance» в / proc / interrupts и / proc / net / softnet_stat, нет равного распределения прерываний.
- В целом, моей конечной целью является достижение максимальной пропускной способности при минимальной потере пакетов.