roysbike Опубликовано 18 декабря, 2011 (изменено) · Жалоба Добрый день друзья! Наблюдается такая проблема. Один из процессов ng_queue нагружается в 2 раза больше , а то и в 3 . Другие стоят курят. После этого соответсвтенно , почти нет скорости на сервере и пинг вырастает в 7 раз. Можно ли привезать каждый cpu к процессу? Характерстики сервера HP- Proliant DL160-g6 Intel® Xeon® CPU E5504 @ 2.00GHz, RAM 4 GB. Сетевухи igb драйвер Intel® PRO/1000 Network Connection version - 2.2.3. На сервер MPD5 + NG_NAT Шейпер NG_CAR. Вечером обычно 800 сессий на сервер PPTP . 300-350 мбит/с RX. 150-200 мбит/с TX. # cat /usr/local/etc/mpd5/mpd.conf startup: set user admin master admin set console self 192.168.53.1x 5005 set console open set web self 0.0.0.0 5006 set web open set radsrv peer 192.168.53.x master set radsrv peer 192.168.53.1x master set radsrv open default: load pptp_server pptp_server: set ippool add poolvpn 172.16.1.2 172.16.254.254 create bundle template BP set iface idle 10800 set iface enable tcpmssfix set iface enable proxy-arp set ipcp ranges 172.16.1.1/32 ippool poolvpn set ipcp no vjcomp set ipcp dns 8.8.8.8 8.8.4.4 log +echo +radius +rep +auth +bund +iface +link create link template L pptp set link enable report-mac set link action bundle BP set link disable multilink set link yes acfcomp protocomp set link no pap chap set link yes chap-msv2 chap-msv1 load radius set link keep-alive 30 180 set link max-children 3000 set link mtu 1460 set link enable peer-as-calling set pptp self 172.18.0.1 set link enable incoming radius: set radius config /usr/local/etc/mpd5/radius.conf set radius server 192.168.53.x passwd 1812 1813 set radius retries 5 set radius timeout 20 set radius me 192.168.x.x set auth enable radius-auth set auth disable internal #ACCT set auth enable radius-acct set auth acct-update 0 # cat /etc/rc.firewall #!/bin/sh ngctl mkpeer ipfw: nat 60 out ngctl name ipfw:60 nat ngctl connect ipfw: nat: 61 in ngctl msg nat: setaliasaddr 87.x.x.x.90 fwcmd="/sbin/ipfw" ${fwcmd} -f flush ${fwcmd} add 10000 netgraph 61 all from any to any in via igb1 ${fwcmd} add 10001 netgraph 60 all from 172.16.0.0/16 to any out via igb1 #uname -a FreeBSD vnpx 8.2-STABLE FreeBSD 8.2-STABLE #1 r227345: Tue Nov 8 21:23:29 UTC 2011 root@vnp8:/usr/src/sys/amd64/compile/GENERIC.64.118 amd64 #top -SHP last pid: 89916; load averages: 3.15, 2.99, 2.83 up 39+18:48:14 17:04:06 123 processes: 7 running, 84 sleeping, 32 waiting CPU 0: 1.9% user, 0.0% nice, 40.2% system, 21.8% interrupt, 36.1% idle CPU 1: 2.6% user, 0.0% nice, 55.6% system, 6.8% interrupt, 35.0% idle CPU 2: 3.8% user, 0.0% nice, 50.0% system, 6.8% interrupt, 39.5% idle CPU 3: 2.3% user, 0.0% nice, 49.6% system, 7.1% interrupt, 41.0% idle Mem: 1233M Active, 168M Inact, 498M Wired, 32M Cache, 213M Buf, 36M Free Swap: 16G Total, 12M Used, 16G Free PID USERNAME PRI NICE SIZE RES STATE C TIME WCPU COMMAND 13 root -16 - 0K 64K CPU1 1 162.1H 67.97% {ng_queue2} 11 root 171 ki31 0K 64K RUN 0 668.3H 40.97% {idle: cpu0} 11 root 171 ki31 0K 64K CPU2 2 731.3H 36.77% {idle: cpu2} 11 root 171 ki31 0K 64K RUN 1 696.7H 35.79% {idle: cpu1} 11 root 171 ki31 0K 64K CPU3 3 755.2H 35.35% {idle: cpu3} 13 root -16 - 0K 64K sleep 3 162.2H 33.69% {ng_queue3} 13 root -16 - 0K 64K sleep 2 162.4H 33.50% {ng_queue1} 13 root -16 - 0K 64K sleep 2 162.6H 31.05% {ng_queue0} 12 root -68 - 0K 528K WAIT 0 50.4H 15.48% {irq256: igb0:que} 77224 root 48 0 68276K 34700K select 3 37:06 6.49% {mpd5} 12 root -68 - 0K 528K WAIT 2 21.8H 4.20% {irq258: igb0:que} 12 root -68 - 0K 528K WAIT 3 18.3H 3.86% {irq259: igb0:que} 12 root -68 - 0K 528K CPU1 1 35.9H 3.08% {irq261: igb1:que} 12 root -68 - 0K 528K WAIT 2 34.9H 2.88% {irq262: igb1:que} 12 root -68 - 0K 528K WAIT 1 18.4H 2.88% {irq257: igb0:que} 12 root -68 - 0K 528K WAIT 3 34.6H 2.69% {irq263: igb1:que} 12 root -68 - 0K 528K WAIT 0 36.1H 2.59% {irq264: igb1:que} 1271 root 47 0 38332K 7820K select 2 694:11 2.59% snmpd 0 root -68 0 0K 272K - 3 409:36 0.78% {igb0 que} 12 root -32 - 0K 528K WAIT 2 328:31 0.00% {swi4: clock} 14 root -16 - 0K 16K - 0 112:40 0.00% yarrow 1110 root 44 0 6920K 1032K select 0 76:53 0.00% syslogd 0 root -68 0 0K 272K - 3 61:57 0.00% {igb1 que} 0 root -68 0 0K 272K - 0 35:13 0.00% {igb1 que} 0 root -68 0 0K 272K - 3 28:53 0.00% {igb1 que} 0 root -68 0 0K 272K - 3 28:31 0.00% {igb1 que} 17 root 20 - 0K 16K syncer 0 16:31 0.00% syncer 1411 root 44 0 26132K 2348K select 1 1:29 0.00% sshd # netstat -h -w 1 input (Total) output packets errs idrops bytes packets errs bytes colls 101K 0 0 62M 111K 0 84M 0 113K 0 0 71M 122K 0 94M 0 108K 0 0 68M 114K 0 87M 0 100K 0 0 62M 111K 0 84M 0 114K 0 0 72M 125K 0 96M 0 110K 0 0 71M 124K 0 96M 0 105K 0 0 67M 120K 0 92M 0 108K 0 0 65M 117K 0 89M 0 107K 0 0 67M 116K 0 89M 0 108K 0 0 68M 119K 0 92M 0 106K 0 0 67M 119K 0 92M 0 109K 0 0 70M 120K 0 92M 0 106K 0 0 67M 114K 0 85M 0 ^C Изменено 18 декабря, 2011 пользователем roysbike Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 18 декабря, 2011 · Жалоба Один из процессов ng_queue нагружается в 2 раза больше , а то и в 3 . Наверняка из-за ng_nat. Попробуйте сделать два правила NAT, в каждое направляйте половину локальных адресов. Ещё лучше - замените ng_nat на pf NAT. Он однопоточный, но настолько быстрый, что на сервере с mpd и ng_car узким местом не станет. Можно ли привезать каждый cpu к процессу? Можно, но для ng_queue незачем. Система автоматически создаёт столько ng_queue, сколько у процессора ядер. То, что гипертрединг отключен - правильно. Количество очередей у карт можно уменьшить до двух на каждую. 300-350 мбит/с RX. 150-200 мбит/с TX. Мизерная нагрузка для Ксеона/i7 с интеловскими картами. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
roysbike Опубликовано 18 декабря, 2011 · Жалоба Спасибо за посказку. Ночью ядро пересоберу и попробую . не подскажешь , что для pf nat нужно добавть в sysctl ? pf.conf #!/bin/sh ext_if="igb0" int_if="igb1" set limit states 16000000 set optimization aggressive set skip on lo0 scrub in all nat on $ext_if from 172.16.0.0/16 to any -> ($ext_if) pass in on $int_if from any to any pass out on $ext_if from $ext_if to any Что то вроде этого? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 18 декабря, 2011 · Жалоба Спасибо за посказку. Ночью ядро пересоберу и попробую . не подскажешь , что для pf nat нужно добавть в sysctl ? pf.conf #!/bin/sh ext_if="igb0" int_if="igb1" set limit states 16000000 set optimization aggressive set skip on lo0 scrub in all nat on $ext_if from 172.16.0.0/16 to any -> ($ext_if) pass in on $int_if from any to any pass out on $ext_if from $ext_if to any Что то вроде этого? Это конфиг, а не скрипт! Добавлять ничего в sysctl не нужно, все крутилки pf в его конфиге. Ядро пересобирать не нужно, оно и так работает, как весь нетграф и много прочего - модули загружаются автоматом, в худшем случае руками. ПФ сам загружает модуль. Скруб не обязателен, пасс на выход имеет смысл делать на всех интерфейсах from any to any, на вход решайте сами. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 18 декабря, 2011 · Жалоба Ночью ядро пересоберу и попробую . Пересобирать не надо. При выполнении /etc/rc.d/pf будут предупреждения на отсутствующий ALTQ, но их можно игнорировать. что для pf nat нужно добавть в sysctl ? Ничего. Если pf NAT используется совместно с ipfw для фильтрации и шейпинга, то в начало /etc/rc.d/ipfw рекомендуется вставить строку "# BEFORE: pf". Что то вроде этого? Мой /etc/pf.conf: int_if="vlan1" ext_if="vlan2" ext_ip="1.2.3.4" nat_net="10.20.0.0/20" set limit { states 200000, frags 50000, src-nodes 30000 } set optimization aggressive set state-policy if-bound set block-policy return set skip on { lo0, $int_if } nat on $ext_if from $nat_net to any -> $ext_ip Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...