FreeBSD 9.1 amd64 NAS

Обсуждаем OS FreeBSD и сервисы на ней.

FreeBSD 9.1 amd64 NAS

Сообщение kirush » 03 янв 2013, 08:27

Помогите разобраться что за чудеса творятся, 2 NASa на freebsd 9.1 amd64
Первый: 2 x XEONA 6 ядерных с 2портовой intel (igb) сетевухой:
Функционал: radius, mpd5, netgraph (шейпер)
при нагрузке:

netstat -w1 -h -Iigb0
Код: Выделить всё
            input         (igb0)           output
   packets  errs idrops      bytes    packets  errs      bytes colls
       15k     0     0        14M        14k     0       6.8M     0
       14k     0     0        12M        13k     0       6.4M     0
       16k     0     0        15M        15k     0       6.6M     0
       13k     0     0        11M        14k     0       6.9M     0


top -SPHI
Код: Выделить всё
last pid: 71625;  load averages:  6.33,  7.94,  8.85                                                                                    up 0+11:43:08  13:45:39
289 processes: 29 running, 198 sleeping, 2 zombie, 60 waiting
CPU 0:   0.0% user,  0.0% nice,  2.3% system, 22.1% interrupt, 75.6% idle
CPU 1:   0.8% user,  0.0% nice,  2.3% system, 29.8% interrupt, 67.2% idle
CPU 2:   0.0% user,  0.0% nice,  4.6% system, 27.5% interrupt, 67.9% idle
CPU 3:   0.0% user,  0.0% nice,  1.5% system, 24.4% interrupt, 74.0% idle
CPU 4:   0.0% user,  0.0% nice,  2.3% system, 13.0% interrupt, 84.7% idle
CPU 5:   0.0% user,  0.0% nice,  0.0% system, 22.1% interrupt, 77.9% idle
CPU 6:   0.0% user,  0.0% nice,  2.3% system, 23.7% interrupt, 74.0% idle
CPU 7:   0.0% user,  0.0% nice,  0.0% system, 23.7% interrupt, 76.3% idle
CPU 8:   0.0% user,  0.0% nice,  4.6% system,  6.1% interrupt, 89.3% idle
CPU 9:   0.0% user,  0.0% nice,  9.2% system,  0.0% interrupt, 90.8% idle
CPU 10:  0.0% user,  0.0% nice, 10.7% system,  0.0% interrupt, 89.3% idle
CPU 11:  0.0% user,  0.0% nice, 17.6% system,  0.0% interrupt, 82.4% idle
CPU 12:  0.0% user,  0.0% nice, 13.0% system,  0.0% interrupt, 87.0% idle
CPU 13:  0.0% user,  0.0% nice, 20.6% system,  0.0% interrupt, 79.4% idle
CPU 14:  0.0% user,  0.0% nice, 16.8% system,  0.0% interrupt, 83.2% idle
CPU 15:  0.8% user,  0.0% nice, 22.1% system,  0.0% interrupt, 77.1% idle
CPU 16:  0.0% user,  0.0% nice, 19.8% system,  0.0% interrupt, 80.2% idle
CPU 17:  0.0% user,  0.0% nice, 18.3% system,  0.0% interrupt, 81.7% idle
CPU 18:  0.0% user,  0.0% nice, 18.3% system,  0.0% interrupt, 81.7% idle
CPU 19:  0.0% user,  0.0% nice, 18.3% system,  0.0% interrupt, 81.7% idle
CPU 20:  3.1% user,  0.0% nice, 16.8% system,  0.0% interrupt, 80.2% idle
CPU 21:  0.8% user,  0.0% nice, 23.7% system,  0.0% interrupt, 75.6% idle
CPU 22:  0.0% user,  0.0% nice, 21.4% system,  0.0% interrupt, 78.6% idle
CPU 23:  0.0% user,  0.0% nice, 20.6% system,  0.0% interrupt, 79.4% idle
Mem: 130M Active, 705M Inact, 955M Wired, 417M Buf, 2130M Free
Swap: 4096M Total, 4096M Free

  PID USERNAME PRI NICE   SIZE    RES STATE   C   TIME   WCPU COMMAND
   11 root     155 ki31     0K   384K CPU10  10 665:48 93.36% idle{idle: cpu10}
   11 root     155 ki31     0K   384K CPU9    9 672:06 89.89% idle{idle: cpu9}
   11 root     155 ki31     0K   384K RUN     8 661:47 88.57% idle{idle: cpu8}
   11 root     155 ki31     0K   384K CPU11  11 664:58 88.28% idle{idle: cpu11}
   11 root     155 ki31     0K   384K RUN    15 624:01 81.98% idle{idle: cpu15}
   11 root     155 ki31     0K   384K CPU19  19 622:58 80.57% idle{idle: cpu19}
   11 root     155 ki31     0K   384K CPU22  22 623:50 79.59% idle{idle: cpu22}
   11 root     155 ki31     0K   384K CPU0    0 588:43 79.39% idle{idle: cpu0}
   11 root     155 ki31     0K   384K CPU16  16 624:53 79.30% idle{idle: cpu16}
   11 root     155 ki31     0K   384K CPU12  12 626:01 78.47% idle{idle: cpu12}
   11 root     155 ki31     0K   384K CPU13  13 624:44 77.49% idle{idle: cpu13}
   11 root     155 ki31     0K   384K CPU21  21 622:56 77.10% idle{idle: cpu21}
   11 root     155 ki31     0K   384K CPU4    4 593:10 77.10% idle{idle: cpu4}
   11 root     155 ki31     0K   384K CPU14  14 625:34 76.76% idle{idle: cpu14}
   11 root     155 ki31     0K   384K CPU18  18 624:14 76.46% idle{idle: cpu18}
   11 root     155 ki31     0K   384K CPU23  23 622:01 75.39% idle{idle: cpu23}
   11 root     155 ki31     0K   384K RUN    20 624:02 74.85% idle{idle: cpu20}
   11 root     155 ki31     0K   384K RUN    17 623:24 74.56% idle{idle: cpu17}
   11 root     155 ki31     0K   384K CPU5    5 596:37 74.17% idle{idle: cpu5}
   11 root     155 ki31     0K   384K CPU2    2 599:30 69.48% idle{idle: cpu2}
   11 root     155 ki31     0K   384K CPU3    3 572:30 66.99% idle{idle: cpu3}
   11 root     155 ki31     0K   384K CPU7    7 581:33 66.80% idle{idle: cpu7}
   11 root     155 ki31     0K   384K CPU1    1 594:19 62.79% idle{idle: cpu1}
   11 root     155 ki31     0K   384K CPU6    6 599:50 62.60% idle{idle: cpu6}
   12 root     -92    -     0K   960K WAIT    1  85:58 37.79% intr{irq257: igb0:que}
   12 root     -92    -     0K   960K WAIT    6  85:29 37.35% intr{irq262: igb0:que}
   12 root     -92    -     0K   960K WAIT    2  86:38 29.20% intr{irq258: igb0:que}
   12 root     -92    -     0K   960K WAIT    7 101:38 29.05% intr{irq263: igb0:que}


В то же время есть второй NAS на i3 c em драйверами:
top -SPHI
Код: Выделить всё
last pid: 98036;  load averages:  1.39,  1.49,  1.54                                                                                    up 0+13:05:00  13:51:13
111 processes: 6 running, 87 sleeping, 18 waiting
CPU 0:  0.0% user,  0.0% nice, 54.8% system,  0.0% interrupt, 45.2% idle
CPU 1:  0.0% user,  0.0% nice, 16.1% system,  6.5% interrupt, 77.4% idle
CPU 2:  0.0% user,  0.0% nice, 32.3% system,  0.0% interrupt, 67.7% idle
CPU 3:  0.0% user,  0.0% nice, 35.5% system,  0.0% interrupt, 64.5% idle
Mem: 34M Active, 777M Inact, 495M Wired, 6080K Cache, 209M Buf, 616M Free
Swap: 4096M Total, 4096M Free

  PID USERNAME PRI NICE   SIZE    RES STATE   C   TIME   WCPU COMMAND
   11 root     155 ki31     0K    64K RUN     1 683:14 77.39% idle{idle: cpu1}
   11 root     155 ki31     0K    64K RUN     3 645:47 71.78% idle{idle: cpu3}
   11 root     155 ki31     0K    64K CPU2    2 642:18 67.77% idle{idle: cpu2}
   11 root     155 ki31     0K    64K RUN     0 570:15 51.46% idle{idle: cpu0}
    0 root     -92    0     0K   224K CPU0    0 192:43 44.97% kernel{em0 que}
   13 root     -16    -     0K    64K sleep   2  84:00 23.00% ng_queue{ng_queue1}
   13 root     -16    -     0K    64K sleep   1  84:08 22.75% ng_queue{ng_queue0}
   13 root     -16    -     0K    64K sleep   2  83:57 22.36% ng_queue{ng_queue2}
   13 root     -16    -     0K    64K sleep   1  83:59 21.19% ng_queue{ng_queue3}
   12 root     -92    -     0K   288K WAIT    2  36:13  9.47% intr{irq265: em1:rx 0}
   12 root     -92    -     0K   288K WAIT    2   7:31  1.66% intr{irq266: em1:tx 0}
  927 root      20    0   202M 41504K select  1   5:22  0.49% mpd5{mpd5}
  995 root      20    0 31668K  4420K select  3   0:13  0.10% zebra
   12 root     -60    -     0K   288K WAIT    1   3:57  0.00% intr{swi4: clock}
    0 root     -92    0     0K   224K -       1   2:14  0.00% kernel{dummynet}
 1101 root      20    0 37996K  9240K uwait   0   1:25  0.00% utm5_radius{utm5_radius}
   15 root     -16    -     0K    16K -       1   1:18  0.00% yarrow

при нагрузке:

netstat -w1 -h -Iem0
Код: Выделить всё
            input          (em0)           output
   packets  errs idrops      bytes    packets  errs      bytes colls
       20k     0     0        21M        16k     0       6.7M     0
       21k     0     0        23M        16k     0       7.1M     0
       22k     0     0        24M        17k     0       7.7M     0


После увиденного начал крутить тюнинг, но нагрузки смешные.
В часы пик (до 300-400Мбит/с на роутер) нагрузка на мощном сервере возрастает до 20 average и все заваливается очередями.

Накрутил до такого:
/boot/loader.conf
Код: Выделить всё
netgraph_load="YES"
ng_ipfw_load="YES"
ng_car_load="YES"
autoboot_delay="1"
kern.ipc.maxpipekva="32000000"
hw.igb.rxd=4096
hw.igb.txd=4096
hw.igb.max_interrupt_rate=32000


less /etc/sysctl.conf
Код: Выделить всё
net.inet.ip.forwarding=1
net.inet.ip.fastforwarding=1
net.inet.ip.redirect=0
net.inet.ip.intr_queue_maxlen=10240
net.inet.tcp.delayed_ack=0
net.inet.tcp.sendspace=3217968
net.inet.tcp.recvspace=3217968
net.inet.tcp.blackhole=2
net.inet.tcp.drop_synfin=1
net.inet.udp.recvspace=65535
net.inet.udp.maxdgram=57344
net.inet.udp.blackhole=1
net.inet.icmp.drop_redirect=1
net.inet.icmp.icmplim=200
net.inet.icmp.drop_redirect=1
kern.ipc.nmbclusters=400000
kern.ipc.somaxconn=8192
kern.ipc.maxsockbuf=83886080
kern.ipc.maxsockets=204800
kern.ipc.shmall=8388608
net.local.stream.recvspace=65535
net.local.stream.sendspace=65535

но и это не спасло.

ipfw.conf
Код: Выделить всё
00010     181884      16382428 deny ip from any to table(50) dst-port 135-139,445
00010     187498      17600048 deny ip from table(50) to any dst-port 135-139,445
00030          6           264 deny ip from any to table(20) dst-port 22
00060   20178202    5843214445 allow ip from 172.16.0.0/16 to 10.0.0.0/8
00060    4935741     349274219 allow ip from 10.0.0.0/8 to 172.16.0.0/16
00099    4601461     549651491 allow ip from any to any via lo0
00180  919184129  425389336692 allow ip from 10.0.0.0/8 to 10.0.0.0/8 in recv igb1
00180 1196334153 1065094085564 allow ip from 10.0.0.0/8 to 10.0.0.0/8 out xmit igb1
00210    6833708     685236677 allow ip from 172.16.0.0/16 to 172.16.0.0/16
00240    1495928     399786619 allow ip from any to me
00250    2149835     230655428 allow ip from me to any
01000   34531407   30906027365 allow ip from any to table(30)
01000   30950224   14061136330 allow ip from table(30) to any
03000     280389     135646215 netgraph tablearg ip from table(105) to any in recv ng*
03000     301370     289195850 netgraph tablearg ip from any to table(110) out xmit ng*
03500  849038581  374112825085 allow ip from table(100) to any
03500 1057548376 1046505656451 allow ip from any to table(100)
04000    1385327    1911201279 allow ip from table(99) to any
04000     731285      51537058 allow ip from any to table(99)
04100      33872       2621244 allow ip from 192.168.0.254 to any
04100          4           200 allow ip from any to 192.168.0.254
65535   34711897    5723493059 deny ip from any to any


Добавил
Код: Выделить всё
net.graph.maxalloc=65536
net.graph.maxdata=65536

Исчезли failure из
vmstat -z | grep Graph
Код: Выделить всё
NetGraph items:         104,  65540,       7,    3328, 9485623,   0,   0
NetGraph data items:    104,  65540,       0,    2813,22953496,   0,   0


При отключении шейпера - все нормализуется:

Код: Выделить всё
${fwcmd}        add     3000    netgraph tablearg ip from table\(105\) to any in recv ng\*
${fwcmd}        add     3000    netgraph tablearg ip from any to table\(110\) out xmit ng\*


Шейпим таким способом:
Код: Выделить всё
[Thu Jan  3 08:16:46 2013] Action : open
[Thu Jan  3 08:16:46 2013] Executing '/usr/sbin/ngctl mkpeer ipfw: car 9652 upper', exit code = 0
[Thu Jan  3 08:16:46 2013] Executing '/usr/sbin/ngctl name ipfw:9652 sh4826', exit code = 0
[Thu Jan  3 08:16:46 2013] Executing '/usr/sbin/ngctl connect sh4826: ipfw: lower 9653', exit code = 0
[Thu Jan  3 08:16:46 2013] Executing '/usr/sbin/ngctl msg sh4826: setconf { upstream={ cbs=2176000 ebs=2176000 cir=17408000 greenAction=1 yellowAction=1 redAction=2 mode=0 } downstream={ cbs=2176000 ebs=2176000 cir=17408000 greenAction=1 yellowAction=1 redAction=2 mode=0 } }', exit code = 0
[Thu Jan  3 08:16:46 2013] Executing '/sbin/ipfw -q table 105 add 172.16.18.218 9652', exit code = 0
[Thu Jan  3 08:16:46 2013] Executing '/sbin/ipfw -q table 110 add 172.16.18.218 9653', exit code = 0
[Thu Jan  3 08:16:46 2013] Executing '/sbin/ipfw -q table 100 add 172.16.18.218', exit code = 0


Подскажите откуда берется цифра 104:

# vmstat -z | grep Graph
Код: Выделить всё
NetGraph items:         104,  65540,       7,    3328, 9485623,   0,   0
NetGraph data items:    104,  65540,       0,    2813,22953496,   0,   0

На другой машине (где все ок) - там стоит 72. Может в этом дело?
kirush
проходил мимо
 
Сообщения: 1
Зарегистрирован: 03 янв 2013, 08:23

Re: FreeBSD 9.1 amd64 NAS

Сообщение lehisnoe » 11 янв 2013, 11:15

kirush писал(а):Подскажите откуда берется цифра 104
Это значение переменной debug.sizeof.namecache sysctl'а.
kirush писал(а):Может в этом дело?
Эт вряд ли.
Дрова для igb какой версии?
Какие версии фри на обоих серверах?
No users
No troubles
No money
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
lehisnoe
Site Admin
 
Сообщения: 539
Зарегистрирован: 11 июн 2008, 14:09
Откуда: Moscow


Вернуться в FreeBSD

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 23