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

Писал сюда недавно по поводу машины с em, натом и bgpd, которая падала в корку. 
Ту проблему поборол, перейдя на ipfw nat. Но появилась новая проблема.

Напомню, в машине две em-сетевухи, quagga (~750 маршрутов) и ipfw nat. 

Раз в некоторое время (так и не понял зависимость возникновения проблемы от 
внешних факторов) начинается такая петрушка:

            input          (em1)           output
   packets  errs idrops      bytes    packets  errs      bytes colls
      2400   728     0     509482       2971     0     416493     0
      2200  1463     0     411559       2842     0     398831     0
         0     0     0          0          0     0          0     0
      1500   547     0     297841       1887     0     234200     0
       970   620     0     186645       1248     0     204491     0
      2030   828     0     406982       2704     0     349913     0
       800     0     0     148909       1002     0     137851     0
      1300   767     0     268112       1677     0     224365     0
      2520  1207     0     525578       3239     0     473462     0
       480     0     0      87836        631     0      75961     0
      1700   730     0     371454       2197     0     295217     0
       900   556     0     174892       1138     0     158689     0
      1500   862     0     291094       2011     0     276371     0


Это при том, обычно загрузка интерфейса выглядит так:

            input          (em1)           output
   packets  errs idrops      bytes    packets  errs      bytes colls
      7601     0     0    6361116       7816     0    3323030     0
      7807     0     0    6445254       8628     0    3683657     0
      7581     0     0    6446709       7844     0    3352021     0
      6385     0     0    5257225       6692     0    3238119     0
      6841     0     0    5709565       7099     0    3496599     0
      8349     0     0    7024005       8596     0    3875781     0
      8232     0     0    6877310       8665     0    4221700     0


Наблюдал за выводом top -S в момент возникновения проблемы. Загрузка процесса 
kernel начинает плавно возрастать обычных 20-30 процентов до 200% (Ядро с SMP). 
Выглядит это так:

last pid:  1596;  load averages: 10.49,  3.80,  1.52                            
                                           up 0+00:13:49  19:55:28
84 processes:  18 running, 54 sleeping, 12 waiting
CPU:  0.1% user,  0.0% nice, 99.9% system,  0.1% interrupt,  0.0% idle
Mem: 21M Active, 13M Inact, 56M Wired, 104K Cache, 16M Buf, 1871M Free
Swap: 2048M Total, 2048M Free

  PID USERNAME  THR PRI NICE   SIZE    RES STATE   C   TIME   WCPU COMMAND
    0 root       10 -68    0     0K    72K -       0   7:01 200.00% kernel
   11 root        2 171 ki31     0K    16K RUN     0  20:59  0.00% idle
   12 root       13 -64    -     0K   104K WAIT    0   0:03  0.00% intr
   13 root        1 -16    -     0K     8K RUN     0   0:02  0.00% yarrow

В это время система впадает в полный ступор. В первые разы я подумал, что 
машина зависла, настолько неохотно она реагировала на консоль.

Вывод ifconfig на всякий случай:
re0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
        
options=389b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_UCAST,WOL_MCAST,WOL_MAGIC>
        ether 00:27:0e:13:8b:a9
        media: Ethernet autoselect (10baseT/UTP <half-duplex>)
        status: no carrier
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        
options=209b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC>
        ether 00:07:e9:0b:93:30
        inet 89.222.133.241 netmask 0xfffffffc broadcast 89.222.133.243
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
em1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        
options=209b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC>
        ether 00:07:e9:8a:1c:4a
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
ipfw0: flags=8801<UP,SIMPLEX,MULTICAST> metric 0 mtu 65536
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=3<RXCSUM,TXCSUM>
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x5 
        inet6 ::1 prefixlen 128 
        inet 127.0.0.1 netmask 0xff000000 
        nd6 options=3<PERFORMNUD,ACCEPT_RTADV>
vlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=3<RXCSUM,TXCSUM>
        ether 00:07:e9:8a:1c:4a
        inet 89.222.201.10 netmask 0xfffffffc broadcast 89.222.201.11
        inet 89.222.133.209 netmask 0xffffffff broadcast 89.222.133.209
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
        vlan: 208 parent interface: em1
vlan1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=3<RXCSUM,TXCSUM>
        ether 00:07:e9:8a:1c:4a
        inet 172.30.254.14 netmask 0xfffffffc broadcast 172.30.254.15
        inet 89.222.133.210 netmask 0xffffffff broadcast 89.222.133.210
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
        vlan: 23 parent interface: em1

Текущий приступ можно "вылечить" выдернув кабель из сетевухи на некоторое 
время. Также помогает ifconfig em1 down/up. 

Перекопал весь гугл, перепробовал кучу всего:
- отключать VLAN_HWTAGGING
- добавлять всяких буферов
- перешел с bsnmpd на net-snmpd (кому-то в интернетах помогло)
- менял кучу разных параметров sysctl
- пересобрал ядро с KVA_PAGES=512

Ситуация не выровнялась. Проблема так и возникает через неопределенные 
промежутки времени. 

Куда смотреть, что делать? У меня уже скоро крыша поедет.

Сразу приведу свои несложные конфиги.

ipfw:
${fwcmd} nat 10 config ip 89.222.133.209 same_ports reset unreg_only
${fwcmd} nat 20 config ip 89.222.133.210 same_ports reset unreg_only
${fwcmd} add 1000 nat 10 all from any to any via vlan0
${fwcmd} add 2000 nat 20 all from table'(10)' to any out xmit vlan1
${fwcmd} add 2000 nat 20 all from any to 89.222.133.210 in recv vlan1

netstat -m
2049/906/2955 mbufs in use (current/cache/total)
2048/518/2566/25600 mbuf clusters in use (current/cache/total/max)
2048/512 mbuf+clusters out of packet secondary zone in use (current/cache)
0/14/14/12800 4k (page size) jumbo clusters in use (current/cache/total/max)
0/0/0/6400 9k jumbo clusters in use (current/cache/total/max)
0/0/0/3200 16k jumbo clusters in use (current/cache/total/max)
4608K/1318K/5926K bytes allocated to network (current/cache/total)
0/0/0 requests for mbufs denied (mbufs/clusters/mbuf+clusters)
0/0/0 requests for jumbo clusters denied (4k/9k/16k)
0/5/6656 sfbufs in use (current/peak/max)
0 requests for sfbufs denied
0 requests for sfbufs delayed
0 requests for I/O initiated by sendfile
0 calls to protocol drain routines

Конфиг ядра (кроме стандартных для GENERIC строк):
options         IPFIREWALL
options         IPFIREWALL_FORWARD
options         DUMMYNET
options         DEVICE_POLLING
options         HZ=2000
options         IPFIREWALL_NAT
options         LIBALIAS
options         KVA_PAGES=512

vmstat -if в момент приступа и в обычное время не отличаются.

netstat -idn
Name    Mtu Network       Address              Ipkts Ierrs Idrop    Opkts Oerrs 
 Coll Drop
re0*   1500 <Link#1>      00:27:0e:13:8b:a9        0     0     0        0     0 
    0    0 
em0    1500 <Link#2>      00:07:e9:0b:93:30 13817974 44813     0 12820388     0 
    0    0 
em0    1500 89.222.133.24 89.222.133.241       22685     -     -    22648     - 
    -    - 
em1    1500 <Link#3>      00:07:e9:8a:1c:4a 13690281 162477     0 14660527     
0     0    0 
ipfw0 65536 <Link#4>                               0     0     0        0     0 
    0    0 
lo0   16384 <Link#5>                             286     0     0      286     0 
    0    0 
lo0   16384 fe80:5::1/64  fe80:5::1                0     -     -        0     - 
    -    - 
lo0   16384 ::1/128       ::1                      0     -     -        0     - 
    -    - 
lo0   16384 127.0.0.0/8   127.0.0.1              286     -     -      286     - 
    -    - 
vlan0  1500 <Link#6>      00:07:e9:8a:1c:4a 10913137     0     0 11950724     0 
    0    0 
vlan0  1500 89.222.201.8/ 89.222.201.10           91     -     -   848611     - 
    -    - 
vlan0  1500 89.222.133.20 89.222.133.209      892352     -     -        0     - 
    -    - 
vlan1  1500 <Link#7>      00:07:e9:8a:1c:4a  2776691     0     0  2709802     0 
    0    0 
vlan1  1500 172.30.254.12 172.30.254.14          108     -     -    21242     - 
    -    - 
vlan1  1500 89.222.133.21 89.222.133.210           9     -     -        0     - 
    -    - 

Если нужны ещё какие-то данные, с удовольствием их предоставлю.

Alexey Karguine
[email protected]



Ответить