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

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

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

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

Для систем с одним физическим процессором и сетевыми картами, использующими драйвера igb, ixgbe, vmxnet3 можно использовать утилиту:
В Carbon Reductor DPI X распределение прерываний осуществляется встроенными средствами.

h4. Включение из консоли:

h5. Шаг 1. Выбрать пункт "Включить RSS для сетевых карт"

{code}
chroot /app/reductor
/usr/local/Reductor/bin/tune_interrupts.sh eth1
menu->Reductor DPI X->Прочие настройки->Включить RSS для сетевых карт
{code}

В остальных случаях она сделает хуже и требуется ручная настройка, рекомендации по ней:
Далее выйти с сохранением настроек.

По возможности используйте разные реальные ядра, допустим, дано:
h5. Шаг 2. Проверить запись в mirror_info.conf

- 1 процессор с гипертредингом
- 4 реальных ядра
- 8 виртуальных ядер
- 4 очереди сетевой карты, которые составляют 95% работы сервера
Открыть любым удобным для вас редактором ( например vim ) файл mirror_info.conf

Раскинуть их на 0, 1, 2 и 3 ядра будет не так эффективно, как на 0, 2, 4 и 6.
{code}
vim /app/reductor/cfg/userinfo/mirror_info.conf
{code}

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

Создаем сам файл-хук:

{panel}
/app/reductor/app/reductor/cfg/userinfo/hooks/start.sh
{panel}
В него добавляем следующее содержимое:

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

# Скрипт_распределения интерфейс номер физического процессора (0, 1, 2)
/usr/local/Reductor/bin/tune_interrupts.sh eth1 0

/usr/local/Reductor/bin/tune_interrupts.sh eth2 1
{code}
{info}
При использовании многопроцессорных систем (с двумя и более физическими процессорами) распределять прерывания лучше по нескольким процессорам для разных сетевых адаптеров, будь то адаптеры под зеркало или зеркало и внешний интерфейс.
{info}