Вопрос:
Высокая нагрузка CPU и задержка пакетов, при небольшом канале и небольшом количестве пользователей. В чем причина?
Ответ:
Многие сетевые карты поддерживают режим паузы.
В случае, если канал перегружен, коммутатор или маршрутизатор посылает специальный пакет для паузы tx или rx, либо создает искусственную Ethernet коллизию.
Сетевая карта это обнаруживает и задерживает отправку пакета, при этом висит в цикле, из-за этого видимая нагрузка на процессор.
Как только коммутатор сообщает, что «все ОК», пакет отправляется, из-за этого происходит задержка пакета.
Можно посмотреть эту возможность в сетевой карте ethtool -a Eeth2 и можно отключить ethtool -A Eeth2 rx off tx off.
При отключении паузы пакет будет отправлен в любом случае, даже если противоположная сторона не может принять. Это приведет к нормализации времени задержки, но к потери пакетов.
Для того чтобы полностью решить проблему канала, необходимо решать задачу на уровне Ethernet оборудования.
ics_tune.sh #!/bin/bash if [ "$1" = "firewall.sh" ] ; then ethtool -A Eeth2 rx off tx off; fi