... Многие сетевые карты имеют несколько очередей для входящих пакетов. Каждая очередь висит на ядре/списке ядер. На многих железках из коробки, несмотря на то, что в smp_affinity_list указан список 0-$cpucount все прерывания находятся на первом ядре процессора. Обойти это можно раскидав с помощью echo все прерывания на разные ядра. Для систем с одним физическим процессором и сетевыми картами, использующими драйвера igb, ixgbe, vmxnet3 можно использовать утилиту netutils-linux. Установка производится следующими командами: {code} yum install python-pip pip install netutils-linux {code} Использование в контейнере reductor (для сетевого адаптера eth1): {code} chroot /app/reductor rss-ladder eth1 {code} Для многопроцессорных систем настройку лучше производить вручную. По возможности используйте разные реальные ядра, допустим, дано: - 1 процессор с гипертредингом - 4 реальных ядра - 8 виртуальных ядер - 4 очереди сетевой карты, которые составляют 95% работы сервера Раскинуть их на 0, 1, 2 и 3 ядра будет не так эффективно, как на 0, 2, 4 и 6. Пример кода (не универсальный), который раскидывает 8 очередей на 8 ядер (довольно простой случай). Строка "-TxRx" - по ней можно идентифицировать очереди сетевой карты принимающей зеркало трафика, может отличаться в зависимости от модели сетевой карты и драйвера, посмотреть как она выглядит можно в файле cat /proc/interrupts Создаем сам файл-хук: {panel} /app/reductor/cfg/userinfo/hooks/start.sh {panel} В него добавляем следующее содержимое: {code} #!/bin/bash client_post_start_hook(){ rss-ladder eth1 0 rss-ladder eth0 1 } client_post_start_hook
|