Здравствуйте. Столкнулся со странной проблемой.
Есть сервер с FreeBSD 8.2, который занимаеться NATом (PF). +20 правил ipfw.
На сервере задействовано 3 сетевые. Загружено только ядро 0.top -P
CPU 0: 0.0% user, 0.0% nice, 0.0% system, 79.7% interrupt, 20.3% idle
CPU 1: 0.4% user, 0.0% nice, 0.4% system, 5.2% interrupt, 94.0% idle
CPU 2: 0.4% user, 0.0% nice, 0.4% system, 7.5% interrupt, 91.7% idle
CPU 3: 3.4% user, 0.0% nice, 0.8% system, 7.2% interrupt, 88.7% idle
Банальна проблема, как мне показалось. Ядро 0 занято прерываниями. Но дальше интереснее.vmstat -ai (оставил только то что не 0)
interrupt total rate
irq19: uhci1+ 16298 6
cpu0: timer 4938627 1998
irq258: mskc0 10457261 4231
irq259: mskc1 8475090 3429
irq261: mskc3 9664064 3910
cpu2: timer 4935877 1997
cpu1: timer 4938505 1998
cpu3: timer 4935878 1997
Total 48361606 19571Как видно, прерывания генерируют сетевые msk. Дальше.
procstat -a -t | grep msk
PID TID COMM TDNAME CPU PRI STATE WCHAN
12 100035 intr irq258: mskc0 2 16 wait -
12 100036 intr irq259: mskc1 3 16 wait -
12 100037 intr irq260: mskc2 0 16 wait -
12 100038 intr irq261: mskc3 1 16 wait -Все сетевые на разных ядрах. Но на самом загруженном ядре висит сетевая, которая даже не подключена.
Куда тут еще можно копнуть?
теоретически - pf одноядерный и висит на cpu0. Попробуйте ipfw kernel nat.
> теоретически - pf одноядерный и висит на cpu0. Попробуйте ipfw kernel nat.Попробовал. То же самое.
top -PSH
> top -PSHСпасибо. За наводку. Загрузка была по вине netisr.
Решил:
net.isr.numthreads="4"
net.isr.maxthreads="4"В /boot/loader.conf.
Спасибо. Закройте тему.