Потери на сетевых картах, задержки в обработке и как с ними бороться

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

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

просмотр истории страницы


h1. Различные значения rx-usecs
h1. Настройки rx-usecs

Статья для лучшего понимания, правда больше под маршрутизаторы : [http://habrahabr.ru/post/108240/]
В Carbon Reductor DPI X автоматически подбирается оптимальное значение этого параметра для сетевой карты при использовании опций FWBOOST.


В кратце - можно за счёт повышения нагрузки на процессор слегка снять нагрузку с сетёвки уменьшая rx-usecs. На большинстве машин использумых в нашем случае оптимальным оказалось значение 1.
{code}

{code}
ethtool -C eth1 rx-usecs 1
{code}

h1. Замена сетевых карт

Иногда бывает дело просто в железе. Если уверены, что сетевая карта хорошей модели и есть ещё одна такая же - попробуйте использовать её. Возможно она просто бракованная, хоть вероятность и мала.
Иногда бывает дело в используемом оборудовании. Если Вы уверены, что сетевая карта хорошей модели и есть ещё одна такая же - попробуйте использовать её. Возможно она просто бракованная.

Иногда дело бывает в драйвере (в случае dlink / realtek сетевых карт). Они, конечно, здорово поддерживаются практически любым дистрибутивом, но для высоких нагрузок не очень подходят.
Иногда дело бывает в драйвере (в случае dlink / realtek сетевых карт). Они не подходят для высоких нагрузок.

h1. Отключение гипертрединга


h1. Включение RPS (актуально для realtek/dlink/бюджетных intel)
h1. Включение RPS

Примечание - включать надо для всех vlan на сетевой карте отдельно. Включение только для самого девайса ethX не снизит нагрузку, создаваемую обработкой пакетов с vlan-интерфейсов.
В Carbon Reductor DPI X эта технология автоматически настраивается для сетевых карт с одной очередью.

При использовании опции FWBOOST эта технология автоматически настраивается в сочетании с RSS.

Мы в скором времени постараемся сделать автоматическую настройку при необходимости.
{code}

Пока можно включить руками или добавив в хук команду в духе:

{code}
cpucount="$(grep -c 'model name' /proc/cpuinfo)"
printf "%x\n" $((2**cpucount-1)) > /sys/class/net/eth1/queues/rx-0/rps_cpus
{code}

h1. Актуализация настроек зеркала трафика

Разнесение всех интерфейсов зеркала трафика по отдельным бриджам даёт небольшое снижение нагрузки за счёт устранения небольшой петли.
Разнесение всех интерфейсов зеркала трафика по отдельным бриджам даёт снижение нагрузки.

h1. Использование нескольких сетевых карт для приёма зеркала

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

h1. Отключение логирования
h1.

menu > настройки алгоритма фильтрации > логировать срабатывания

отключите эту опцию, это _немного_ ускорит процесс обработки пакета и отправки редиректа. Однако несмотря на "немного", при очень частых срабатываниях - способно даже немного снизить нагрузку на процессор.

h1. MTU

MTU на порту железки, отправляющей коммутатора, отправляющего зеркало не должно быть больше, чем MTU интерфейса на Carbon Reductor (в том числе и всех VLAN), принимающего зеркалированный трафик.

Рекомендуем посмотреть статистику на свитче коммутаторе по распределению размеров пакетов, для D-Link например команда

{code}
h2. Как определить потери пакетов из-за низкого MTU?

Смотрите Посмотрите на RX: length значение.

{code}
{code}

# Как избавиться от этих потерь?


Разово:

{code}

На постоянку:
На постоянной основе:

Дописать в конфиг сетёвки (/etc/sysconfig/network-scripts/ifcfg-eth1):
Дописать в конфиг сетевой карты (например /etc/sysconfig/network-scripts/ifcfg-eth1):

{code}