Jump to content
Калькуляторы

ipfw + dummynet Большая загрузка

Добрый день!

Как можно попробовать уменьшить нагрузку?

ОС: 7.2-RELEASE FreeBSD 7.2-RELEASE #1: Fri Oct 30 07:40:53 MSK 2009

 

top -S:

CPU: 16.4% user,  0.0% nice, 79.8% system,  1.2% interrupt,  2.7% idle
Mem: 1879M Active, 272M Inact, 238M Wired, 78M Cache, 112M Buf, 28M Free
Swap: 20G Total, 122M Used, 20G Free

  PID USERNAME  THR PRI NICE   SIZE    RES STATE  C   TIME   WCPU COMMAND
   47 root        1 -68    -     0K     8K CPU1   0 109.8H 54.05% dummynet
   29 root        1 -68    -     0K     8K CPU2   2 119.2H 47.85% em0 taskq
   30 root        1 -68    -     0K     8K RUN    1  68.1H 30.66% em1 taskq
    3 root        1 -68    -     0K     8K sleep  0  56.7H 28.27% ng_queue1
    5 root        1 -68    -     0K     8K RUN    2  56.4H 28.08% ng_queue3
    2 root        1 -68    -     0K     8K sleep  3  57.0H 27.98% ng_queue0
    4 root        1 -68    -     0K     8K RUN    2  57.0H 27.78% ng_queue2

 

netstat -n -I

netstat -n -w 1
            input        (Total)           output
   packets  errs      bytes    packets  errs      bytes colls
     32548     0   22016757      31937     0   22782519     0
     31439     0   20604224      31444     0   22542233     0
     31047     0   20950729      30919     0   22430378     0
     30021     0   20034794      29841     0   21209338     0
     31224     0   21204770      30945     0   22057784     0
     31975     0   21377029      31526     0   22420445     0
     33415     0   22041655      33198     0   23997000     0
     33387     0   22411142      33145     0   24330539     0

 

nat не используется, используется tee

Но если в правилах в самом начале ставится:

allow ip from any to any

Это не влияет на нагрузку.

Share this post


Link to post
Share on other sites
net.inet.ip.dummynet.io_fast: 0

net.inet.ip.fastforwarding: 0

Подкрутите.

 

А вообще маловато инфы предоставили.

Edited by goletsa

Share this post


Link to post
Share on other sites

установлено:

net.inet.ip.dummynet.io_fast: 0

net.inet.ip.forwarding: 1

В какую сторону крутить?

 

Добавлено:

Сетевые установлены:

em1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=19b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4>
        media: Ethernet autoselect (1000baseTX <full-duplex>)
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=19b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4>
        media: Ethernet autoselect (1000baseTX <full-duplex>)

Одна в сеть, другая в роутер смотрит в сторону инета.

 

Share this post


Link to post
Share on other sites

Не помогло:

469 processes: 12 running, 442 sleeping, 15 waiting
CPU: 23.8% user,  0.0% nice, 71.4% system,  2.4% interrupt,  2.4% idle
Mem: 1882M Active, 303M Inact, 238M Wired, 45M Cache, 112M Buf, 28M Free
Swap: 20G Total, 122M Used, 20G Free

  PID USERNAME  THR PRI NICE   SIZE    RES STATE  C   TIME   WCPU COMMAND
   29 root        1 -68    -     0K     8K CPU1   1 119.7H 54.79% em0 taskq
   47 root        1 -68    -     0K     8K CPU2   2 110.3H 37.16% dummynet
   30 root        1 -68    -     0K     8K RUN    1  68.4H 28.76% em1 taskq
    4 root        1 -68    -     0K     8K sleep  2  57.3H 26.17% ng_queue2
    3 root        1 -68    -     0K     8K sleep  0  56.9H 25.88% ng_queue1
    5 root        1 -68    -     0K     8K CPU3   3  56.7H 25.88% ng_queue3
    2 root        1 -68    -     0K     8K CPU3   3  57.3H 25.59% ng_queue0

 

Share this post


Link to post
Share on other sites

netstat -w1

Сколько стало?

Ибо нагрузка от dummynet то как раз упала.

Смотрите свой первый пост.

 

Share this post


Link to post
Share on other sites

            input        (Total)           output
   packets  errs      bytes    packets  errs      bytes colls
     30909     0   20072689      32699     0   25656930     0
     31059     0   19980141      32670     0   25014000     0
     29731     0   19190643      31548     0   24688002     0
     30574     0   20003333      32036     0   25324530     0
     30135     0   19582755      31963     0   25045469     0
     31638     0   20605351      32923     0   25680173     0
     30523     0   19322019      32052     0   24365580     0
     30508     0   19460832      32195     0   25175629     0
     33235     0   20893191      35394     0   28082804     0
     32270     0   20770130      34172     0   26753143     0
     32019     0   20629297      33931     0   27254060     0

А что такое em0 taskq, что это за задачи такие?

Share this post


Link to post
Share on other sites

Планировщик прерываний сетевой карты или типа того.

 

Share this post


Link to post
Share on other sites

cpuset -l 0 -p 47

Уменьшит ли нагрузку на dummynet данная команда?

и sysctl dev.em в студию

Share this post


Link to post
Share on other sites

Загрузка в 7 утра:

CPU:  0.9% user,  0.0% nice,  7.9% system,  0.1% interrupt, 91.1% idle
Mem: 1880M Active, 261M Inact, 240M Wired, 87M Cache, 112M Buf, 28M Free
Swap: 20G Total, 122M Used, 20G Free

  PID USERNAME  THR PRI NICE   SIZE    RES STATE  C   TIME   WCPU COMMAND
   11 root        1 171 ki31     0K     8K CPU3   3 202.4H 100.00% idle: cpu3
   13 root        1 171 ki31     0K     8K CPU1   1 183.9H 95.75% idle: cpu1
   12 root        1 171 ki31     0K     8K RUN    2 183.3H 95.46% idle: cpu2
   14 root        1 171 ki31     0K     8K RUN    0 189.6H 90.77% idle: cpu0
61725 root        1  48    0 28312K  3844K select 0  89.5H  6.88% ndsad
   29 root        1 -68    -     0K     8K -      1 121.6H  6.30% em0 taskq
   30 root        1 -68    -     0K     8K -      2  69.3H  3.47% em1 taskq
    4 root        1 -68    -     0K     8K sleep  0  58.1H  2.29% ng_queue2
    5 root        1 -68    -     0K     8K CPU0   0  57.5H  1.86% ng_queue3
    2 root        1 -68    -     0K     8K sleep  0  58.1H  1.76% ng_queue0
    3 root        1 -68    -     0K     8K sleep  3  57.8H  1.66% ng_queue1

 

netstat -w1:

 netstat -w1
            input        (Total)           output
   packets  errs      bytes    packets  errs      bytes colls
      4850     0    3873959       4645     0    3384735     0
      4713     0    3605982       4567     0    3115689     0
      4869     0    4102627       4603     0    3381107     0
      6053     0    5087425       5628     0    4084399     0
      7110     0    5590639       6890     0    5232543     0
      6302     0    5072037       5928     0    4274475     0

 

cpuset -l 0 -p 47 проверю, как только нагрузка вернется в прежнее состояние.

 

sysctl -a | grep dev.em

dev.em.0.%desc: Intel(R) PRO/1000 Network Connection 6.9.6
dev.em.0.%driver: em
dev.em.0.%location: slot=0 function=0
dev.em.0.%pnpinfo: vendor=0x8086 device=0x1096 subvendor=0x8086 subdevice=0x3484 class=0x020000
dev.em.0.%parent: pci5
dev.em.0.debug: -1
dev.em.0.stats: -1
dev.em.0.rx_int_delay: 0
dev.em.0.tx_int_delay: 66
dev.em.0.rx_abs_int_delay: 66
dev.em.0.tx_abs_int_delay: 66
dev.em.0.rx_processing_limit: 100
dev.em.1.%desc: Intel(R) PRO/1000 Network Connection 6.9.6
dev.em.1.%driver: em
dev.em.1.%location: slot=0 function=1
dev.em.1.%pnpinfo: vendor=0x8086 device=0x1096 subvendor=0x8086 subdevice=0x3484 class=0x020000
dev.em.1.%parent: pci5
dev.em.1.debug: -1
dev.em.1.stats: -1
dev.em.1.rx_int_delay: 0
dev.em.1.tx_int_delay: 66
dev.em.1.rx_abs_int_delay: 66
dev.em.1.tx_abs_int_delay: 66
dev.em.1.rx_processing_limit: 100

Share this post


Link to post
Share on other sites

Выставите задержки так. Проверьте под нагрузкой, сгенерировав побольше трафика.

 

dev.em.0.rx_int_delay=750

dev.em.0.tx_int_delay=750

dev.em.0.rx_abs_int_delay=1500

dev.em.0.tx_abs_int_delay=1500

dev.em.1.rx_int_delay=750

dev.em.1.tx_int_delay=750

dev.em.1.rx_abs_int_delay=1500

dev.em.1.tx_abs_int_delay=1500

 

Что у вас в netgraph кстати?

Share this post


Link to post
Share on other sites
net.inet.ip.dummynet.io_fast: 0

net.inet.ip.fastforwarding: 0

Подкрутите.

 

А вообще маловато инфы предоставили.

А это-то с чего? Я бы сказал, что как раз наоборот надо, в 1 выставить.

 

Автор, покажите sysctl net.inet.ip, пожалуйста.

Сделайте ещё sysctl dev.em.1.debug=1, sysclt dev.em.1.stats=1 и посмотрите после этого статистику по sysctl -a |egrep '^em1'

 

Мне в аналогичной ситуации помог переход на яндексовские драйвера и такой тюнинг:

 

dev.em.0.rx_abs_int_delay=1800
dev.em.0.rx_int_delay=900
dev.em.0.rx_kthreads=1
dev.em.0.tx_abs_int_delay=1800
dev.em.0.tx_int_delay=900
dev.em.1.rx_abs_int_delay=1800
dev.em.1.rx_int_delay=900
dev.em.1.rx_kthreads=1
dev.em.1.tx_abs_int_delay=1800
dev.em.1.tx_int_delay=900
kern.ipc.maxsockbuf=2097152
kern.ipc.nmbclusters=262144
kern.ipc.somaxconn=4096
kern.maxfiles=20480
kern.timecounter.hardware=HPET
net.inet.ip.dummynet.expire=0
net.inet.ip.dummynet.hash_size=1024
net.inet.ip.dummynet.io_fast=1
net.inet.ip.fastforwarding=1
net.inet.ip.fw.one_pass=0
net.inet.ip.random_id=1
net.inet.ip.redirect=0
net.inet.ip.stealth=1
net.inet.tcp.delayed_ack=0
net.inet.tcp.drop_synfin=1
net.inet.tcp.recvspace=65228
net.inet.tcp.sendspace=65228
net.inet.tcp.syncookies=1
net.inet.udp.maxdgram=57344
net.inet.udp.recvspace=65228
net.link.ether.inet.log_arp_wrong_iface=0

 

Dummynet на аналогичной по железу и софту(но с поллингом и родными драйверами) сервере показывал высокую загрузку даже при снятии нагрузки, я об этом даже писал.

Edited by Dyr

Share this post


Link to post
Share on other sites
            input        (Total)           output
   packets  errs      bytes    packets  errs      bytes colls
     30909     0   20072689      32699     0   25656930     0
     31059     0   19980141      32670     0   25014000     0
     29731     0   19190643      31548     0   24688002     0
     30574     0   20003333      32036     0   25324530     0
     30135     0   19582755      31963     0   25045469     0
     31638     0   20605351      32923     0   25680173     0
     30523     0   19322019      32052     0   24365580     0
     30508     0   19460832      32195     0   25175629     0
     33235     0   20893191      35394     0   28082804     0
     32270     0   20770130      34172     0   26753143     0
     32019     0   20629297      33931     0   27254060     0

А что такое em0 taskq, что это за задачи такие?

 

Немного офтопну по поводу "em0 taskq".

Может когда-то уже объясняли что это, я не видел (ткните в пруфлинк =) )

 

Это ядерный тред, запускается непосредственно при подгрузке драйвера(модуля) e1000 из sys/dev/e1000/if_em.c .

Служит для отложенной обработки дескрипторов( этакий аналог adaptive interrupt mitigation ).

Параметр rx_processing_limit в sysctl означает длинну очереди taskqueue, в которую запихивается код для асинхронной обработки дескрипторов.

Сам тред исполняет функции em_handle_rxtx, em_handle_rx, em_handle_tx ( вызываемые функции зависят от типа прерываний, которые поддерживает сетевой адаптер).

Параллельно еще существует swi(software interrupt thread) для обработки нижних половин прерываний. Но они начинают генерироваться только после функции ether_demux, которая регистрирует обработчик для IP пакетов через фреймворк netisr( функция netisr_register).

 

Если где неправ или неточен - поправьте.

 

Share this post


Link to post
Share on other sites

Что такое нижняя и верхняя половина прерываний, не просветите?

Share this post


Link to post
Share on other sites
Что такое нижняя и верхняя половина прерываний, не просветите?

Верхняя половина - функция, которая непосредственно вызывается при генерации прерывания, по сути - interrupt service routine(isr). В этот момент задача этой функции совершить минимум действий и возвратить управление коду ядра с того момента, как этот код был прерван.

 

Нижняя половина - тоже функция(не странно ли? =) ), которая выполняется уже не в контексте прерывания(хотя некоторые говорят, что во время прерывания контекст остутсвует), а после возврата из прерывания. Обычно (генерируется|планируется) из isr.

В ядре Линукс реализация нижних половин представлена следующим многообразием - bottom half - устарело и не используется, оставлено для совместимости; softirq(он же механизм отложенных прерываний, не путать с napi), tasklets, workqueue.

Пример на сетевой подсистеме ядра Линукс:

 

В ядре Линукс сетевая подсистема реализована через механизм отложенных прерываний(softirq).

 

- берем драйвер drivers/net/e1000e/netdev.c,

- там есть функция e1000_intr_msi - это и есть isr в режиме MSI/MSI-X compatible,

- если посмотреть, в теле этой функции есть вызов функции __napi_schedule(&adapter->napi) - это обертка для реализации NAPI, и \

генерации отоженного прерывания через __raise_softirq_irqoff(NET_RX_SOFTIRQ);

- после генерации отложенного прерывания, оно может быть выполнено непосредственно после возврата из прерывания, либо в контекстве ядерного thread'а ksoftirqd

 

Как то так.

Edited by migosm

Share this post


Link to post
Share on other sites

Выставил

dev.em.0.rx_int_delay=750
dev.em.0.tx_int_delay=750
dev.em.0.rx_abs_int_delay=1500
dev.em.0.tx_abs_int_delay=1500
dev.em.1.rx_int_delay=750
dev.em.1.tx_int_delay=750
dev.em.1.rx_abs_int_delay=1500
dev.em.1.tx_abs_int_delay=1500

Такое ощущение что картинка стала получше, но все равно печальна:

CPU: 12.7% user,  0.0% nice, 59.2% system,  1.3% interrupt, 26.8% idle
Mem: 1917M Active, 226M Inact, 242M Wired, 82M Cache, 112M Buf, 28M Free
Swap: 20G Total, 116M Used, 20G Free

  PID USERNAME  THR PRI NICE   SIZE    RES STATE  C   TIME   WCPU COMMAND
   14 root        1 171 ki31     0K     8K CPU0   0 196.6H 46.48% idle: cpu0
   29 root        1 -68    -     0K     8K -      3 127.4H 39.45% em0 taskq
   11 root        1 171 ki31     0K     8K RUN    3 210.1H 38.18% idle: cpu3
   12 root        1 171 ki31     0K     8K RUN    2 190.2H 33.06% idle: cpu2
   47 root        1 -68    -     0K     8K CPU0   0 115.4H 27.98% dummynet
    2 root        1 -68    -     0K     8K sleep  2  60.8H 21.97% ng_queue0
    3 root        1 -68    -     0K     8K sleep  2  60.4H 21.97% ng_queue1
    5 root        1 -68    -     0K     8K sleep  1  60.2H 21.09% ng_queue3
    4 root        1 -68    -     0K     8K sleep  1  60.8H 19.97% ng_queue2

 

sysctl -a | grep net.inet.ip

net.inet.ip.portrange.randomtime: 45                             
net.inet.ip.portrange.randomcps: 10                              
net.inet.ip.portrange.randomized: 1                              
net.inet.ip.portrange.reservedlow: 0                             
net.inet.ip.portrange.reservedhigh: 1023                         
net.inet.ip.portrange.hilast: 65535                              
net.inet.ip.portrange.hifirst: 49152                             
net.inet.ip.portrange.last: 65535                                
net.inet.ip.portrange.first: 49152                               
net.inet.ip.portrange.lowlast: 600                               
net.inet.ip.portrange.lowfirst: 1023                             
net.inet.ip.forwarding: 1                                        
net.inet.ip.redirect: 1                                          
net.inet.ip.ttl: 64                                              
net.inet.ip.rtexpire: 3600                                       
net.inet.ip.rtminexpire: 10                                      
net.inet.ip.rtmaxcache: 128                                      
net.inet.ip.sourceroute: 0                                       
net.inet.ip.intr_queue_maxlen: 50                                
net.inet.ip.intr_queue_drops: 24988                              
net.inet.ip.accept_sourceroute: 0                                
net.inet.ip.keepfaith: 0                                         
net.inet.ip.gifttl: 30                                           
net.inet.ip.same_prefix_carp_only: 0                             
net.inet.ip.subnets_are_local: 0                                 
net.inet.ip.dummynet.debug: 0                                    
net.inet.ip.dummynet.pipe_byte_limit: 1048576                    
net.inet.ip.dummynet.pipe_slot_limit: 100                        
net.inet.ip.dummynet.io_pkt_drop: 136204191                      
net.inet.ip.dummynet.io_pkt_fast: 657487588                      
net.inet.ip.dummynet.io_pkt: 3758382550                          
net.inet.ip.dummynet.io_fast: 1                                  
net.inet.ip.dummynet.tick_lost: 0                                
net.inet.ip.dummynet.tick_diff: 130353415                        
net.inet.ip.dummynet.tick_adjustment: 120232248                  
net.inet.ip.dummynet.tick_delta_sum: 197                         
net.inet.ip.dummynet.tick_delta: 2                               
net.inet.ip.dummynet.red_max_pkt_size: 1500                      
net.inet.ip.dummynet.red_avg_pkt_size: 512                       
net.inet.ip.dummynet.red_lookup_depth: 256                       
net.inet.ip.dummynet.max_chain_len: 16                           
net.inet.ip.dummynet.expire: 1                                   
net.inet.ip.dummynet.search_steps: -250769548                    
net.inet.ip.dummynet.searches: -536584729                        
net.inet.ip.dummynet.extract_heap: 0                             
net.inet.ip.dummynet.ready_heap: 112                             
net.inet.ip.dummynet.hash_size: 256                              
net.inet.ip.fastforwarding: 0                                    
net.inet.ip.fw.dyn_keepalive: 1                                  
net.inet.ip.fw.dyn_short_lifetime: 5                             
net.inet.ip.fw.dyn_udp_lifetime: 10                              
net.inet.ip.fw.dyn_rst_lifetime: 1                               
net.inet.ip.fw.dyn_fin_lifetime: 1                               
net.inet.ip.fw.dyn_syn_lifetime: 20                              
net.inet.ip.fw.dyn_ack_lifetime: 300                             
net.inet.ip.fw.static_count: 59                                  
net.inet.ip.fw.dyn_max: 4096                                     
net.inet.ip.fw.dyn_count: 0                                      
net.inet.ip.fw.curr_dyn_buckets: 256                             
net.inet.ip.fw.dyn_buckets: 2048                                 
net.inet.ip.fw.tables_max: 128                                   
net.inet.ip.fw.default_rule: 65535                               
net.inet.ip.fw.verbose_limit: 0                                  
net.inet.ip.fw.verbose: 1                                        
net.inet.ip.fw.one_pass: 1                                       
net.inet.ip.fw.autoinc_step: 100                                 
net.inet.ip.fw.enable: 1                                         
net.inet.ip.maxfragpackets: 800                                  
net.inet.ip.stealth: 0                                           
net.inet.ip.maxfragsperpacket: 16                                
net.inet.ip.fragpackets: 0                                       
net.inet.ip.check_interface: 0                                   
net.inet.ip.random_id: 0                                         
net.inet.ip.sendsourcequench: 0                                  
net.inet.ip.process_options: 1
net.inet.ipf.fr_minttl: 4
net.inet.ipf.fr_chksrc: 0
net.inet.ipf.fr_defaultauthage: 600
net.inet.ipf.fr_authused: 0
net.inet.ipf.fr_authsize: 32
net.inet.ipf.ipf_hostmap_sz: 2047
net.inet.ipf.ipf_rdrrules_sz: 127
net.inet.ipf.ipf_natrules_sz: 127
net.inet.ipf.ipf_nattable_sz: 2047
net.inet.ipf.fr_statemax: 4013
net.inet.ipf.fr_statesize: 5737
net.inet.ipf.fr_running: 1
net.inet.ipf.fr_ipfrttl: 120
net.inet.ipf.fr_defnatage: 1200
net.inet.ipf.fr_icmptimeout: 120
net.inet.ipf.fr_udpacktimeout: 24
net.inet.ipf.fr_udptimeout: 240
net.inet.ipf.fr_tcpclosed: 60
net.inet.ipf.fr_tcptimeout: 480
net.inet.ipf.fr_tcplastack: 60
net.inet.ipf.fr_tcpclosewait: 480
net.inet.ipf.fr_tcphalfclosed: 14400
net.inet.ipf.fr_tcpidletimeout: 864000
net.inet.ipf.fr_active: 0
net.inet.ipf.fr_pass: 134217730
net.inet.ipf.fr_flags: 0

 

Применив

sysctl -w dev.em.1.debug=1
sysclt -w dev.em.1.stats=1

показало:

sysctl -a |egrep '^em1'

em1: Adapter hardware address = 0xc5df7218                                          
em1: CTRL = 0x581c4241 RCTL = 0x801a                                                
em1: Packet buffer = Tx=16k Rx=32k                                                  
em1: Flow control watermarks high = 30720 low = 29220                               
em1: tx_int_delay = 732, tx_abs_int_delay = 1465                                    
em1: rx_int_delay = 732, rx_abs_int_delay = 1465                                    
em1: fifo workaround = 0, fifo_reset_count = 0                                      
em1: hw tdh = 97, hw tdt = 97                                                       
em1: hw rdh = 84, hw rdt = 73                                                       
em1: Num Tx descriptors avail = 225                                                 
em1: Tx Descriptors not avail1 = 64                                                 
em1: Tx Descriptors not avail2 = 0                                                  
em1: Std mbuf failed = 0                                                            
em1: Std mbuf cluster failed = 0
em1: Driver dropped packets = 0
em1: Driver tx dma failure in encap = 0
em1: Excessive collisions = 0
em1: Sequence errors = 0
em1: Defer count = 48
em1: Missed Packets = 312
em1: Receive No Buffers = 2064
em1: Receive Length Errors = 0
em1: Receive errors = 0
em1: Crc errors = 0
em1: Alignment errors = 0
em1: Collision/Carrier extension errors = 0
em1: RX overruns = 6
em1: watchdog timeouts = 0
em1: RX MSIX IRQ = 0 TX MSIX IRQ = 0 LINK MSIX IRQ = 0
em1: XON Rcvd = 17070
em1: XON Xmtd = 11
em1: XOFF Rcvd = 17070
em1: XOFF Xmtd = 11
em1: Good Packets Rcvd = 9790600165
em1: Good Packets Xmtd = 11100598677
em1: TSO Contexts Xmtd = 621708
em1: TSO Contexts Failed = 0
em1: Excessive collisions = 0
em1: Sequence errors = 0
em1: Defer count = 48
em1: Missed Packets = 312
em1: Receive No Buffers = 2064
em1: Receive Length Errors = 0
em1: Receive errors = 0
em1: Crc errors = 0
em1: Alignment errors = 0
em1: Collision/Carrier extension errors = 0
em1: RX overruns = 6
em1: watchdog timeouts = 0
em1: RX MSIX IRQ = 0 TX MSIX IRQ = 0 LINK MSIX IRQ = 0
em1: XON Rcvd = 17070
em1: XON Xmtd = 11
em1: XOFF Rcvd = 17070
em1: XOFF Xmtd = 11
em1: Good Packets Rcvd = 9790631487
em1: Good Packets Xmtd = 11100633350
em1: TSO Contexts Xmtd = 621708
em1: TSO Contexts Failed = 0

Share this post


Link to post
Share on other sites

По sysctl net.inet.ip всё выглядит вполне неплохо, ИМХО. Только я бы всё же обязательно включил net.inet.ip.fastforwarding, это обязательная переменная для роутеров. Для понимания, что она делает, кусок man 4 inet

IPCTL_FASTFORWARDING (ip.fastforwarding) Boolean: enable/disable the use

of fast IP forwarding code. Defaults to off. When

fast IP forwarding is enabled, IP packets are for-

warded directly to the appropriate network inter-

face with direct processing to completion, which

greatly improves the throughput. All packets for

local IP addresses, non-unicast, or with IP options

are handled by the normal IP input processing path.

All features of the normal (slow) IP forwarding

path are supported including firewall (through

pfil(9) hooks) checking, except ipsec(4) tunnel

brokering. The IP fastforwarding path does not

generate ICMP redirect or source quench messages.

И выключить ip.redirect:
IPCTL_SENDREDIRECTS (ip.redirect) Boolean: enable/disable sending of

ICMP redirects in response to IP packets for which

a better, and for the sender directly reachable,

route and next hop is known. Defaults to on.

Результаты её работы можно проконтролировать по выводу команды netstat -s|grep fast. Скажем, у меня она сейчас выглядит так:

        3640438665 packets forwarded (3640435070 packets fast forwarded)

 

А больше даже и не знаю, что предложить...может, jab или ещё кто что предложат. Поставить yandex-драйвера?

Кстати, обьём буфера на RX в вашей сетевухе в два раза больше обьёма буфера на TX, так что можно соответствующим образом изменить переменные _delay.

 

А что значит "nat не используется, используется tee"?

 

И в скобках замечу, что у вас весьма большое количество попадает в io_fast, у меня такого, к сожалению, почему-то не получается:

net.inet.ip.dummynet.io_pkt_fast: 0
net.inet.ip.dummynet.io_pkt: 2229417975
net.inet.ip.dummynet.io_fast: 1

 

Не покажете конфиг dummynet и ipfw правила для него?

 

migosm, спасибо за обьяснение!

Edited by Dyr

Share this post


Link to post
Share on other sites
Добрый день!

Как можно попробовать уменьшить нагрузку?

nat не используется, используется tee

Но если в правилах в самом начале ставится:

allow ip from any to any

Это не влияет на нагрузку.

На tee трафика много заворачивается? И сколько правил в ipfw при нагрузке?

net.inet.ip.fw.one_pass: 1 стоит еще, смотрю.

 

Ну и на это стоит обратить внимание:

net.inet.ip.intr_queue_maxlen: 50

net.inet.ip.intr_queue_drops: 24988

 

Share this post


Link to post
Share on other sites

изменил:

net.inet.ip.fastforwarding=1
net.inet.ip.redirect=0

Ждем вечера, чтобы посмотреть, что получится.

Так как сейчас картина выглядит след образом:

CPU:  1.8% user,  0.0% nice, 20.5% system,  0.3% interrupt, 77.4% idle
Mem: 1908M Active, 265M Inact, 239M Wired, 56M Cache, 112M Buf, 28M Free
Swap: 20G Total, 115M Used, 20G Free

  PID USERNAME  THR PRI NICE   SIZE    RES STATE  C   TIME   WCPU COMMAND
   11 root        1 171 ki31     0K     8K CPU3   3 235.3H 84.38% idle: cpu3
   13 root        1 171 ki31     0K     8K CPU1   1 213.7H 83.40% idle: cpu1
   12 root        1 171 ki31     0K     8K RUN    2 214.1H 80.08% idle: cpu2
   14 root        1 171 ki31     0K     8K CPU0   0 220.8H 74.85% idle: cpu0
61725 root        1  53    0 28312K  3848K select 1  99.7H 15.09% ndsad
   29 root        1 -68    -     0K     8K -      1 135.0H 11.28% em0 taskq
    4 root        1 -68    -     0K     8K sleep  3  64.7H  8.79% ng_queue2
    2 root        1 -68    -     0K     8K sleep  0  64.7H  8.40% ng_queue0
    5 root        1 -68    -     0K     8K sleep  1  64.0H  8.06% ng_queue3
    3 root        1 -68    -     0K     8K sleep  1  64.3H  7.86% ng_queue1
41431 root      189  54  -10   204M 56608K select 2   0:00  7.57% utm5_core
   30 root        1 -68    -     0K     8K -      2  75.5H  4.79% em1 taskq

Я бы не сказал, что к вечеру гораздо больше объем трафика, всё укладывается в < 100Mbit/s

--

Трафик весь клиентский заворачивается в tee,

00010 1168821979 549320178834 tee 21000 ip from 172.16.0.0/16 to any via ng*

00010 1340045013 1224404026197 tee 21000 ip from any to 172.16.0.0/16 via ng*

для его подсчета.

---

пайпов в конфиге:

${fwcmd} pipe 1 config bw 64Kbit/s mask src-ip 0xffffffff
${fwcmd} pipe 2 config bw 64Kbit/s mask dst-ip 0xffffffff

${fwcmd} pipe 3 config bw 128Kbit/s mask src-ip 0xffffffff
${fwcmd} pipe 4 config bw 128Kbit/s mask dst-ip 0xffffffff

${fwcmd} pipe 5 config bw 256Kbit/s mask src-ip 0xffffffff
${fwcmd} pipe 6 config bw 256Kbit/s mask dst-ip 0xffffffff

${fwcmd} pipe 10 config bw 1700Kbit/s mask src-ip 0xffffffff
${fwcmd} pipe 11 config bw 1700Kbit/s mask dst-ip 0xffffffff

${fwcmd} pipe 12 config bw 3072Kbit/s mask src-ip 0xffffffff
${fwcmd} pipe 13 config bw 3072Kbit/s mask dst-ip 0xffffffff

${fwcmd} pipe 14 config bw 5120Kbit/s mask src-ip 0xffffffff
${fwcmd} pipe 15 config bw 5120Kbit/s mask dst-ip 0xffffffff

${fwcmd} pipe 16 config bw 512Kbit/s mask src-ip 0xffffffff
${fwcmd} pipe 17 config bw 512Kbit/s mask dst-ip 0xffffffff

${fwcmd} pipe 18 config bw 10240Kbit/s mask src-ip 0xffffffff
${fwcmd} pipe 19 config bw 10240Kbit/s mask dst-ip 0xffffffff

${fwcmd} pipe 21 config bw 15360Kbit/s mask src-ip 0xffffffff
${fwcmd} pipe 22 config bw 15360Kbit/s mask dst-ip 0xffffffff

 

Кол-во правил минимальное:

 

ipfw show | wc -l

63

Всё сделано на таблицах.

 

А что можно сделать с net.inet.ip.fw.one_pass: 1 ? на 0 перевести?

 

_delay вроде все поправил:

dev.em.0.rx_int_delay: 750
dev.em.0.tx_int_delay: 750
dev.em.0.rx_abs_int_delay: 1500
dev.em.0.tx_abs_int_delay: 1500
dev.em.1.rx_int_delay: 750
dev.em.1.tx_int_delay: 750
dev.em.1.rx_abs_int_delay: 1500
dev.em.1.tx_abs_int_delay: 1500

Edited by kirush

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

настал вечер:

 

CPU: 12.5% user,  0.0% nice, 65.8% system,  1.7% interrupt, 20.1% idle
Mem: 1933M Active, 214M Inact, 243M Wired, 79M Cache, 112M Buf, 27M Free
Swap: 20G Total, 115M Used, 20G Free

  PID USERNAME  THR PRI NICE   SIZE    RES STATE  C   TIME   WCPU COMMAND
   29 root        1 -68    -     0K     8K -      1 137.8H 50.78% em0 taskq
   47 root        1 -68    -     0K     8K CPU2   2 123.4H 32.96% dummynet
   14 root        1 171 ki31     0K     8K RUN    0 224.9H 32.47% idle: cpu0
    2 root        1 -68    -     0K     8K sleep  3  66.1H 24.76% ng_queue0
    5 root        1 -68    -     0K     8K sleep  1  65.4H 24.46% ng_queue3
    4 root        1 -68    -     0K     8K sleep  0  66.1H 24.27% ng_queue2
    3 root        1 -68    -     0K     8K RUN    3  65.7H 23.97% ng_queue1
   11 root        1 171 ki31     0K     8K RUN    3 239.6H 22.66% idle: cpu3
   12 root        1 171 ki31     0K     8K RUN    2 218.0H 21.29% idle: cpu2
   13 root        1 171 ki31     0K     8K RUN    1 217.5H 18.46% idle: cpu1
   30 root        1 -68    -     0K     8K RUN    2  76.7H 17.87% em1 taskq

em0 смотрит наружу, em1 внутрь сети.

Edited by kirush

Share this post


Link to post
Share on other sites
изменил:

net.inet.ip.fastforwarding=1
net.inet.ip.redirect=0

Трафик весь клиентский заворачивается в tee,

00010 1168821979 549320178834 tee 21000 ip from 172.16.0.0/16 to any via ng*

00010 1340045013 1224404026197 tee 21000 ip from any to 172.16.0.0/16 via ng*

для его подсчета.

Вот здесь можно неплохо нагрузку снизить. Перевести на ng_netflow/ng_ipacct. Расставить направления (in via, out via). Считать на em0/em1 интерфейсах, а не ng*. Поставить счетчики после шейперов, а не до.

 

Сколько, кстати, ng интерейсов в пиках?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this