Всем привет.Имеется сервер двухпроцессорный 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
Вопрос что и где еще замерить и подкрутить чтобы отыскать узкое место?
на сетевушке то его включил? (пуллинг)
Я включил его через файл /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 раз.
>[оверквотинг удален]
> 0 17323964 0
>
>
>Вечером, в час пик, то же самое, но в колонке input errs
>появляются значения порядка ~500-1000
>
>
>
>Вопрос что и где еще замерить и подкрутить чтобы отыскать узкое место?
>почитайте man polling, у него есть ручки для подкрутки
попробуйте еще увеличить HZ, хотя polling - он не для bge, эти карты сами умеют прерывания склеивать
Судя по этому/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
Не очень то они умеют склеивать.
Включил опцию 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
Пинги стали ровнее и реже пропадают.