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

Исходное сообщение
"Polling - противоположный эффект."

Отправлено eddy_mut , 19-Июн-09 09:53 
Всем привет.

Имеется сервер двухпроцессорный Intel Xeon 3 GHz 2 GB RAM
сетевая карта:
bge0: <Broadcom NetXtreme Gigabit Ethernet Controller, ASIC rev. 0x2002> mem 0xfc310000-0xfc31ffff,0xfc300000-0xfc30ffff irq 18 at device 0.0 on pci2

На сервере поднята связка ABillS + mpd4. Подавляющее большинство клиентов PPTP, и еще немного PPPoE. Шейпинг средствами абиллса, ничего сверхмудренного.

Сервак начал тормозить в часы пик при >200 сессий. Тормоза проявляются в скачущем пинге и пропадании пакетов а так же пониженной пропускной способности (линк гигабитный но выше 60-ти мегабит никогда на нем не видел).

Замеры в systat показали что процессор забивается прерываниями 18 от адаптера bge0. Делаю вывод: много безлимитчиков > много пакетов через сетевуху > много прерываний = процессоры перегружены.

Незамедлительно получаю совет от старших товарищей включить поллинг.

Пересобрал ядро:


Код:
options DEVICE_POLLING
options HZ=2000


На следующий день эффект прямо противоположный: все жалуются на упавшую скорость, а пропадание пакетов и скачущий пинг никуда не делись.


При этом в час пик в systat я уже не вижу загруженности от прерывания сетевухи 18 bge0 но теперь там ощутимо присутствует swi1 net и dummynet.

Утром, почти без нагрузки, netstat -w 1:


Код:
            input        (Total)           output
   packets  errs      bytes    packets  errs      bytes colls
     20836     0   10323652      22961     0   16338869     0
     21345     0   10860813      22898     0   16054667     0
     20592     0   10582651      22330     0   16181027     0
     20120     1   10215146      22014     0   16180368     0
     19617     0    9371417      22568     0   16621482     0
     20571     1    9867263      22254     0   15602902     0
     19396     0    8996124      21432     0   15624158     0
     19172     0    8820773      21524     0   15473477     0
     19209     1    8849957      21646     0   15734201     0
     19424     0    9482504      21376     0   16125719     0
     18533     4    8604782      20741     0   14632630     0
     19235     0    8948979      21757     0   16440139     0
     19536     0    8908356      21750     0   15478963     0
     19464     0    8835937      21660     0   15682544     0
     18717     1    9194828      20931     0   15775238     0
     18693     2    8432115      20964     0   15582052     0
     18847     0    8412087      21369     0   15606039     0
     19379     1    8713417      21101     0   14418211     0
     19082     0    8733936      21356     0   15936071     0
     18847     0    8894042      21185     0   15964182     0
     18949     0    8676736      21930     0   17323964     0

Вечером, в час пик, то же самое, но в колонке input errs появляются значения порядка ~500-1000

Вопрос что и где еще замерить и подкрутить чтобы отыскать узкое место?


Содержание

Сообщения в этом обсуждении
"Polling - противоположный эффект."
Отправлено Pahanivo , 19-Июн-09 12:29 
на сетевушке то его включил? (пуллинг)

"Polling - противоположный эффект."
Отправлено eddy_mut , 19-Июн-09 12:42 
Я включил его через файл /etc/sysctl.conf чтобы при загрузке включалось

unlimit# ifconfig bge0
bge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=db<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,POLLING,VLAN_HWCSUM>
        ether 00:30:05:76:0f:b7
        media: Ethernet autoselect (1000baseTX <full-duplex>)
        status: active


unlimit# ifconfig bge1
bge1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=db<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,POLLING,VLAN_HWCSUM>
        ether 00:30:05:76:0f:b8
        inet 91.202.92.16 netmask 0xffffffe0 broadcast 91.202.92.31
        media: Ethernet autoselect (1000baseTX <full-duplex>)
        status: active

А когда я делаю так:

ifconfig bge0 -polling (выключаю)

у меня (и у остальных клиентов) скорость закачки сразу подпрыгивает вверх в ~10 раз.


"Polling - противоположный эффект."
Отправлено GD , 19-Июн-09 13:57 
>[оверквотинг удален]
>  0   17323964     0
>
>
>Вечером, в час пик, то же самое, но в колонке input errs
>появляются значения порядка ~500-1000
>
>
>
>Вопрос что и где еще замерить и подкрутить чтобы отыскать узкое место?
>

почитайте man polling, у него есть ручки для подкрутки
попробуйте еще увеличить HZ, хотя polling - он не для bge, эти карты сами умеют прерывания склеивать


"Polling - противоположный эффект."
Отправлено eddy_mut , 19-Июн-09 14:13 
Судя по этому

                    /0   /1   /2   /3   /4   /5   /6   /7   /8   /9   /10
     Load Average   ||||||

                    /0%  /10  /20  /30  /40  /50  /60  /70  /80  /90  /100
root     idle: cpu3 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
root     idle: cpu2 XXXXXXXXXXXXXXXXXXXXXXXXXXXX
root      swi1: net XXXXXXXXXXXXXXXXXXXXXXXXX
root     idle: cpu0 XXXXXXXXXXXXXXXXXXXXXX
root     idle: cpu1 XXXXXXXXXXXXXXXXXXXXX
root     irq18: bge XXXXXXXXXXXXXXXXXXXX
root     irq19: bge XXXXXXXXXXXXXXXXXXXX
root       dummynet XXXXXXXXXXXXXXXXXXX
root           mpd4 XXX
flowtoolsflow-captu XX


Не очень то они умеют склеивать.


"Polling - противоположный эффект."
Отправлено eddy_mut , 19-Июн-09 16:17 
Включил опцию idle_poll

                    /0   /1   /2   /3   /4   /5   /6   /7   /8   /9   /10
     Load Average   |||||||||||

                    /0%  /10  /20  /30  /40  /50  /60  /70  /80  /90  /100
root       idlepoll XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
root      swi1: net XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
root     idle: cpu3 XXXXXXXXXXXXXXXXXXXXXXX
root     idle: cpu0 XXXXXXXXXXXXXXXXXXXXXXX
root       dummynet XXXXXXXXXXXXXXXXX
root     idle: cpu2 XXXXXXXXXXXXXXXX
root     idle: cpu1 XXXXXXXXXXXXXXXX
root           mpd4 XXX
flowtoolsflow-captu XX


Пинги стали ровнее и реже пропадают.