Установка заданной скорости и дуплекса для ethernet-интерфейса
Установка значений производится через ics_tune.sh
if [ "$1" = "rc.mount" ]; then ethtool -s Eeth2 autoneg off ethtool -s Eeth2 speed 100 duplex full fi
Увеличение размера буфера сетевых карт
Проверка необходимости увеличения
Проверить наличие потерь пакетов на интерфейсах можно с помощью команды
ip -s -s link show Имя_интерфейса
Имя интерфейса обычно Leth1
Её вывод:
5: Leth1: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo qlen 1000 link/ether 00:26:55:dc:a7:df brd ff:ff:ff:ff:ff:ff RX: bytes packets errors dropped overrun mcast 481811818 3177767996 0 0 0 6 RX errors: length crc frame fifo missed 0 0 0 0 8493133
Нас интересует значение missed, если оно достаточно большое, то ситуацию можно исправить увеличением размера буфера интерфейса.
Чтобы понять как часто теряется пакет нужно поделить значение packets/missed.
Внимание
Если значение missed равно нулю, то смысла увеличивать буфер сетевой карты просто нет!
Также нельзя устанавливать значение размера буфера выше максимального.
Посмотреть текущий и максимальный размеры буфера можно с помощью команды:
ethtool -g Имя_интерфейса
[root@test_host root]# ethtool -g Leth1
Ring parameters for Leth1:
Pre-set maximums:
RX: 4096
RX Mini: 0
RX Jumbo: 0
TX: 4096
Current hardware settings:
RX: 4024
RX Mini: 0
RX Jumbo: 0
TX: 1024
Отсюда получаем максимальные значения RX и TX: 4096.
Увеличение буфера из меню
В последних версиях билинга есть возможность увеличить буфер сетевых карт из консольного меню: Конфигурирование сервера -> Qos. Шейпер... -> Оптимизация сети -> Увеличить буфер сетевых карт
Для версий ниже 3.7.0
Команды для увеличения
На Carbon Billing это можно сделать с помощью утилиты ethtool:
ethtool -G Leth1 rx 4096 tx 1024 ethtool -G Eeth2 rx 4096 tx 1024
При наличии более чем двух интерфейсов (внешних и внутренних) это действие необходимо применять и к ним.
Автоматизация увеличения
Чтобы не делать это каждый раз вручную, можно добавить в ics_tune.sh следующие строки:
if [ "$1" = 'networkd' -a "$2" = 'start' ]; then for i in $( ip -o addr | awk '{print $2}' | egrep "(L|E)eth[0-9]*$" | uniq ); do ethtool -G $i rx 4096 tx 1024 done fi