Здравствуйте!
Писал сюда недавно по поводу машины с 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]