используется в качестве раутера: 8 сетевух Intel, драйвера последние с сайта Intel.
роутит 5 сетей, Интернет с помощью mpd5, НАТ через ng_nat, статистика netflow и т.п.
шейпа нет.
Проц Intel Xeon E5335 2000MHz, LGA771, L2 8192Kb, 1333MHz.
Ситуация: из одной подсети в другую пошел трафик (em6 сеть 1, em5 сеть 2):
Код: Выделить всё
netstat -w 1 -I em6 -h -d
input (em6) output
packets errs bytes packets errs bytes colls drops
13K 0 18M 6.7K 0 1.0M 0 0
12K 0 17M 6.2K 0 963K 0 0
12K 0 17M 6.5K 0 1.1M 0 0
12K 0 16M 5.8K 0 1.0M 0 0
Код: Выделить всё
netstat -w 1 -I em5 -h -d
input (em5) output
packets errs bytes packets errs bytes colls drops
5.2K 0 337K 13K 0 18M 0 0
7.9K 0 4.4M 14K 0 18M 0 0
8.2K 0 4.5M 14K 0 18M 0 0
5.1K 0 337K 12K 0 18M 0 0
5.0K 0 330K 12K 0 18M 0 0
Суть проблемы:
В это время появляется задержка (пакеты не теряются, но 50мс до яндекса вместо 3-5мс и падение в скорости) в интернет трафике на другом интерфейсе em2 (ограничение 100мбит/сек), на котором средние показатели работы:
Код: Выделить всё
netstat -w 1 -I em2 -h -d
input (em2) output
packets errs bytes packets errs bytes colls drops
9.0K 0 7.4M 10K 0 2.6M 0 0
8.6K 0 6.8M 10K 0 2.7M 0 0
9.6K 0 7.8M 11K 0 2.9M 0 0
9.0K 0 7.4M 10K 0 2.5M 0 0
9.1K 0 7.7M 11K 0 2.7M 0 0
Код: Выделить всё
last pid: 72858; load averages: 2.21, 1.93, 1.79 up 22+07:37:01 00:24:45
230 processes: 9 running, 199 sleeping, 22 waiting
CPU: 1.0% user, 0.0% nice, 43.3% system, 3.8% interrupt, 51.9% idle
Mem: 568M Active, 2531M Inact, 643M Wired, 69M Cache, 418M Buf, 104M Free
Swap: 8192M Total, 12K Used, 8192M Free
PID USERNAME PRI NICE SIZE RES STATE C TIME WCPU COMMAND
11 root 171 ki31 0K 64K RUN 3 440.8H 56.98% {idle: cpu3}
11 root 171 ki31 0K 64K RUN 1 372.0H 56.30% {idle: cpu1}
11 root 171 ki31 0K 64K RUN 0 425.3H 51.17% {idle: cpu0}
11 root 171 ki31 0K 64K RUN 2 408.8H 46.29% {idle: cpu2}
13 root 72 - 0K 64K CPU2 2 46.6H 9.57% {ng_queue2}
0 root -68 0 0K 256K - 1 677:51 9.38% {em5 taskq}
13 root 72 - 0K 64K sleep 3 46.1H 8.59% {ng_queue0}
13 root 66 - 0K 64K sleep 3 46.5H 7.18% {ng_queue1}
13 root 76 - 0K 64K sleep 0 46.1H 4.20% {ng_queue3}
0 root -68 0 0K 256K - 0 21.9H 2.20% {em8 taskq}
0 root -68 0 0K 256K - 0 19.4H 1.56% {em7 taskq}
0 root -68 0 0K 256K CPU1 1 124.2H 1.37% {em2 taskq}
0 root -68 0 0K 256K - 1 889:34 0.78% {em6 taskq}
0 root -68 0 0K 256K - 3 468:22 0.29% {em4 taskq}
12 root -68 - 0K 384K CPU2 2 54.0H 0.20% {irq261: em8}
12 root -32 - 0K 384K WAIT 1 430:45 0.10% {swi4: clock}
Код: Выделить всё
top -SIH
last pid: 74246; load averages: 1.39, 1.52, 1.58 up 22+08:36:30 01:24:14
221 processes: 8 running, 190 sleeping, 23 waiting
CPU: 0.0% user, 0.0% nice, 33.7% system, 4.1% interrupt, 62.2% idle
Mem: 570M Active, 2535M Inact, 652M Wired, 55M Cache, 418M Buf, 103M Free
Swap: 8192M Total, 12K Used, 8192M Free
PID USERNAME PRI NICE SIZE RES STATE C TIME WCPU COMMAND
11 root 171 ki31 0K 64K RUN 0 426.0H 66.89% {idle: cpu0}
11 root 171 ki31 0K 64K CPU2 2 409.4H 59.57% {idle: cpu2}
11 root 171 ki31 0K 64K CPU1 1 372.6H 59.18% {idle: cpu1}
11 root 171 ki31 0K 64K RUN 3 441.4H 56.30% {idle: cpu3}
13 root 62 - 0K 64K CPU3 3 46.7H 7.08% {ng_queue1}
13 root 64 - 0K 64K sleep 3 46.3H 6.15% {ng_queue3}
0 root -68 0 0K 256K - 1 680:06 5.57% {em5 taskq}
13 root 58 - 0K 64K CPU2 2 46.8H 5.27% {ng_queue2}
13 root 66 - 0K 64K sleep 2 46.4H 5.18% {ng_queue0}
0 root -68 0 0K 256K - 0 21.9H 3.27% {em8 taskq}
0 root -68 0 0K 256K - 2 124.4H 0.98% {em2 taskq}
12 root -32 - 0K 384K WAIT 1 431:50 0.10% {swi4: clock}
Код: Выделить всё
netstat -w 1 -h -d
input (Total) output
packets errs bytes packets errs bytes colls drops
21K 0 11M 21K 0 12M 0 0
26K 0 17M 26K 0 17M 0 0
29K 0 20M 29K 0 20M 0 0
28K 0 19M 28K 0 19M 0 0
Пинг нормальный!:
Код: Выделить всё
top -SIH
last pid: 74342; load averages: 1.94, 1.63, 1.60 up 22+08:39:30 01:27:14
222 processes: 6 running, 192 sleeping, 24 waiting
CPU: 1.2% user, 0.0% nice, 38.2% system, 4.1% interrupt, 56.5% idle
Mem: 570M Active, 2535M Inact, 652M Wired, 53M Cache, 418M Buf, 104M Free
Swap: 8192M Total, 12K Used, 8192M Free
PID USERNAME PRI NICE SIZE RES STATE C TIME WCPU COMMAND
11 root 171 ki31 0K 64K CPU0 0 426.0H 56.98% {idle: cpu0}
11 root 171 ki31 0K 64K RUN 1 372.6H 55.18% {idle: cpu1}
11 root 171 ki31 0K 64K RUN 3 441.4H 51.27% {idle: cpu3}
11 root 171 ki31 0K 64K CPU2 2 409.4H 50.78% {idle: cpu2}
0 root -68 0 0K 256K - 0 680:28 9.08% {em5 taskq}
13 root 66 - 0K 64K sleep 2 46.4H 7.57% {ng_queue3}
13 root 65 - 0K 64K CPU1 1 46.8H 6.88% {ng_queue2}
13 root 67 - 0K 64K sleep 0 46.4H 6.59% {ng_queue0}
0 root -68 0 0K 256K - 0 21.9H 3.17% {em8 taskq}
0 root -68 0 0K 256K - 1 124.4H 2.49% {em2 taskq}
13 root 48 - 0K 64K sleep 2 46.7H 2.20% {ng_queue1}
0 root -68 0 0K 256K - 2 19.5H 1.27% {em7 taskq}
0 root -68 0 0K 256K - 1 892:56 1.17% {em6 taskq}
12 root -68 - 0K 384K WAIT 2 54.2H 0.39% {irq261: em8}
Код: Выделить всё
netstat -w 1 -h -d
input (Total) output
packets errs bytes packets errs bytes colls drops
50K 0 45M 50K 0 46M 0 0
48K 0 44M 48K 0 45M 0 0
46K 0 41M 46K 0 42M 0 0
51K 0 48M 51K 0 48M 0 0
Код: Выделить всё
netstat -w 1 -h -d -I em6
input (em6) output
packets errs bytes packets errs bytes colls drops
8.4K 0 10M 9.7K 0 11M 0 0
8.8K 0 11M 9.6K 0 11M 0 0
7.8K 0 10M 5.4K 0 5.2M 0 0
8.4K 0 10M 9.5K 0 11M 0 0
Код: Выделить всё
cryonic# netstat -w 1 -h -d -I em5
input (em5) output
packets errs bytes packets errs bytes colls drops
10K 0 10M 9.1K 0 12M 0 0
10K 0 11M 8.7K 0 11M 0 0
10K 0 11M 8.0K 0 10M 0 0
10K 0 11M 8.5K 0 11M 0 0
Код: Выделить всё
netstat -w 1 -h -d -I em2
input (em2) output
packets errs bytes packets errs bytes colls drops
8.7K 0 7.6M 10K 0 2.8M 0 0
9.1K 0 8.2M 10K 0 2.6M 0 0
9.6K 0 8.4M 11K 0 2.9M 0 0
8.9K 0 7.9M 10K 0 2.5M 0 0
Сетевые адаптеры стоят разного типа, например em2 встроена в материнку, а про em6 и em5 не помню какая именно сетевуха. Знаю что на сервере используются две однопортовые сетевухи (одна на разъеме PCI-X, вторая на PCI-E) и одна QUAD (4 порта). Видно на выводе top -SIH, что систему нагружает сетевая em5 (отправляющая 144мбит/сек в свою подсеть), а принимающая эти 144мбит/сек em6 нагружает систему в 12 раз меньше - 9,4% против 0,8%. Видимо и процесс ng_queue поэтому стал нагружать систему.
1. Как я понял, что em5 сетевуха просто хуже чем em6? Или же процесс приема данных и постановка в очередь пакетов на обработку менее ресурсоемкая операция?
2. Может не стоит обращать много внимания на нагрузку сетевух и это просто у меня не хватает мощи на обработку процессов ng_queue (постановка в очередь пакетов)? Есть ли какие способы заставить процессы ng_queue забирать больше процессорного времени, или дело не в этом?
3. Я нахожусь в подсети с em6 и у меня инет начинает работать медленно (см. выше), в других подсетях в этот момент неизвестно что происходит, но вот в это время пинг с самого сервера в инет такой же высокий. Значит не хватает мощи на обработку всего трафа, проходящего через фрю?
4. 144 мбит/с это далеко не гигабит для одного сетевого интерфейса, а 400мбит/сек из которых только порядка 70мбит/сек проходит через нат и слив статы по нетфлоу не предел фри. Ведь как-то можно выжать больше? Или легче роутинг между подсетями отдать какому-нибудь коммутатору, а на фре оставить лишь инет?
5. Если сравнить нагрузку в проблемное время и через час, то не понятно что произошло: практически теже 400мбит/сек, трафик гонится из сети с em6 в сеть с em5 и обратно в одинаковом количестве, но с пингом и с производительностью инета проблем нет. Разница только в том, что на сетевухе не проходит более 100мбит/сек - неужели в этом причина?
Подскажите какие man'ы почитать.
Всем спасибо за советы.
ПС:
на фре порядка 450 правил в ipfw, но пакет проходит в среднем 25.