Jump to content
Калькуляторы

FreeBSD 9.1 роутер, шейпер, без ната на 1 гиг

Доброе время суток!

Есть система:

# uname -a
FreeBSD ipn-gw-11 9.1-STABLE FreeBSD 9.1-STABLE #0: Wed Jan 30 01:51:13 VLAT 2013     root@ipn-gw-mgr.xxx.ru:/usr/obj/usr/src/sys/GATEWAY_KERNEL_9  amd64

 

# sysctl -a | egrep -i 'hw.machine|hw.model|hw.ncpu'
hw.machine: amd64
hw.model: Intel(R) Core(TM) i5 CPU         750  @ 2.67GHz
hw.ncpu: 4
hw.machine_arch: amd64

 

 

Сетевые:

# pciconf -lv | grep -A4 em[12] 
em1@pci0:1:0:1: class=0x020000 card=0x125f8086 chip=0x105f8086 rev=0x06 hdr=0x00
   vendor     = 'Intel Corporation'
   device     = '82571EB Gigabit Ethernet Controller'
   class      = network
   subclass   = ethernet
em2@pci0:5:0:0: class=0x020000 card=0x83691043 chip=0x10d38086 rev=0x00 hdr=0x00
   vendor     = 'Intel Corporation'
   device     = '82574L Gigabit Network Connection'
   class      = network
   subclass   = ethernet

 

# cat /boot/loader.conf 
net.isr.maxthreads=4
net.isr.dispatch=deferred
net.isr.bindthreads=0

net.graph.maxalloc=65536
net.graph.maxdata=65536

hw.em.rxd=4096
hw.em.txd=4096
hw.em.rx_int_delay=200
hw.em.tx_int_delay=200
hw.em.rx_abs_int_delay=4000
hw.em.tx_abs_int_delay=4000
hw.em.rx_process_limit=4096

 

# cat /etc/sysctl.conf
net.inet.ip.dummynet.io_fast=1
net.inet.ip.fw.one_pass=1
net.inet.ip.dummynet.pipe_slot_limit=1000
net.inet.icmp.icmplim=20000
net.inet.ip.dummynet.hash_size=65535
net.inet.ip.dummynet.expire=0
net.inet.ip.forwarding=1
net.inet.ip.fastforwarding=0
net.link.ether.inet.proxyall=1

dev.em.1.rx_int_delay=200
dev.em.1.tx_int_delay=200
dev.em.1.rx_abs_int_delay=4000
dev.em.1.tx_abs_int_delay=4000
dev.em.1.rx_processing_limit=4096

dev.em.2.rx_int_delay=200
dev.em.2.tx_int_delay=200
dev.em.2.rx_abs_int_delay=4000
dev.em.2.tx_abs_int_delay=4000
dev.em.2.rx_processing_limit=4096

kern.ipc.nmbclusters=128000
kern.ipc.maxsockbuf=16000000
net.graph.maxdgram=8388608
net.graph.recvspace=8388608

 

# top -aSCHIP
last pid: 42464;  load averages:  0.77,  0.78,  0.74       up 0+19:50:32  14:56:13
105 processes: 8 running, 75 sleeping, 22 waiting
CPU 0:  0.0% user,  0.0% nice,  3.5% system, 13.0% interrupt, 83.5% idle
CPU 1:  0.0% user,  0.0% nice,  0.4% system, 17.7% interrupt, 81.9% idle
CPU 2:  0.0% user,  0.0% nice,  0.0% system, 23.6% interrupt, 76.4% idle
CPU 3:  0.0% user,  0.0% nice, 15.0% system,  4.7% interrupt, 80.3% idle
Mem: 44M Active, 27M Inact, 243M Wired, 224K Cache, 21M Buf, 3601M Free
Swap: 

 PID USERNAME   PRI NICE   SIZE    RES STATE   C   TIME    CPU COMMAND
  11 root       155 ki31     0K    64K RUN     3  17.8H 89.45% [idle{idle: cpu3}]
  11 root       155 ki31     0K    64K CPU0    0  17.6H 87.79% [idle{idle: cpu0}]
  11 root       155 ki31     0K    64K CPU2    2  17.1H 85.64% [idle{idle: cpu2}]
  11 root       155 ki31     0K    64K CPU1    1  17.3H 81.30% [idle{idle: cpu1}]
  12 root       -72    -     0K   384K CPU2    3 217:34 35.16% [intr{swi1: netisr 1}]
   0 root       -92    0     0K   288K CPU0    3  89:07 11.43% [kernel{em1 que}]
  12 root       -72    -     0K   384K WAIT    2  50:50  7.18% [intr{swi1: netisr 0}]
  12 root       -92    -     0K   384K WAIT    0  44:35  6.15% [intr{irq266: em2:rx 0}]
  12 root       -72    -     0K   384K CPU1    2  53:21  6.05% [intr{swi1: netisr 3}]
  12 root       -72    -     0K   384K WAIT    1  45:00  5.42% [intr{swi1: netisr 2}]
  12 root       -92    -     0K   384K WAIT    2  11:07  1.03% [intr{irq267: em2:tx 0}]

 

# netstat -hdw1
           input        (Total)           output
  packets  errs idrops      bytes    packets  errs      bytes colls drops
     136k     0     0       125M       136k     0       125M     0     0 
     136k     0     0       124M       136k     0       123M     0     0 
     142k     0     0       130M       142k     0       131M     0     0 
     139k     0     0       129M       139k     0       128M     0     0 
     141k     0     0       128M       140k     0       127M     0     0 
     140k     0     0       128M       140k     0       129M     0     0 
     130k     0     0       119M       129k     0       119M     0     0 
     139k     0     0       128M       139k     0       127M     0     0 
     140k     0     0       127M       139k     0       127M     0     0 

 

Система производит форвардинг из и в ng_vlan (порядка 1000 шт), между двумя сетевыми em1 в сторону абонентов, em2 в сторону ядра. Шейпинг через dummynet (прибит к 0 ядру). Немного фильрации через ipfw. Слив Netflow через ng_netflow. Ната нет. Ожидаемая скорость от системы - переваривать весь гиг туда-обратно.

 

В ЧНН процесс [intr{swi1: netisr 1}] начинает отжирать 100% По графикам где-то не более 200-300 мегабит в сторону абонентов. Если включить net.inet.ip.fastforwarding=1, нагрузка падает, но на выходе netstat -hdw1 начинает массово появляться дропы. В поиске где именно дропы появляются, обнаружено, что дропается на vlan11 (основной vlan, куда уходит юзерский трафик в сторону ядра. прибит через netgraph в сторону em2). Абоненты начинают жаловаться на недостаточную скорость, особенно от них.

 

Может что-то еще подкрутить? Хотя я больше грешу на чип 82571EB у em1... Судя по всему он на ядра плохо параллелится. В принципе можно сменить сетевку на 82576EB, но их нужно покупать, а целесообразность еще не так очевидна. Ваши мысли?

Спасибо за внимание.

Share this post


Link to post
Share on other sites

net.isr.bindthreads=1 можно для начала попробовать.

Edited by Hawk128

Share this post


Link to post
Share on other sites

net.isr.bindthreads=1 можно для начала попробовать.

Забыл сказать, что пробовал... Разницы никакой

Share this post


Link to post
Share on other sites

netstat -Q

 

 

# netstat -Q
Configuration:
Setting                        Current        Limit
Thread count                         4            4
Default queue limit                256        10240
Dispatch policy               deferred          n/a
Threads bound to CPUs         disabled          n/a

Protocols:
Name   Proto QLimit Policy Dispatch Flags
ip         1    256   flow  default   ---
igmp       2    256 source  default   ---
rtsock     3    256 source  default   ---
arp        7    256 source  default   ---
ether      9    256 source   direct   ---
ip6       10    256   flow  default   ---

Workstreams:
WSID CPU   Name     Len WMark   Disp'd  HDisp'd   QDrops   Queued  Handled
  0   0   ip         0   256        0        0     3462 351659696 351659696
  0   0   igmp       0     0        0        0        0        0        0
  0   0   rtsock     0    10        0        0        0    11931    11931
  0   0   arp        0     7        0        0        0   688192   688192
  0   0   ether      0     0 2658124270        0        0        0 2658124270
  0   0   ip6        0     0        0        0        0        0        0
  1   1   ip         0   256        0        0   511869 1538699253 1538699253
  1   1   igmp       0     0        0        0        0        0        0
  1   1   rtsock     0     0        0        0        0        0        0
  1   1   arp        0    50        0        0        0   530532   530532
  1   1   ether      0     0 130478825        0        0        0 130478825
  1   1   ip6        0     0        0        0        0        0        0
  2   2   ip         0   256        0        0        1 295363775 295363775
  2   2   igmp       0     0        0        0        0        0        0
  2   2   rtsock     0     0        0        0        0        0        0
  2   2   arp        0     9        0        0        0   699123   699123
  2   2   ether      0     0 130666723        0        0        0 130666723
  2   2   ip6        0     0        0        0        0        0        0
  3   3   ip         0   256        0        0     1378 374002067 374002067
  3   3   igmp       0     0        0        0        0        0        0
  3   3   rtsock     0     0        0        0        0        0        0
  3   3   arp        0     8        0        0        0  1414854  1414854
  3   3   ether      0     0 2657009018        0        0        0 2657009018
  3   3   ip6        0     0        0        0        0        0        0

Но конкретно эти дропы имхо капля в море

 

Более интересно выглядит:

# netstat -idbhWn
Name      Mtu Network       Address              Ipkts Ierrs Idrop     Ibytes    Opkts Oerrs     Obytes  Coll Drop
em0      1500 <Link#1>      00:16:31:fe:75:7c        0     0     0          0        0     0          0     0    0 
em0      1500 fe80::216:31f fe80::216:31ff:fe        0     -     -          0        0     -          0     -    - 
em1      1500 <Link#2>      00:16:31:fe:75:7d     1.4G   395     0       1.0T     1.6G     0       1.6T     0    0 
em1      1500 fe80::216:31f fe80::216:31ff:fe        0     -     -          0        0     -          0     -    - 
usbus0      0 <Link#3>                               0     0     0          0        0     0          0     0    0 
em2      1500 <Link#4>      90:e6:ba:a6:56:11     1.6G     0     0       1.6T     1.4G     0       1.0T     0    0 
em2      1500 fe80::92e6:ba fe80::92e6:baff:f        0     -     -          0        1     -         76     -    - 
em3      1500 <Link#5>      90:e6:ba:a6:57:16     715k     0     0       155M     736k     0       113M     0    0 
em3      1500 192.168.20.0/ 192.168.20.11         713k     -     -       146M     736k     -       103M     -    - 
em3      1500 fe80::92e6:ba fe80::92e6:baff:f        0     -     -          0        1     -         76     -    - 
usbus1      0 <Link#6>                               0     0     0          0        0     0          0     0    0 
ipfw0   65536 <Link#7>                               0     0     0          0        0     0          0     0    0 
lo0     16384 <Link#8>                             124     0     0       504k      124     0       504k     0    0 
lo0     16384 ::1/128       ::1                      0     -     -          0        0     -          0     -    - 
lo0     16384 fe80::1%lo0/6 fe80::1                  0     -     -          0        0     -          0     -    - 
lo0     16384 127.0.0.0/8   127.0.0.1              124     -     -       504k      124     -       504k     -    - 
vlan11   1500 <Link#9>      90:e6:ba:a6:56:11     1.2G     0     0       1.1T     1.1G     0       808G     0 9.4k 
vlan11   1500 xx.yy.64.0/24 xx.yy.64.12              0     -     -          0     3.4M     -       4.0G     -    - 
vlan1    1500 <Link#10>     00:16:31:fe:75:7d       1M     0     0       489M     463k     0        82M     0    0 
vlan1    1500 192.168.128.0 192.168.129.50         31k     -     -       2.5M     2.8k     -       227k     -    - 
em1.100  1500 <Link#11>     00:16:31:fe:75:7d     287k     0     0        33M     421k     0       502M     0    0 
em1.100  1500 xx.yy.64.12/3 xx.yy.64.12              0     -     -          0        0     -          0     -    - 
em1.100  1500 <Link#12>     00:16:31:fe:75:7d     382k     0     0        48M     537k     0       608M     0    0 
em1.100  1500 xx.yy.64.12/3 xx.yy.64.12              0     -     -          0        0     -          0     -    - 
em1.100  1500 <Link#13>     00:16:31:fe:75:7d        0     0     0          0        1     0         42     0    0 
em1.100  1500 xx.yy.64.12/3 xx.yy.64.12              0     -     -          0        0     -          0     -    - 
em1.100  1500 <Link#14>     00:16:31:fe:75:7d     4.9M     0     0       3.9G     5.1M     0       5.1G     0    0 
em1.100  1500 xx.yy.64.12/3 xx.yy.64.12              0     -     -          0        4     -        240     -    - 
em1.100  1500 <Link#15>     00:16:31:fe:75:7d      56M     0     0        73G      30M     0       2.4G     0    0 
em1.100  1500 xx.yy.64.12/3 xx.yy.64.12              0     -     -          0        0     -          0     -    - 
em1.100  1500 <Link#16>     00:16:31:fe:75:7d     226k     0     0        25M     347k     0       438M     0    0 
em1.100  1500 xx.yy.64.12/3 xx.yy.64.12              0     -     -          0        0     -          0     -    - 
em1.100  1500 <Link#17>     00:16:31:fe:75:7d     1.4M     0     0        99M     2.3M     0       3.2G     0    0 
em1.100  1500 xx.yy.64.12/3 xx.yy.64.12              0     -     -          0        0     -          0     -    - 
em1.100  1500 <Link#18>     00:16:31:fe:75:7d     5.3k     0     0       852k     5.8k     0       4.4M     0    0 
em1.100  1500 xx.yy.64.12/3 xx.yy.64.12              0     -     -          0        1     -         33     -    - 
em1.100  1500 <Link#19>     00:16:31:fe:75:7d     2.0M     0     0       1.3G     2.2M     0       2.5G     0    0 
em1.100  1500 xx.yy.64.12/3 xx.yy.64.12              0     -     -          0        0     -          0     -    - 
em1.101  1500 <Link#20>     00:16:31:fe:75:7d     253k     0     0        28M     337k     0       378M     0    0 
...

Share this post


Link to post
Share on other sites

речь не о дропах. у вас ip по ниткам isr плохо параллелится. судя по netstat, основную работу берет на себя isr 1.

 

для восьмерки мне помогли патчи eugene grosbein: http://www.grosbein.net/freebsd/patches/netisr_ip_flowid.diff и http://www.grosbein.net/freebsd/patches/netisr-aff.diff. после этого все нитки грузятся равномерно.

 

ну и наверное надо сделать net.isr.dispatch=hybrid

Edited by boco

Share this post


Link to post
Share on other sites
ну и наверное надо сделать net.isr.dispatch=hybrid

это в 9.х оно гибрид, а в 8.х оно форсе=0

Share this post


Link to post
Share on other sites
ну и наверное надо сделать net.isr.dispatch=hybrid

это в 9.х оно гибрид, а в 8.х оно форсе=0

но ведь у топикстартера как раз 9.1 =)

Share this post


Link to post
Share on other sites

речь не о дропах. у вас ip по ниткам isr плохо параллелится. судя по netstat, основную работу берет на себя isr 1.

 

для восьмерки мне помогли патчи eugene grosbein: http://www.grosbein.net/freebsd/patches/netisr_ip_flowid.diff и http://www.grosbein.net/freebsd/patches/netisr-aff.diff. после этого все нитки грузятся равномерно.

 

ну и наверное надо сделать net.isr.dispatch=hybrid

Для девятки патчи актуальны?

Поставил hybrid и bindthreads=1, понаблюдаю как оно сегодня

Share this post


Link to post
Share on other sites

Для девятки патчи актуальны?

ну... по крайней мере накладываются =)

 

по top -SHPI в выводе должны быть все нитки isr с примерно равной нагрузкой. ну и netstat -Q

Share this post


Link to post
Share on other sites

Поставил hybrid и bindthreads=1, понаблюдаю как оно сегодня

 

Так уже лучше:

last pid:  4371;  load averages:  1.20,  1.02,  0.91       up 0+02:16:29  22:07:41
106 processes: 6 running, 77 sleeping, 23 waiting
CPU 0:  0.0% user,  0.0% nice,  4.7% system, 15.7% interrupt, 79.6% idle
CPU 1:  0.0% user,  0.0% nice,  0.0% system, 40.8% interrupt, 59.2% idle
CPU 2:  0.0% user,  0.0% nice,  1.6% system,  6.7% interrupt, 91.8% idle
CPU 3:  0.0% user,  0.0% nice, 24.7% system,  1.6% interrupt, 73.7% idle
Mem: 41M Active, 24M Inact, 223M Wired, 15M Buf, 3628M Free
Swap: 

 PID USERNAME   PRI NICE   SIZE    RES STATE   C   TIME    CPU COMMAND
  11 root       155 ki31     0K    64K RUN     2 126:11 96.00% [idle{idle: cpu2}]
  11 root       155 ki31     0K    64K CPU0    0 107:19 86.87% [idle{idle: cpu0}]
  11 root       155 ki31     0K    64K CPU3    3 106:36 79.79% [idle{idle: cpu3}]
  11 root       155 ki31     0K    64K RUN     1  91:57 62.16% [idle{idle: cpu1}]
  12 root       -72    -     0K   384K CPU1    1  40:36 39.40% [intr{swi1: netisr 1}]
   0 root       -92    0     0K   288K -       3  26:47 24.76% [kernel{em1 que}]
  12 root       -72    -     0K   384K WAIT    0  13:30 10.40% [intr{swi1: netisr 0}]
  12 root       -92    -     0K   384K WAIT    1   9:17  6.79% [intr{irq266: em2:rx 0}]
  12 root       -72    -     0K   384K WAIT    2   7:15  4.79% [intr{swi1: netisr 2}]
  12 root       -92    -     0K   384K WAIT    3   2:04  1.42% [intr{irq267: em2:tx 0}]

            input        (Total)           output
  packets  errs idrops      bytes    packets  errs      bytes colls drops
     157k     0     0       129M       157k     0       128M     0     0 
     158k     0     0       129M       158k     0       129M     0     0 
     155k     0     0       128M       155k     0       128M     0     0 
     158k     0     0       127M       158k     0       128M     0     0 
     158k     0     0       131M       158k     0       132M     0     0 
     160k     0     0       130M       160k     0       131M     0     0 
     155k     0     0       127M       155k     0       127M     0     0 
     146k     0     0       121M       145k     0       120M     0     0 
     160k     0     0       128M       160k     0       128M     0     0 
     150k     0     0       120M       150k     0       120M     0     0 
     161k     0     0       133M       161k     0       133M     0     0 
     140k     0     0       117M       140k     0       117M     0     0 

Но неравномерно :(

Буду патчи пробовать

Share this post


Link to post
Share on other sites

Хрень какая-то... ничего не трогал...

 

last pid:  6000;  load averages:  1.25,  1.30,  1.22        up 0+03:57:44  23:48:56
103 processes: 6 running, 74 sleeping, 23 waiting
CPU 0:  0.0% user,  0.0% nice,  3.9% system,  9.1% interrupt, 87.0% idle
CPU 1:  0.0% user,  0.0% nice,  0.4% system, 85.0% interrupt, 14.6% idle
CPU 2:  0.0% user,  0.0% nice,  2.4% system,  4.3% interrupt, 93.3% idle
CPU 3:  0.0% user,  0.0% nice, 24.4% system, 20.1% interrupt, 55.5% idle
Mem: 41M Active, 24M Inact, 223M Wired, 16M Buf, 3628M Free
Swap: 

 PID USERNAME   PRI NICE   SIZE    RES STATE   C   TIME    CPU COMMAND
  11 root       155 ki31     0K    64K CPU2    2 218:49 96.53% [idle{idle: cpu2}]
  11 root       155 ki31     0K    64K RUN     0 190:20 96.04% [idle{idle: cpu0}]
  12 root       -72    -     0K   384K CPU1    1  89:20 79.79% [intr{swi1: netisr 1}]
  11 root       155 ki31     0K    64K RUN     3 185:47 63.53% [idle{idle: cpu3}]
   0 root       -92    0     0K   288K -       3  45:47 22.56% [kernel{em1 que}]
  11 root       155 ki31     0K    64K RUN     1 142:12 19.24% [idle{idle: cpu1}]
  12 root       -72    -     0K   384K WAIT    3   4:45 18.99% [intr{swi1: netisr 3}]
  12 root       -72    -     0K   384K WAIT    0  21:25  5.96% [intr{swi1: netisr 0}]
  12 root       -72    -     0K   384K WAIT    2  14:10  5.03% [intr{swi1: netisr 2}]
  12 root       -92    -     0K   384K WAIT    3  15:02  3.03% [intr{irq266: em2:rx 0}]
  12 root       -92    -     0K   384K WAIT    1   3:34  0.73% [intr{irq267: em2:tx 0}]

 

            input        (Total)           output
  packets  errs idrops      bytes    packets  errs      bytes colls drops
     107k     0     0        87M       107k     0        87M     0     0 
     110k     0     0        91M       110k     0        91M     0     0 
     112k     0     0        92M       113k     0        92M     0     0 
     108k     0     0        85M       108k     0        85M     0     1 
     114k     0     0        90M       113k     0        90M     0     0 
     119k     0     0        97M       119k     0        97M     0     0 
     112k     0     0        90M       111k     0        90M     0     0 
     111k     0     0        90M       112k     0        90M     0    15 
     107k     0     0        85M       106k     0        85M     0    51 
      99k     0     0        78M        98k     0        78M     0   326 
     110k     0     0        86M       109k     0        86M     0     0 
     102k     0     0        81M       102k     0        81M     0     0 
     108k     0     0        86M       108k     0        86M     0     0 
     117k     0     0        93M       116k     0        93M     0     0 
     108k     0     0        86M       108k     0        86M     0     0 

 

Походу на какой-то баг в ядре или дровах наткнулся? :-/

Share this post


Link to post
Share on other sites

патчи eugene grosbein

Справедливости ради: это патчи melifaro@. Оригинал http://static.ipfw.ru/patches/netisr_ip_flowid.diff

прошу прощения у melifaro@. =) а вы не в курсе, может в каком-нибудь виде это таки войдет в мэйнстрим? потому что так как сейчас это же порнография =(

Share this post


Link to post
Share on other sites

в каком-нибудь виде это таки войдет в мэйнстрим?

 

Как я понимаю, могут быть некоторые проблемы с не транзитным трафиком TCP, но это лучше у него самого уточнить. Правда, он тут нечасто пишет.

Share this post


Link to post
Share on other sites

Ну вот, с патчиками много лучше. boco отдельное спасибо, что тыкнул носом :)

 

# top -aSCHIP
last pid: 15009;  load averages:  1.21,  0.93,  0.77               up 0+12:23:12  17:19:47
103 processes: 6 running, 73 sleeping, 24 waiting
CPU 0:  0.0% user,  0.0% nice,  5.9% system, 23.2% interrupt, 70.9% idle
CPU 1:  0.0% user,  0.0% nice,  2.4% system, 15.4% interrupt, 82.3% idle
CPU 2:  0.0% user,  0.0% nice,  1.6% system, 14.6% interrupt, 83.9% idle
CPU 3:  0.4% user,  0.0% nice, 19.3% system,  3.9% interrupt, 76.4% idle
Mem: 41M Active, 24M Inact, 223M Wired, 52K Cache, 15M Buf, 3627M Free
Swap: 

 PID USERNAME   PRI NICE   SIZE    RES STATE   C   TIME    CPU COMMAND
  11 root       155 ki31     0K    64K CPU2    2 648:53 86.96% [idle{idle: cpu2}]
  11 root       155 ki31     0K    64K RUN     1 651:33 83.59% [idle{idle: cpu1}]
  11 root       155 ki31     0K    64K CPU0    0 609:08 76.56% [idle{idle: cpu0}]
  11 root       155 ki31     0K    64K RUN     3 597:10 73.19% [idle{idle: cpu3}]
   0 root       -92    0     0K   288K CPU3    3  87:13 21.00% [kernel{em1 que}]
  12 root       -72    -     0K   384K WAIT    0  49:52 17.82% [intr{swi1: netisr 0}]
  12 root       -92    -     0K   384K WAIT    0  56:40 12.79% [intr{irq266: em2:rx 0}]
  12 root       -72    -     0K   384K WAIT    1  73:27 12.70% [intr{swi1: netisr 1}]
  12 root       -72    -     0K   384K WAIT    2  81:04 11.52% [intr{swi1: netisr 2}]
  12 root       -72    -     0K   384K WAIT    3  59:37  5.96% [intr{swi1: netisr 3}]
  12 root       -92    -     0K   384K WAIT    1   6:44  1.12% [intr{irq267: em2:tx 0}]

 

# netstat -hdw1
           input        (Total)           output
  packets  errs idrops      bytes    packets  errs      bytes colls drops
     130k     0     0       114M       130k     0       114M     0     0 
     156k     0     0       138M       156k     0       138M     0     0 
     149k     0     0       131M       148k     0       131M     0    36 
     149k     0     0       131M       149k     0       131M     0     0 
     150k     0     0       132M       150k     0       132M     0     0 
     141k     0     0       125M       141k     0       124M     0     0 
     143k     0     0       127M       143k     0       127M     0     0 
     143k     0     0       126M       142k     0       125M     0     0 
     138k     0     0       120M       138k     0       120M     0     0 
     152k     0     0       136M       151k     0       136M     0     0 
     161k     0     0       145M       161k     0       144M     0     0 
     159k     0     0       140M       158k     0       140M     0     0 
     143k     0     0       128M       143k     0       128M     0     0 
     145k     0     0       129M       145k     0       129M     0     0 
     155k     0     0       139M       155k     0       138M     0     0 

 

# netstat -Q
Configuration:
Setting                        Current        Limit
Thread count                         4            4
Default queue limit                256        10240
Dispatch policy                 hybrid          n/a
Threads bound to CPUs          enabled          n/a

Protocols:
Name   Proto QLimit Policy Dispatch Flags
ip         1    256   flow  default   --F
igmp       2    256 source  default   ---
rtsock     3    256 source  default   ---
arp        7    256 source  default   ---
ether      9    256 source   direct   ---
ip6       10    256   flow  default   ---

Workstreams:
WSID CPU   Name     Len WMark   Disp'd  HDisp'd   QDrops   Queued  Handled
  0   0   ip         0   256        0 185019378     1586 237426182 422445560
  0   0   igmp       0     0        0        0        0        0        0
  0   0   rtsock     0    24        0        0        0     3287     3287
  0   0   arp        0    11        0    11747        0   405686   417433
  0   0   ether      0     0 1606570585        0        0        0 1606570585
  0   0   ip6        0     0        0        0        0        0        0
  1   1   ip         0   256        0 17664596     9096 366446884 384111480
  1   1   igmp       0     0        0        0        0        0        0
  1   1   rtsock     0     0        0        0        0        0        0
  1   1   arp        0    19        0    16301        0   460088   476389
  1   1   ether      0     0 163775687        0        0        0 163775687
  1   1   ip6        0     0        0        0        0        0        0
  2   2   ip         0   256        0 19565116    14100 389728052 409293168
  2   2   igmp       0     0        0        0        0        0        0
  2   2   rtsock     0     0        0        0        0        0        0
  2   2   arp        0    13        0     7839        0   299026   306865
  2   2   ether      0     0 160597787        0        0        0 160597787
  2   2   ip6        0     0        0        0        0        0        0
  3   3   ip         0   256        0 164668947    29577 239438408 404107355
  3   3   igmp       0     0        0        0        0        0        0
  3   3   rtsock     0     0        0        0        0        0        0
  3   3   arp        0    44        0   279436        0    58181   337617
  3   3   ether      0     0 1487020041        0        0        0 1487020041
  3   3   ip6        0     0        0        0        0        0        0

Edited by Vicus

Share this post


Link to post
Share on other sites

наверное есть смысл увеличить net.link.ifqmaxlen в /boot/loader.conf. по умолчанию там 50 пакетов. поставьте, например, 10240

 

и еще для снижения нагрузки на cpu в sysctl.conf:

net.inet.ip.redirect=0

kern.random.sys.harvest.ethernet=0

kern.random.sys.harvest.point_to_point=0

kern.random.sys.harvest.interrupt=0

Share this post


Link to post
Share on other sites

Выставил буфер и другие опции. Несколько дней, полет нормальный, нагрузка радует. Еще раз спасибо :)

Share this post


Link to post
Share on other sites

Выставил буфер и другие опции. Несколько дней, полет нормальный, нагрузка радует. Еще раз спасибо :)

Добрый день!

Хотел поинтересоваться, как система показала себя в плане стабильности?

 

Мы тут у себя попробовали выставить net.isr.dispatch=hybrid, так система на следующий же день ушла в ребут. А когда стоит значение deffered (по умолчанию), то не перегружается, но при этом очередь прерываний от сетевой (драйвер em) сильно грузит одно ядро. Наш BRAS терминирует PPPoE, потому использование сетевых с драйвером igb не помогает, так как igb параллелит только чистый IP.

Share this post


Link to post
Share on other sites

Выставил буфер и другие опции. Несколько дней, полет нормальный, нагрузка радует. Еще раз спасибо :)

 

Здравствуйте.

А можете показать конфиги какие у Вас в итоге вышли sysctl.conf loader.conf ?

И желательно вывод top -aSCHIP

 

Спасибо!

Share this post


Link to post
Share on other sites

Выставил буфер и другие опции. Несколько дней, полет нормальный, нагрузка радует. Еще раз спасибо :)

 

Здравствуйте.

А можете показать конфиги какие у Вас в итоге вышли sysctl.conf loader.conf ?

И желательно вывод top -aSCHIP

 

Спасибо!

 

# cat /etc/sysctl.conf 
security.bsd.see_other_uids=0
net.inet.ip.dummynet.io_fast=1
net.inet.ip.fw.one_pass=1
net.inet.ip.dummynet.pipe_slot_limit=1000
net.inet.icmp.icmplim=20000
net.inet.ip.dummynet.hash_size=65535
net.inet.ip.dummynet.expire=0
net.inet.ip.forwarding=1
net.inet.ip.fastforwarding=0
net.link.ether.inet.proxyall=1

dev.em.0.rx_int_delay=200
dev.em.0.tx_int_delay=200
dev.em.0.rx_abs_int_delay=4000
dev.em.0.tx_abs_int_delay=4000
dev.em.0.rx_processing_limit=4096

dev.em.1.rx_int_delay=200
dev.em.1.tx_int_delay=200
dev.em.1.rx_abs_int_delay=4000
dev.em.1.tx_abs_int_delay=4000
dev.em.1.rx_processing_limit=4096

dev.em.2.rx_int_delay=200
dev.em.2.tx_int_delay=200
dev.em.2.rx_abs_int_delay=4000
dev.em.2.tx_abs_int_delay=4000
dev.em.2.rx_processing_limit=4096

dev.em.3.rx_int_delay=200
dev.em.3.tx_int_delay=200
dev.em.3.rx_abs_int_delay=4000
dev.em.3.tx_abs_int_delay=4000
dev.em.3.rx_processing_limit=4096

kern.ipc.nmbclusters=128000
kern.ipc.maxsockbuf=16000000
net.graph.maxdgram=8388608
net.graph.recvspace=8388608

net.inet.ip.redirect=0
kern.random.sys.harvest.ethernet=0
kern.random.sys.harvest.point_to_point=0
kern.random.sys.harvest.interrupt=0 

 

# cat /boot/loader.conf 
net.isr.maxthreads=4
net.isr.dispatch=hybrid
net.isr.bindthreads=1

net.graph.maxalloc=65536
net.graph.maxdata=65536

hw.em.rxd=4096
hw.em.txd=4096
hw.em.rx_int_delay=200
hw.em.tx_int_delay=200
hw.em.rx_abs_int_delay=4000
hw.em.tx_abs_int_delay=4000
hw.em.rx_process_limit=4096

net.link.ifqmaxlen=10240

ipdivert_load="YES"

 

last pid: 33653;  load averages:  1.48,  1.53,  1.40                                                                                                                                     up 15+15:33:19  21:35:33
107 processes: 6 running, 77 sleeping, 24 waiting
CPU 0:  0.0% user,  0.0% nice,  7.9% system, 27.6% interrupt, 64.6% idle
CPU 1:  0.0% user,  0.0% nice,  2.4% system, 25.6% interrupt, 72.0% idle
CPU 2:  0.0% user,  0.0% nice,  0.8% system, 18.5% interrupt, 80.7% idle
CPU 3:  0.0% user,  0.0% nice, 30.7% system, 11.8% interrupt, 57.5% idle
Mem: 63M Active, 25M Inact, 325M Wired, 47M Buf, 3503M Free
Swap: 

 PID USERNAME   PRI NICE   SIZE    RES STATE   C   TIME    CPU COMMAND
  11 root       155 ki31     0K    64K RUN     2 326.5H 83.50% [idle{idle: cpu2}]
  11 root       155 ki31     0K    64K RUN     1 321.7H 74.41% [idle{idle: cpu1}]
  11 root       155 ki31     0K    64K CPU0    0 284.8H 68.51% [idle{idle: cpu0}]
  11 root       155 ki31     0K    64K CPU3    3 294.1H 65.53% [idle{idle: cpu3}]
   0 root       -92    0     0K   288K CPU2    3  55.2H 26.03% [kernel{em1 que}]
  12 root       -72    -     0K   384K WAIT    1  43.2H 21.29% [intr{swi1: netisr 1}]
  12 root       -72    -     0K   384K WAIT    2  41.5H 17.77% [intr{swi1: netisr 2}]
  12 root       -72    -     0K   384K WAIT    0  29.6H 14.94% [intr{swi1: netisr 0}]
  12 root       -92    -     0K   384K WAIT    1  41.4H 14.84% [intr{irq266: em2:rx 0}]
  12 root       -72    -     0K   384K WAIT    3  27.0H 12.35% [intr{swi1: netisr 3}]
   0 root       -16    0     0K   288K sched   1   2:06  4.69% [kernel{swapper}]
33642 root       -16    -     0K    16K -       3   0:00  4.64% [newnfs 0]
  12 root       -92    -     0K   384K WAIT    1 256:55  1.56% [intr{irq267: em2:tx 0}]
  13 root       -16    -     0K    64K sleep   1  81:17  0.49% [ng_queue{ng_queue0}]
  13 root       -16    -     0K    64K sleep   1  80:24  0.49% [ng_queue{ng_queue3}]
  13 root       -16    -     0K    64K sleep   0  80:47  0.39% [ng_queue{ng_queue1}]
  13 root       -16    -     0K    64K sleep   3  80:46  0.39% [ng_queue{ng_queue2}]
  12 root       -60    -     0K   384K WAIT    1 367:25  0.05% [intr{swi4: clock}]

Сейчас как-раз ЧНН, данные взял с самого нагруженного шлюза. 650 мегабит, 700 пользователей....

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this