URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 72690
[ Назад ]

Исходное сообщение
"Сетевая карта 3Com 3C2000T, проблема с прерываниями"

Отправлено homelan , 06-Мрт-07 13:18 
Доброго времени суток, коллеги!
Вот какая есть петрушка: имею сабжевый сетевой адаптер, работает все, но до определенного момента. Заметил тенденцию: после ~8-10 дней работы сервер (ядро 2.6.16.27, для адаптера используется драйвер sk98lin [Gigabit Marvell chipsets]) вдруг начинает жутко тормозить по причине полной загрузки процессора. Топ показывает si >= 90%.
После перезагрузки все опять нормально работает. Смотрел /proc/interrupts, и выяснил, что проц начинает грузиться после того, как кол-во прерываний на одной из сетевушек (их две, они одинаковые) переваливает за 4 млрд. Т.е. - переваливает за 32-битное число. В драйвере есть настройка такая - interrupt moderation, установлена на 6000 ints/sec. Подозреваю, что дело таки блин в драйвере. Может, кто наступал на такие грабли?

Содержание

Сообщения в этом обсуждении
"Сетевая карта 3Com 3C2000T, проблема с прерываниями"
Отправлено anatolik.kiev , 07-Мрт-07 02:16 
options DEVICE_POLLING в ядре

polling - это управление сетевухой и прерываниями. В обычных условиях сетевуха генерит прерывание на каждый пришедший пакет - требуя чтоб ЦП выделил ресурсы на его обработку. Как итог, при большой нагрузке, сетевуха генерит несколько тыщ прерываний в секунду - а это не есть гуд, быстродействие машины снижается. Если же включить polling, то прерывания генерятся по таймеру (1000 в секунду, обычно), загрузка проца падает и быстродействие повышается. Естественно всё это не даром - повышается латентность сети, ибо в худшем случае на обработку пакета уходит на 1 миллисекунду (при HZ=1000) больше чем без этой функции. Если некритично - то можно юзать.


"Сетевая карта 3Com 3C2000T, проблема с прерываниями"
Отправлено homelan , 07-Мрт-07 12:05 
>options DEVICE_POLLING в ядре
>

Эта опция как раз включена, ибо interrupt moderation работает именно с device polling, а как же иначе? Имеется в виду, что interrupt moderation не дает сетевой карте генерить более 6000 прерываний в секунду, и как только он начинает "модерировать", естественно, латентность в этот момент повышается. Я к тому, что эта опция, скорее всего, привязана к счетчику прерываний... Может, драйвер использует переменную типа unsigned long вместо unsigned long long? Или, может, есть способ периодически обнулять счетчик прерываний?


"Сетевая карта 3Com 3C2000T, проблема с прерываниями"
Отправлено LAN , 24-Фев-09 07:51 
>Доброго времени суток, коллеги!
>Вот какая есть петрушка: имею сабжевый сетевой адаптер, работает все, но до определенного момента. Заметил тенденцию: после ~8-10 дней работы сервер (ядро 2.6.16.27, для адаптера используется драйвер sk98lin [Gigabit Marvell chipsets]) вдруг начинает жутко тормозить по причине полной загрузки процессора. Топ показывает si >= 90%.
>После перезагрузки все опять нормально работает. Смотрел /proc/interrupts, и выяснил, что проц
>начинает грузиться после того, как кол-во прерываний на одной из сетевушек
>(их две, они одинаковые) переваливает за 4 млрд. Т.е. - переваливает
>за 32-битное число. В драйвере есть настройка такая - interrupt moderation,
>установлена на 6000 ints/sec. Подозреваю, что дело таки блин в драйвере.
>Может, кто наступал на такие грабли?

выключи вообще Interrupt Moderation и не страдай херней. переключатель в положение Off