Страница 1 из 2
Производительность TCP/IP стэка FreeBSD
Добавлено: 2009-09-24 1:11:02
milleroff
Здравствуйте. Есть сервер HP Proliant DL580 с двумя Xeon-ами и с двумя Intel карточками на борту. Далее по порядку:
Код: Выделить всё
> uname -a
FreeBSD pppoe-gw.provider.com 7.2-RELEASE-p3 FreeBSD 7.2-RELEASE-p3 #4: Fri Sep 18 17:12:57 EEST 2009 root@gw.provider.com:/usr/obj/usr/src/sys/ROUTER i386
Код: Выделить всё
> sysctl -a | egrep -i 'hw.model|hw.ncpu'
hw.model: Intel(R) Xeon(TM) MP CPU 2.80GHz
hw.ncpu: 4
Код: Выделить всё
> pciconf -lv | grep -A4 em0
em0@pci0:2:1:0: class=0x020000 card=0x11078086 chip=0x10088086 rev=0x02 hdr=0x00
vendor = 'Intel Corporation'
device = '82544EI/GC Gigabit Ethernet Controller (Copper)'
class = network
subclass = ethernet
Код: Выделить всё
> ifconfig em0
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
ether 00:02:b3:XX:XX:XX
inet XX.XX.XX.XX netmask 0xfffffff8 broadcast XX.XX.XX.XX
media: Ethernet autoselect (1000baseTX <full-duplex>)
status: active
В пересобранном ядре ничего особенного: файрволл, HZ=1000 и DEVICE_POLLING (на всякий случай). На нем крутится mpd 5.4 (ng_car + ng_bpf).
В час пик количество подключенных клиентов доходит до 300. Трафик в районе 250-300 мбит (хотя есть где-то 400). В этот момент начинаются жудкие лаги, ошибки в netstate-e. Количество pps где-то 30 тысяч.
Код: Выделить всё
> top -S
last pid: 80743; load averages: 1.88, 1.88, 1.84 up 5+06:37:30 00:49:21
84 processes: 7 running, 61 sleeping, 16 waiting
CPU: 0.3% user, 0.0% nice, 47.7% system, 1.1% interrupt, 50.9% idle
Mem: 41M Active, 1483M Inact, 183M Wired, 13M Cache, 112M Buf, 279M Free
Swap: 3072M Total, 3072M Free
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
11 root 1 171 ki31 0K 8K CPU3 3 119.3H 100.00% idle: cpu3
37 root 1 -68 - 0K 8K CPU2 2 82.6H 97.46% em0 taskq
39 root 1 -68 - 0K 8K CPU0 0 81.5H 91.99% em1 taskq
13 root 1 171 ki31 0K 8K RUN 1 121.3H 90.28% idle: cpu1
14 root 1 171 ki31 0K 8K RUN 0 45.3H 12.35% idle: cpu0
12 root 1 171 ki31 0K 8K RUN 2 44.3H 8.59% idle: cpu2
15 root 1 -32 - 0K 8K WAIT 3 350:28 6.98% swi4: clock sio
1576 squid 1 4 0 19696K 11908K kqread 1 26:49 6.98% squid
17 root 1 -44 - 0K 8K WAIT 1 86:41 0.00% swi1: net
Как видно из топа процессы em taskq забивают процессор по полной. Пробывал разные тюнинги, включал поллинг - ничего не помогает.
Собственно в чем вопрос: начитался на разных форумах что другие доходят до 100.000 pps, 400-500 мбит. Но как ??? У меня же не все пакеты по 64 байта, большинство > 1400 байт. Карточки вроде хорошие, патчкорды - UTP Cat 6.
Буду рад любым комментам. Спасибо.
Re: Производительность TCP/IP стэка FreeBSD
Добавлено: 2009-09-24 1:13:35
paradox
на форуме наг ру читали статю как там emX тюнили и искали значение которые подходят для оптимальной работы
?
Re: Производительность TCP/IP стэка FreeBSD
Добавлено: 2009-09-24 1:15:02
milleroff
UPDATE: в разных "сочетаниях" пробывал эти тюнинги:
Код: Выделить всё
> cat /boot/loader.conf
kern.ipc.maxsockets="16424"
kern.ipc.shm_use_phys="1"
net.inet.tcp.tcbhashsize="4096"
net.inet.tcp.hostcache.hashsize="1024"
hw.em.rxd="4096"
hw.em.txd="4096"
hw.em.rx_process_limit="-1"
Код: Выделить всё
> cat /etc/sysctl.conf
kern.ipc.maxsockbuf=8388608
net.inet.ip.intr_queue_maxlen=5000
net.inet.tcp.rfc1323=1
net.inet.tcp.sendspace=3217968
net.inet.tcp.recvspace=3217968
net.inet.tcp.local_slowstart_flightsize=10
net.inet.tcp.slowstart_flightsize=54
net.inet.tcp.nolocaltimewait=1
net.inet.tcp.hostcache.expire=3900
net.inet.tcp.inflight.enable=1
net.inet.tcp.inflight.min=6144
net.inet.udp.recvspace=3217968
net.inet.udp.maxdgram=3217968
kern.polling.enable=0
kern.polling.burst_max=1000
kern.polling.idle_poll=0
kern.polling.each_burst=50
kern.polling.user_frac=20
Re: Производительность TCP/IP стэка FreeBSD
Добавлено: 2009-09-24 1:18:25
milleroff
paradox писал(а):на форуме наг ру читали статю как там emX тюнили и искали значение которые подходят для оптимальной работы
?
Читал ... Опробывал многое - не помогает.
Может есть тут люди которые подняли больше чем у меня ? Просто интересно - это вышка для фряхи ? Может я чего-то недоделал. А то не хочется ковырять какой-нить CentOS. Привык к FreeBSD

Re: Производительность TCP/IP стэка FreeBSD
Добавлено: 2009-09-24 2:06:42
milleroff
Кстати, заметил что на внешнем интерфейсе больше pps чем на внутреннем где-то на 10 тысяч. Сервер ничем кроме рутинга не занимается. Откуда эти лишние пакеты ?
Re: Производительность TCP/IP стэка FreeBSD
Добавлено: 2009-09-24 2:10:15
paradox
что значит лишние пакеты?)
у вас на внешнем интерфейсе айпи белый?
если белый вот вам и лишние пакеты
Re: Производительность TCP/IP стэка FreeBSD
Добавлено: 2009-09-24 2:27:36
milleroff
paradox писал(а):что значит лишние пакеты?)
у вас на внешнем интерфейсе айпи белый?
Белые айпи на обеих интерфейсах.
paradox писал(а):если белый вот вам и лишние пакеты
Можно по-подробнее ? Отчего это 10 kpps из-за белого айпи ?
Re: Производительность TCP/IP стэка FreeBSD
Добавлено: 2009-09-24 3:56:07
helloworld
4to tolko ludi ne pridumivaut 4to bi ne pokupat' cisco routers.
sorry, no russian here
Re: Производительность TCP/IP стэка FreeBSD
Добавлено: 2009-09-24 8:31:22
LMik
Млять! Хреново видать читали....
Вырубаем полллинг, ставим отложенные прерывания. Будет летать. Зачем просто так тупо втыкать настройки которые люди выкладывают на форуме? А осмысливать что вы делаете кто за вас будет? Приведенные выше sysctl совершенно никак не влияют на производительность сетевушек.
Re: Производительность TCP/IP стэка FreeBSD
Добавлено: 2009-09-24 10:01:42
zingel
Куча CLOSE_WAIT у Вас там должна быть
Re: Производительность TCP/IP стэка FreeBSD
Добавлено: 2009-09-24 22:16:10
milleroff
LMik писал(а):Млять! Хреново видать читали....
Вырубаем полллинг,
Это вы хреново читали ... Где вы видели включенный поллинг ? Читайте внимательнее вывод ifconfig из первого поста ..
LMik писал(а):Зачем просто так тупо втыкать настройки которые люди выкладывают на форуме? А осмысливать что вы делаете кто за вас будет?
"Тупо" никто не втыкал ... Сначало узнал что за что отвечает ... Плюс я же писал что пробывал все в разных сочетаниях ..
Re: Производительность TCP/IP стэка FreeBSD
Добавлено: 2009-09-24 22:21:38
milleroff
zingel писал(а):
Куча CLOSE_WAIT у Вас там должна быть
Код: Выделить всё
> sockstat -4c && netstat -Lan
USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS
max sshd 63079 3 tcp4 XX.XX.XX.XX:22 XX.XX.XX.XX:1763
root sshd 63076 3 tcp4 XX.XX.XX.XX:22 XX.XX.XX.XX:1763
root bsnmpd 1376 3 udp4 127.0.0.1:50351 127.0.0.1:162
Current listen queue sizes (qlen/incqlen/maxqlen)
Proto Listen Local Address
tcp4 0/0/3 *.2604
tcp6 0/0/3 *.2604
tcp4 0/0/3 *.2601
tcp6 0/0/3 *.2601
tcp4 0/0/128 *.8080
tcp4 0/0/128 *.22
tcp6 0/0/128 *.22
tcp4 0/0/128 *.5006
tcp4 0/0/2 127.0.0.1.5005
unix 0/0/5 /var/run/quagga/ospfd.vty
unix 0/0/5 /var/run/quagga/zebra.vty
unix 0/0/5 /var/run/quagga/zserv.api
unix 0/0/10 /var/run/snmpd.sock
unix 0/0/4 /var/run/devd.pipe
Re: Производительность TCP/IP стэка FreeBSD
Добавлено: 2009-09-24 22:28:41
milleroff
helloworld писал(а):4to tolko ludi ne pridumivaut 4to bi ne pokupat' cisco routers.
Типа самый умный ?
Re: Производительность TCP/IP стэка FreeBSD
Добавлено: 2009-09-24 22:33:07
hizel
посмотрите systat и systat -v
и sysctl -a | grep net.graph.threads
Re: Производительность TCP/IP стэка FreeBSD
Добавлено: 2009-09-24 22:34:00
LMik
milleroff писал(а):helloworld писал(а):4to tolko ludi ne pridumivaut 4to bi ne pokupat' cisco routers.
Типа самый умный ?
Умных тут много.
Отложенные прерывания, я уже говорил.
Re: Производительность TCP/IP стэка FreeBSD
Добавлено: 2009-09-24 22:40:51
hizel
низнаю что там пилили но в свое время включение поллинга на em приятно уменьшило нагрузку ;]
Re: Производительность TCP/IP стэка FreeBSD
Добавлено: 2009-09-24 22:45:34
paradox
давайте все же да
отчеты с еще с включеным пулингом посмотрим
а то у вас выводы непонятно при какой конфигурации
вы токо подметили что перепробовали все варианты
а текущие выводы от какой конфигурации?
Re: Производительность TCP/IP стэка FreeBSD
Добавлено: 2009-09-24 22:46:58
LMik
hizel писал(а):низнаю что там пилили но в свое время включение поллинга на em приятно уменьшило нагрузку ;]
Давно это было... давно... 100 мбит тоже давно не актуально.
Re: Производительность TCP/IP стэка FreeBSD
Добавлено: 2009-09-24 23:27:27
milleroff
LMik писал(а):Отложенные прерывания, я уже говорил.
Какие значения rx_int_delay и tx_int_delay посоветуете ?
Re: Производительность TCP/IP стэка FreeBSD
Добавлено: 2009-09-24 23:30:37
milleroff
hizel писал(а):sysctl -a | grep net.graph.threads
На 2-ух процессорной машине с HTT:
Код: Выделить всё
> sysctl net.graph.threads
net.graph.threads: 4
На 4-ех процессорной с HTT:
Код: Выделить всё
> sysctl net.graph.threads
net.graph.threads: 8
Как видно значения выставляются осью в зависимости от количества ядер.
Re: Производительность TCP/IP стэка FreeBSD
Добавлено: 2009-09-25 11:55:23
Gegemon
Читать
тут для начала.
Еще
тут и
тут.
Eugene Grosbein в своём конкретном случае
разобрался.
Re: Производительность TCP/IP стэка FreeBSD
Добавлено: 2009-09-25 17:35:30
LMik
milleroff писал(а):LMik писал(а):Отложенные прерывания, я уже говорил.
Какие значения rx_int_delay и tx_int_delay посоветуете ?
Начинайте с тысячи и смотрите top -SIs1
У меня стоит по 3000 сейчас, задержки пользователи не ощущают.
Re: Производительность TCP/IP стэка FreeBSD
Добавлено: 2009-12-09 23:51:31
wel
milleroff писал(а):Здравствуйте. Есть сервер HP Proliant DL580 с двумя Xeon-ами и с двумя Intel карточками на борту. Далее по порядку:
Код: Выделить всё
> uname -a
FreeBSD pppoe-gw.provider.com 7.2-RELEASE-p3 FreeBSD 7.2-RELEASE-p3 #4: Fri Sep 18 17:12:57 EEST 2009 root@gw.provider.com:/usr/obj/usr/src/sys/ROUTER i386
В пересобранном ядре ничего особенного: файрволл, HZ=1000 и DEVICE_POLLING (на всякий случай). На нем крутится mpd 5.4 (ng_car + ng_bpf).
Можно вопрос - зачем mpd
5.4? ради
CoA?Если да то можете поделиться впечатлениями от работы

Re: Производительность TCP/IP стэка FreeBSD
Добавлено: 2010-02-03 21:45:47
milleroff
wel писал(а):
Можно вопрос - зачем mpd
5.4? ради
CoA?Если да то можете поделиться впечатлениями от работы

Извиняюсь за поздний ответ, но да, версию 5.4 я использовал исключительно из-за COA. Написал скрипт на ruby который по крону меняет всем скорости на ночные ...
Re: Производительность TCP/IP стэка FreeBSD
Добавлено: 2010-02-04 23:13:46
Syward
Код: Выделить всё
vpn# sysctl -a | egrep -i 'hw.model|hw.ncpu'
hw.model: Intel(R) Core(TM)2 CPU 6420 @ 2.13GHz
hw.ncpu: 2
Код: Выделить всё
vpn# netstat 1
input (Total) output
packets errs bytes packets errs bytes colls
53923 0 32272016 55536 0 38249923 0
51973 0 30472158 54337 0 36350719 0
55264 0 32891746 57605 0 39839992 0
50341 0 30151125 52337 0 35920968 0
41702 0 28898060 44507 0 31403400 0
51486 0 30438992 53776 0 36358200 0
53474 0 32405496 56155 0 39953023 0
Код: Выделить всё
vpn# pkg_info|grep mpd
mpd-5.4 Multi-link PPP daemon based on netgraph(4)
Код: Выделить всё
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=1b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING>
ether xx:xx:xx:xx:xx:xx
media: Ethernet autoselect (1000baseTX <full-duplex>)
status: active
Код: Выделить всё
CPU: 0.2% user, 0.0% nice, 15.2% system, 8.8% interrupt, 75.8% idle
Mem: 104M Active, 3303M Inact, 404M Wired, 41M Cache, 399M Buf, 93M Free
Swap: 4096M Total, 4096M Free
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
12 root 1 171 ki31 0K 16K RUN 0 486.6H 91.99% idle: cpu0
15 root 1 -44 - 0K 16K WAIT 0 18.9H 36.08% swi1: net
11 root 1 171 ki31 0K 16K RUN 1 513.9H 32.47% idle: cpu1
40 root 1 -68 - 0K 16K - 0 46.1H 10.99% em1 taskq
Сервер ничем больше точно не занимается?
Может торренто-качальщики зафлуживают? Не должен такой сервер на 300 пользователях колом вставать... да и трафик какой-то нереальный для 300 пользователей.