Распределение прерываний

Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (23)

просмотр истории страницы
Многие сетевые карты имеют несколько очередей для входящих пакетов. Каждая очередь висит на ядре/списке ядер. На многих железках из коробки, несмотря на то, что в smp_affinity_list указан список 0-$cpucount все прерывания находятся на первом ядре процессора. Обойти это можно раскидав с помощью echo все прерывания на разные ядра.

В Carbon Reductor DPI X распределение прерываний осуществляется встроенными средствами. Например, для сетевого адаптера eth1:
{code}
chroot /app/reductor
rss-ladder eth1
{code}

Для многопроцессорных систем настройку лучше производить вручную.
h4. Включение из консоли:

По возможности используйте разные реальные ядра, допустим, дано:
h5. Шаг 1. Выбрать пункт "Включить RSS для сетевых карт"

- 1 процессор с гипертредингом
- 4 реальных ядра
- 8 виртуальных ядер
- 4 очереди сетевой карты, которые составляют 95% работы сервера
{code}
menu->Reductor DPI X->Прочие настройки->Включить RSS для сетевых карт
{code}

Раскинуть их на 0, 1, 2 и 3 ядра будет не так эффективно, как на 0, 2, 4 и 6.
Далее выйти с сохранением настроек.

Пример кода (не универсальный), который раскидывает 8 очередей на 8 ядер (довольно простой случай).
Строка "-TxRx" - по ней можно идентифицировать очереди сетевой карты принимающей зеркало трафика, может отличаться в зависимости от модели сетевой карты и драйвера, посмотреть как она выглядит можно в файле cat /proc/interrupts
h5. Шаг 2. Проверить запись в mirror_info.conf

Создаем сам файл-хук:
Открыть любым удобным для вас редактором ( например vim ) файл mirror_info.conf

{panel} {code}
vim /app/reductor/cfg/userinfo/mirror_info.conf
/app/reductor/cfg/userinfo/hooks/start.sh {code}
{panel}

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

{panel}
chmod a+x /app/reductor/cfg/userinfo/hooks/start.sh
{panel}

В него добавляем следующее содержимое:

Убедиться в наличие соответствующей записи "mirror rss" напротив каждого указанного интерфейса.
{code}
eth1 - - mirror rss
#!/bin/bash {code}

client_post_start_hook(){
rss-ladder eth1 || true
return 0
}
client_post_start_hook
{code}
{info}