Перейти к содержимому
Калькуляторы

freebsd процесс ng_queue ng_car vs dummynet

Есть 2 сервера vpn, на mpd. На обоих используется шейпер, на 1м ng_car, на 2м dummynet.

Процессоры похожие core2duo, трафика и абонов приблизительно одинаково. Используется ng_nat,ng_netflow.

На обоих процессы ng_queue0 и ng_queue1 более 40-60% использования.

машинка dummynet

last pid:  3961;  load averages:  3.29,  2.79,  2.68    up 6+17:19:48  22:30:47
105 processes: 8 running, 72 sleeping, 25 waiting
CPU:  5.2% user,  0.0% nice, 66.2% system, 21.4% interrupt,  7.2% idle
Mem: 227M Active, 350M Inact, 369M Wired, 199M Buf, 1006M Free
Swap: 5120M Total, 5120M Free

  PID USERNAME PRI NICE   SIZE    RES STATE   C   TIME    CPU COMMAND
    3 root     -68    -     0K     8K sleep   1  71.7H 74.46% ng_queue1
    2 root     -68    -     0K     8K sleep   0  53.0H 25.98% ng_queue0
   68 root     -68    -     0K     8K -       0  39.3H 21.09% dummynet
   32 root     -68    -     0K     8K WAIT    0  18.0H 19.97% irq259: igb0
   30 root     -68    -     0K     8K WAIT    0  18.5H 19.19% irq258: igb0
  861 root      51    0 51584K 36712K RUN     1 368:22  7.28% mpd5
   12 root     171 ki31     0K     8K RUN     0  37.9H  7.08% idle: cpu0
   41 root     -68    -     0K     8K RUN     1 478:09  5.86% irq264: igb1
   39 root     -68    -     0K     8K RUN     1 424:13  4.39% irq263: igb1
   11 root     171 ki31     0K     8K RUN     1  48.6H  4.05% idle: cpu1

 

vpn1# netstat -w1
            input        (Total)           output
   packets  errs      bytes    packets  errs      bytes colls
    107440     0   52102055     108138     0   58523851     0
    103402     0   51041090     101621     0   55673735     0
    102850     0   49716606     102009     0   56018853     0
    102684     0   48722125     102927     0   54884808     0
    105994     0   50865826     105481     0   57164811     0
    105159     0   49203094     103371     0   54377729     0
    106051     0   50517082     103913     0   55816048     0

 

на ng_car сейчас чуть меньше

last pid: 72449;  load averages:  1.24,  1.12,  1.01                               up 0+03:29:51  20:34:56
84 processes:  3 running, 64 sleeping, 17 waiting
CPU:  0.0% user,  0.0% nice, 59.7% system,  0.4% interrupt, 39.9% idle
Mem: 72M Active, 167M Inact, 98M Wired, 160K Cache, 199M Buf, 1565M Free
Swap: 3072M Total, 3072M Free

  PID USERNAME PRI NICE   SIZE    RES STATE   C   TIME    CPU COMMAND
   11 root     171 ki31     0K     8K RUN     1 124:29 43.80% idle: cpu1
   12 root     171 ki31     0K     8K CPU0    0 116:14 42.58% idle: cpu0
   26 root     -68    -     0K     8K -       0  55:46 40.19% em0 taskq
    3 root     -68    -     0K     8K sleep   1  57:09 39.79% ng_queue1
    2 root     -68    -     0K     8K sleep   0  57:08 37.79% ng_queue0
   13 root     -32    -     0K     8K WAIT    1   1:58  0.68% swi4: clock sio
  662 root      44    0 17656K 12080K select  1   2:29  0.00% mpd5

vpn2# netstat -w1
            input        (Total)           output
   packets  errs      bytes    packets  errs      bytes colls
     56433     0   32007475      56517     0   30849636     0
     52485     0   29743080      52370     0   28549218     0
     56965     0   33313992      57034     0   32036304     0
     59755     0   33892342      59755     0   32759495     0
     56719     0   32495709      56399     0   30993926     0

 

но если трафик вырастит, то и показатели ng_queue повысятся.

Чем обусловлен рост этого процесса ?

Какие параметры смотреть ?

Изменено пользователем Mechanic

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Странно у меня при в 2 раза большем трафе\ппс 70% айдл , шейпит dummynet, но сетевая ем и дрова яндекс, проц простой и7 920

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Интересуют параметры sysctl и loader.conf

ng_queue - это потоки для netgraph.

Мне в своё время (freebsd 6.2) помогла замена ng_nat на pf nat - нагрузка упала примерно вдвое, плюс сильно упростились настройки файрволла.

После этого можно попробовать заменить ng_netflow на pfflowd, чтобы netgraph не использовался вообще, но это, скорее всего, уже без разницы.

 

проц простой и7 920
наверное, и автомобиль простой порш кайен? ;-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ng_netflow - берется из Mpd

cat /boot/loader.conf
kern.ipc.maxpipekva=32000000
kern.ipc.maxsockbuf=1048576
kern.maxusers=512
kern.maxdsiz=1073741824
kern.dfldsiz=1073741824
kern.maxssiz=134217728
net.inet.tcp.syncache.hashsize=1024
net.inet.tcp.syncache.bucketlimit=100
net.inet.tcp.tcbhashsize=32768
net.graph.maxalloc=4096 #default 4096

#memory
#512M mem for kernel
vm.kmem_size=512M
vm.kmem_size_max=512M
#1G mem for kernel
#vm.kmem_size=1G
#vm.kmem_size_max=1G

#Intel em-driver
if_em_load="YES"   #for 6.9.21
hw.em.rxd=2048
hw.em.txd=2048
hw.em.rx_int_delay=600
hw.em.tx_int_delay=600
hw.em.rx_abs_int_delay=1000
hw.em.tx_abs_int_delay=1000

#Intel ET
#if_igb_load="YES"

#hw.igb.rxd=2048
#hw.igb.txd=2048
#dev.igb.0.enable_lro=0
#dev.igb.1.enable_lro=0

 

kern.sugid_coredump=0
kern.corefile=/var/tmp/%N.core

net.inet.icmp.icmplim=100

##kern.maxfilesperproc=32768
##kern.maxfiles=65536
kern.ipc.somaxconn=2048
kern.ipc.maxsockets=100000
kern.ipc.nmbclusters=100000

#kern.ipc.maxsockbuf=1048576
kern.ipc.maxsockbuf=2097152

#net.inet.ip.intr_queue_maxlen=10000
#net.inet.ip.fw.debug=0
net.inet.ip.fw.dyn_max=20480
net.inet.ip.fw.dyn_buckets=4096
net.inet.ip.fw.one_pass=1       # for dummynet+nat !!!!

net.inet.ip.fastforwarding=1
#net.inet.tcp.msl=7500
#net.inet.tcp.rfc1323=1

net.inet.ip.portrange.first=8192
net.inet.ip.portrange.last=65535
#net.inet.ip.portrange.randomized=0
net.inet.ip.intr_queue_maxlen=4096

#add hackers options ...
net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1
net.inet.ip.redirect=1 

#net.inet.udp.maxdgram=57344
net.inet.udp.recvspace=65535
net.inet.tcp.sendspace=65535
net.inet.tcp.recvspace=65535

net.graph.maxdgram=1024000
net.graph.recvspace=1024000

net.local.stream.recvspace=65535
net.local.stream.sendspace=65535

# Intel(R) PRO/1000 Network Connection 6.9.6
dev.em.0.rx_int_delay=600
dev.em.0.tx_int_delay=600
dev.em.0.rx_abs_int_delay=1000
dev.em.0.tx_abs_int_delay=1000
dev.em.0.rx_processing_limit=1024

# Intel(R) PRO/1000ET Network Connection

#dev.igb.0.low_latency=1000
#dev.igb.0.ave_latency=2000
#dev.igb.0.bulk_latency=4000
#dev.igb.0.rx_processing_limit=400      #1000
#dev.igb.0.enable_aim=1

#dev.igb.1.low_latency=1000
#dev.igb.1.ave_latency=2000
#dev.igb.1.bulk_latency=4000
#dev.igb.1.rx_processing_limit=400      #1000
#dev.igb.1.enable_aim=1

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Что говорит "vmstat -i"?

Изменяет ли нагрузку команда "egrep '^dev\.(em|igb)\.' /etc/sysctl.conf | xargs sysctl"?

 

 

http://forum.nag.ru/forum/index.php?s=&amp...st&p=470176

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

vpn2# vmstat -i
interrupt                          total       rate
irq14: ata0                         7581          1
cpu0: timer                     11361735       2017
irq256: em0                      7840587       1392
cpu1: timer                     11361546       2017
Total                           30571449       5429

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

vpn1# sysctl dev.em
dev.em.0.%desc: Intel(R) PRO/1000 Network Connection 6.9.6.Yandex[$Revision: 1.3
6.2.10 $]
dev.em.0.%driver: em
dev.em.0.%location: slot=25 function=0 handle=\_SB_.PCI0.ILAN
dev.em.0.%pnpinfo: vendor=0x8086 device=0x10bd subvendor=0x8086 subdevice=0x0001
class=0x020000
dev.em.0.%parent: pci0
dev.em.0.debug: -1
dev.em.0.stats: -1
dev.em.0.rx_kthreads: 2
dev.em.0.rx_int_delay: 900
dev.em.0.tx_int_delay: 900
dev.em.0.rx_abs_int_delay: 1800
dev.em.0.tx_abs_int_delay: 1800
dev.em.0.rx_kthread_priority: 127
dev.em.0.wake: 0

vpn1# sysctl dev.igb
dev.igb.0.%desc: Intel(R) PRO/1000 Network Connection version - 1.8.4
dev.igb.0.%driver: igb
dev.igb.0.%location: slot=0 function=0
dev.igb.0.%pnpinfo: vendor=0x8086 device=0x10c9 subvendor=0x8086 subdevice=0xa03c class=0x020000
dev.igb.0.%parent: pci1
dev.igb.0.debug: -1
dev.igb.0.stats: -1
dev.igb.0.flow_control: 3
dev.igb.0.enable_aim: 1
dev.igb.0.low_latency: 1000
dev.igb.0.ave_latency: 2000
dev.igb.0.bulk_latency: 4000
dev.igb.0.rx_processing_limit: 400
dev.igb.1.%desc: Intel(R) PRO/1000 Network Connection version - 1.8.4
dev.igb.1.%driver: igb
dev.igb.1.%location: slot=0 function=1
dev.igb.1.%pnpinfo: vendor=0x8086 device=0x10c9 subvendor=0x8086 subdevice=0xa03c class=0x020000
dev.igb.1.%parent: pci1
dev.igb.1.debug: -1
dev.igb.1.stats: -1
dev.igb.1.flow_control: 3
dev.igb.1.enable_aim: 1
dev.igb.1.low_latency: 1000
dev.igb.1.ave_latency: 2000
dev.igb.1.bulk_latency: 4000
dev.igb.1.rx_processing_limit: 400

last pid: 7569; load averages: 0.47, 0.57, 0.59 up 7+05:56:14 11:07:13

103 processes: 4 running, 72 sleeping, 27 waiting

CPU: 1.8% user, 0.0% nice, 33.9% system, 26.6% interrupt, 37.6% idle

Mem: 219M Active, 369M Inact, 369M Wired, 199M Buf, 996M Free

Swap: 5120M Total, 5120M Free

 

PID USERNAME PRI NICE SIZE RES STATE C TIME CPU COMMAND

3 root -68 - 0K 8K sleep 1 75.1H 62.35% ng_queue1

12 root 171 ki31 0K 8K RUN 0 43.8H 44.97% idle: cpu0

11 root 171 ki31 0K 8K RUN 1 56.3H 25.39% idle: cpu1

2 root -68 - 0K 8K sleep 0 54.6H 20.75% ng_queue0

32 root -68 - 0K 8K WAIT 0 19.3H 15.97% irq259: igb0

30 root -68 - 0K 8K WAIT 0 19.7H 14.36% irq258: igb0

861 root 47 0 51584K 36712K CPU1 1 391:45 4.20% mpd5

41 root -68 - 0K 8K WAIT 1 501:09 3.47% irq264: igb1

39 root -68 - 0K 8K WAIT 1 447:02 3.27% irq263: igb1

14 root -32 - 0K 8K WAIT 1 168:27 0.59% swi4: clock sio

899 root 47 0 17324K 13836K select 1 136:09 0.49% snmpd

35 root -68 - 0K 8K WAIT 0 129:19 0.20% irq261: igb1

26 root -68 - 0K 8K WAIT 0 75:16 0.10% irq256: igb0

после egrep '^dev\.(em|igb)\.' /etc/sysctl.conf | xargs sysctl

и убрал жесткую привязку процессов к ядрам

last pid: 14377;  load averages:  0.43,  0.50,  0.53                                        up 7+06:08:09  11:19:08
103 processes: 5 running, 71 sleeping, 27 waiting
CPU:  2.6% user,  0.0% nice, 39.7% system, 23.7% interrupt, 34.0% idle
Mem: 219M Active, 369M Inact, 370M Wired, 199M Buf, 996M Free
Swap: 5120M Total, 5120M Free

  PID USERNAME PRI NICE   SIZE    RES STATE   C   TIME    CPU COMMAND
   12 root     171 ki31     0K     8K RUN     0  43.8H 48.29% idle: cpu0
    2 root     -68    -     0K     8K CPU1    1  54.6H 39.45% ng_queue0
    3 root     -68    -     0K     8K RUN     1  75.2H 39.26% ng_queue1
   30 root     -68    -     0K     8K WAIT    0  19.8H 23.10% irq258: igb0
   32 root     -68    -     0K     8K WAIT    1  19.3H 12.06% irq259: igb0
   11 root     171 ki31     0K     8K RUN     1  56.4H 10.60% idle: cpu1
   39 root     -68    -     0K     8K WAIT    0 447:30  5.76% irq263: igb1
   41 root     -68    -     0K     8K WAIT    0 501:38  3.56% irq264: igb1
  861 root      46    0 51584K 36712K select  1 392:14  2.49% mpd5

 

при этом трафика

vpn1# netstat -w1
            input        (Total)           output
   packets  errs      bytes    packets  errs      bytes colls
     78761     0   36239246      77050     0   40603218     0
     76818     0   34644820      74683     0   39324546     0
     77396     0   34999952      75757     0   39036423     0
     74002     0   34453127      72652     0   39118048     0
     73485     0   34118037      72418     0   38579060     0
     77552     0   36123170      75736     0   41505664     0

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рост ng_queue пропорционален росту графа в подсистеме Netgraph. Очевидно, что путь пакета в этом графе должен быть кратчайшим, отсюда следует, что навешивать доп. сервисы в mpd следует аккуратно и в первую очередь необходимо избавиться от NAT на NAS-ах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

... что навешивать доп. сервисы в mpd следует аккуратно и в первую очередь необходимо избавиться от NAT на NAS-ах.

угу, а на больших скоростях и от rate-limit-та (ng_car) избавиться на NAS-ах

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

угу, а на больших скоростях и от rate-limit-та (ng_car) избавиться на NAS-ах

Насколько я могу судить, оно не столько от скорости зависит, сколько от количества нод и глубины графа.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

... что навешивать доп. сервисы в mpd следует аккуратно и в первую очередь необходимо избавиться от NAT на NAS-ах.
угу, а на больших скоростях и от rate-limit-та (ng_car) избавиться на NAS-ах

-nat, -ng_car и что тогда этот нас будет делать ?! авторизовать и и маршрутизировать абонов ?

не слишком жирно такой функционал на одном сервере ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

-nat, -ng_car и что тогда этот нас будет делать ?! авторизовать и и маршрутизировать абонов ?

не слишком жирно такой функционал на одном сервере ?

mpd + ipfw + dummynet на одном сервере, nat + netflow + bgp на втором.

Без mpd у меня нагрузка распределилась почти поровну.

Суммарная производительность такой связки оказалась выше, чем у двух параллельно работающих серверов с полным набором сервисов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

-nat, -ng_car и что тогда этот нас будет делать ?! авторизовать и и маршрутизировать абонов ?

не слишком жирно такой функционал на одном сервере ?

mpd + ipfw + dummynet на одном сервере, nat + netflow + bgp на втором.

Без mpd у меня нагрузка распределилась почти поровну.

Суммарная производительность такой связки оказалась выше, чем у двух параллельно работающих серверов с полным набором сервисов.

Аналогично!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

... что навешивать доп. сервисы в mpd следует аккуратно и в первую очередь необходимо избавиться от NAT на NAS-ах.
угу, а на больших скоростях и от rate-limit-та (ng_car) избавиться на NAS-ах

-nat, -ng_car и что тогда этот нас будет делать ?! авторизовать и и маршрутизировать абонов ?

не слишком жирно такой функционал на одном сервере ?

Не слишком, так Вы сможете авторизовать до 2500 абонентов (одновременных сессий) на одном сервере, а в текущей ситуации сколько?

Да и в самом деле, что Core2 и Asus - это дорогое решение?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

сейчас нормально 1000-1200 , далее проблемнее

фактически если выкинуть nat и выдавать динамически ip-адреса, то можно и в текущей конфигурации выжать больше ?!

bgp у меня на отельном сервере, а снятие netflow не думаю, что потребляет значительный ресурс ( используется прямо в mpd)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.