Производительность TCP/IP стэка FreeBSD

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
milleroff
рядовой
Сообщения: 36
Зарегистрирован: 2009-07-25 18:31:32
Откуда: Кишинев

Производительность TCP/IP стэка FreeBSD

Непрочитанное сообщение milleroff » 2009-09-24 1:11:02

Здравствуйте. Есть сервер 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.

Буду рад любым комментам. Спасибо.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Производительность TCP/IP стэка FreeBSD

Непрочитанное сообщение paradox » 2009-09-24 1:13:35

на форуме наг ру читали статю как там emX тюнили и искали значение которые подходят для оптимальной работы
?

milleroff
рядовой
Сообщения: 36
Зарегистрирован: 2009-07-25 18:31:32
Откуда: Кишинев

Re: Производительность TCP/IP стэка FreeBSD

Непрочитанное сообщение milleroff » 2009-09-24 1:15:02

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

milleroff
рядовой
Сообщения: 36
Зарегистрирован: 2009-07-25 18:31:32
Откуда: Кишинев

Re: Производительность TCP/IP стэка FreeBSD

Непрочитанное сообщение milleroff » 2009-09-24 1:18:25

paradox писал(а):на форуме наг ру читали статю как там emX тюнили и искали значение которые подходят для оптимальной работы
?
Читал ... Опробывал многое - не помогает.

Может есть тут люди которые подняли больше чем у меня ? Просто интересно - это вышка для фряхи ? Может я чего-то недоделал. А то не хочется ковырять какой-нить CentOS. Привык к FreeBSD :sorry:

milleroff
рядовой
Сообщения: 36
Зарегистрирован: 2009-07-25 18:31:32
Откуда: Кишинев

Re: Производительность TCP/IP стэка FreeBSD

Непрочитанное сообщение milleroff » 2009-09-24 2:06:42

Кстати, заметил что на внешнем интерфейсе больше pps чем на внутреннем где-то на 10 тысяч. Сервер ничем кроме рутинга не занимается. Откуда эти лишние пакеты ?

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Производительность TCP/IP стэка FreeBSD

Непрочитанное сообщение paradox » 2009-09-24 2:10:15

что значит лишние пакеты?)
у вас на внешнем интерфейсе айпи белый?
если белый вот вам и лишние пакеты

milleroff
рядовой
Сообщения: 36
Зарегистрирован: 2009-07-25 18:31:32
Откуда: Кишинев

Re: Производительность TCP/IP стэка FreeBSD

Непрочитанное сообщение milleroff » 2009-09-24 2:27:36

paradox писал(а):что значит лишние пакеты?)
у вас на внешнем интерфейсе айпи белый?
Белые айпи на обеих интерфейсах.
paradox писал(а):если белый вот вам и лишние пакеты
Можно по-подробнее ? Отчего это 10 kpps из-за белого айпи ?

Аватара пользователя
helloworld
ст. сержант
Сообщения: 368
Зарегистрирован: 2007-10-03 8:06:37
Откуда: Northern Colorado

Re: Производительность TCP/IP стэка FreeBSD

Непрочитанное сообщение helloworld » 2009-09-24 3:56:07

4to tolko ludi ne pridumivaut 4to bi ne pokupat' cisco routers.

sorry, no russian here

Аватара пользователя
LMik
капитан
Сообщения: 1852
Зарегистрирован: 2007-07-17 9:14:39
Откуда: МО
Контактная информация:

Re: Производительность TCP/IP стэка FreeBSD

Непрочитанное сообщение LMik » 2009-09-24 8:31:22

Млять! Хреново видать читали....

Вырубаем полллинг, ставим отложенные прерывания. Будет летать. Зачем просто так тупо втыкать настройки которые люди выкладывают на форуме? А осмысливать что вы делаете кто за вас будет? Приведенные выше sysctl совершенно никак не влияют на производительность сетевушек.
BSD... Join the dark side.
Виpус детям не игpушка, не товаpищ и не дpуг!

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: Производительность TCP/IP стэка FreeBSD

Непрочитанное сообщение zingel » 2009-09-24 10:01:42

Код: Выделить всё

sockstat -4c  && netstat -Lan
Куча CLOSE_WAIT у Вас там должна быть
Z301171463546 - можно пожертвовать мне денег

milleroff
рядовой
Сообщения: 36
Зарегистрирован: 2009-07-25 18:31:32
Откуда: Кишинев

Re: Производительность TCP/IP стэка FreeBSD

Непрочитанное сообщение milleroff » 2009-09-24 22:16:10

LMik писал(а):Млять! Хреново видать читали....

Вырубаем полллинг,
Это вы хреново читали ... Где вы видели включенный поллинг ? Читайте внимательнее вывод ifconfig из первого поста ..
LMik писал(а):Зачем просто так тупо втыкать настройки которые люди выкладывают на форуме? А осмысливать что вы делаете кто за вас будет?
"Тупо" никто не втыкал ... Сначало узнал что за что отвечает ... Плюс я же писал что пробывал все в разных сочетаниях ..

milleroff
рядовой
Сообщения: 36
Зарегистрирован: 2009-07-25 18:31:32
Откуда: Кишинев

Re: Производительность TCP/IP стэка FreeBSD

Непрочитанное сообщение milleroff » 2009-09-24 22:21:38

zingel писал(а):

Код: Выделить всё

sockstat -4c  && netstat -Lan
Куча 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

milleroff
рядовой
Сообщения: 36
Зарегистрирован: 2009-07-25 18:31:32
Откуда: Кишинев

Re: Производительность TCP/IP стэка FreeBSD

Непрочитанное сообщение milleroff » 2009-09-24 22:28:41

helloworld писал(а):4to tolko ludi ne pridumivaut 4to bi ne pokupat' cisco routers.
Типа самый умный ?

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: Производительность TCP/IP стэка FreeBSD

Непрочитанное сообщение hizel » 2009-09-24 22:33:07

посмотрите systat и systat -v
и sysctl -a | grep net.graph.threads
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
LMik
капитан
Сообщения: 1852
Зарегистрирован: 2007-07-17 9:14:39
Откуда: МО
Контактная информация:

Re: Производительность TCP/IP стэка FreeBSD

Непрочитанное сообщение LMik » 2009-09-24 22:34:00

milleroff писал(а):
helloworld писал(а):4to tolko ludi ne pridumivaut 4to bi ne pokupat' cisco routers.
Типа самый умный ?
Умных тут много. :)

Отложенные прерывания, я уже говорил.
BSD... Join the dark side.
Виpус детям не игpушка, не товаpищ и не дpуг!

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: Производительность TCP/IP стэка FreeBSD

Непрочитанное сообщение hizel » 2009-09-24 22:40:51

низнаю что там пилили но в свое время включение поллинга на em приятно уменьшило нагрузку ;]
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Производительность TCP/IP стэка FreeBSD

Непрочитанное сообщение paradox » 2009-09-24 22:45:34

давайте все же да
отчеты с еще с включеным пулингом посмотрим
а то у вас выводы непонятно при какой конфигурации
вы токо подметили что перепробовали все варианты
а текущие выводы от какой конфигурации?

Аватара пользователя
LMik
капитан
Сообщения: 1852
Зарегистрирован: 2007-07-17 9:14:39
Откуда: МО
Контактная информация:

Re: Производительность TCP/IP стэка FreeBSD

Непрочитанное сообщение LMik » 2009-09-24 22:46:58

hizel писал(а):низнаю что там пилили но в свое время включение поллинга на em приятно уменьшило нагрузку ;]
Давно это было... давно... 100 мбит тоже давно не актуально.
BSD... Join the dark side.
Виpус детям не игpушка, не товаpищ и не дpуг!

milleroff
рядовой
Сообщения: 36
Зарегистрирован: 2009-07-25 18:31:32
Откуда: Кишинев

Re: Производительность TCP/IP стэка FreeBSD

Непрочитанное сообщение milleroff » 2009-09-24 23:27:27

LMik писал(а):Отложенные прерывания, я уже говорил.
Какие значения rx_int_delay и tx_int_delay посоветуете ?

milleroff
рядовой
Сообщения: 36
Зарегистрирован: 2009-07-25 18:31:32
Откуда: Кишинев

Re: Производительность TCP/IP стэка FreeBSD

Непрочитанное сообщение milleroff » 2009-09-24 23:30:37

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
Как видно значения выставляются осью в зависимости от количества ядер.

Gegemon
ст. сержант
Сообщения: 316
Зарегистрирован: 2007-10-28 16:03:30
Контактная информация:

Re: Производительность TCP/IP стэка FreeBSD

Непрочитанное сообщение Gegemon » 2009-09-25 11:55:23

Читать тут для начала.
Еще тут и тут.
Eugene Grosbein в своём конкретном случае разобрался.
"Попробую и обязательно отпишусь" - самое популярное последнее сообщение ветки форума

Аватара пользователя
LMik
капитан
Сообщения: 1852
Зарегистрирован: 2007-07-17 9:14:39
Откуда: МО
Контактная информация:

Re: Производительность TCP/IP стэка FreeBSD

Непрочитанное сообщение LMik » 2009-09-25 17:35:30

milleroff писал(а):
LMik писал(а):Отложенные прерывания, я уже говорил.
Какие значения rx_int_delay и tx_int_delay посоветуете ?
Начинайте с тысячи и смотрите top -SIs1

У меня стоит по 3000 сейчас, задержки пользователи не ощущают.
BSD... Join the dark side.
Виpус детям не игpушка, не товаpищ и не дpуг!

wel
сержант
Сообщения: 170
Зарегистрирован: 2007-02-27 11:59:41

Re: Производительность TCP/IP стэка FreeBSD

Непрочитанное сообщение wel » 2009-12-09 23:51:31

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?Если да то можете поделиться впечатлениями от работы :)

milleroff
рядовой
Сообщения: 36
Зарегистрирован: 2009-07-25 18:31:32
Откуда: Кишинев

Re: Производительность TCP/IP стэка FreeBSD

Непрочитанное сообщение milleroff » 2010-02-03 21:45:47

wel писал(а): Можно вопрос - зачем mpd 5.4? ради CoA?Если да то можете поделиться впечатлениями от работы :)
Извиняюсь за поздний ответ, но да, версию 5.4 я использовал исключительно из-за COA. Написал скрипт на ruby который по крону меняет всем скорости на ночные ...

Аватара пользователя
Syward
мл. сержант
Сообщения: 81
Зарегистрирован: 2008-07-06 22:27:33
Откуда: Mytischi
Контактная информация:

Re: Производительность TCP/IP стэка FreeBSD

Непрочитанное сообщение Syward » 2010-02-04 23:13:46

Код: Выделить всё

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#  ifconfig|grep -c ng
563

Код: Выделить всё

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 пользователей.
Существует рoвнo oдин интуитивнo пoнятный интерфейс - сoска. Все остальные oсваиваются путем oбучения или методом тыка...©