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

И снова о производительности FreeBSD FreeBSD NAT, профилирование, прерывания, вот это всё

Добрый день, коллеги и не только.

 

Позволю себе обратиться к коллективному разуму. Имею, на мой взгляд, проблему, выражающуюся в недостаточной производительности NAT-серверов под FreeBSD. Все попытки тюнинга и отладки не помогают увеличить трафик более чем на, по прикидкам, процентов 10. "Раскачать" Фрю пытаюсь ещё с версии 8 под Core2Duo, но всё равно до сих пор ощущение недостаточной производительности.

 

Сейчас в каждом из трёх моих серверов стоит Xeon E3-1270 под управлением FreeBSD 10.0-STABLE. Сетевые карты 82580(igb) и, на одном сервере, 82599(ix).

 

Сервера выполняют NAT на базе pf, шейпирование на базе ipfw dummynet и генерацию netflow с помощью ipfw и ng_tee в ng_netflow.

 

При 140Мбайт/сек и 130 Мппс/сек, соответственно, уже начинаются серьёзные "тормоза", связанные со стопроцентной загрузкой каждого ядра прерываниями от сетевых карт или net.isr (в зависимости от настройки, опишу ниже) и LA, соответственно, выходящим за пределы 4 для 4-ядерного процессора с отключенным HT.

 

Что пытался сделать "по крупному". На одном из серверов перешёл с двух laggX, собранных из igb, и вланов на них, к десятигигабитной карте на 82599 и нетегированном трафике через него. Перешёл с FreeBSD 9 на FreeBSD 10 в связи с анонсированным переписыванием pf и давно ожидаемой работы оного в многопоточном режиме (попутно отловив любопытный баг в pf states благодаря @glebius). Отключал полностью ipfw. Всё напрасно, качественного скачка производительности не происходило.

 

О "играх" с net.inet.ip.fastforwarding, net.isr.dispatch и т.п. я даже и не говорю.

 

Пытался я разобраться и с помощью профилирования. К сожалению, моего опыта не хватает для полноценной работы с такими мощными инструментами, как pmstat и dtrace, пример их вывода приведён в конце поста.

 

Перехожу к конкретным настройкам и показателям сервера. Скажем, с 10Гбит картой, сейчас, с небольшим трафиком в ~50Мбайт/сек

 

sysctl.conf

 

dev.em.0.fc=0
dev.em.0.rx_processing_limit=1000
dev.em.1.fc=0
dev.em.1.rx_processing_limit=1000
dev.ix.0.fc=0
dev.ix.1.fc=0
hw.intr_storm_threshold=12000
kern.corefile="/var/tmp/%U/%N.core"
kern.ipc.maxsockbuf=2097152
kern.ipc.somaxconn=4096
kern.random.sys.harvest.ethernet=0
kern.random.sys.harvest.interrupt=0
kern.random.sys.harvest.point_to_point=0
kern.random.sys.harvest.swi=0
kern.timecounter.hardware=HPET
net.inet.ip.dummynet.hash_size=8192
net.inet.ip.dummynet.io_fast=1
net.inet.ip.fw.dyn_buckets=262144
net.inet.ip.fw.dyn_max=800000
net.inet.ip.intr_queue_maxlen=3000
net.inet.ip.redirect=0
net.inet.ip.stealth=1
net.inet.tcp.blackhole=1
net.inet.tcp.delayed_ack=0
net.inet.tcp.drop_synfin=1
net.inet.tcp.maxtcptw=65535
net.inet.tcp.recvspace=65228
net.inet.tcp.sendspace=65228
net.inet.tcp.syncookies=1
net.inet.tcp.tso=0
net.inet.udp.blackhole=1
net.inet.udp.maxdgram=57344
net.inet.udp.recvspace=65228
net.raw.recvspace=64000
net.raw.sendspace=64000

 

loader.conf

 

autoboot_delay=1
hint.acpi_throttle.0.disabled=1
hint.p4tcc.0.disabled=1
hw.em.rx_process_limit=-1
hw.em.rxd=4096
hw.em.txd=4096
hw.ix.num_queues=3
hw.ix.rx_process_limit=-1
hw.ix.rxd=4096
hw.ix.tx_process_limit=-1
hw.ix.txd=4096
hw.ixgbe.num_queues=3
hw.ixgbe.rx_process_limit=-1
hw.ixgbe.rxd=4096
hw.ixgbe.tx_process_limit=-1
hw.ixgbe.txd=4096
hw.vga.textmode=1
mga_load="YES"
net.graph.maxdata=16384
net.inet.ip.fw.default_to_accept=1
net.inet.tcp.hostcache.cachelimit=0
net.isr.bindthreads=1
net.isr.defaultqlimit=1024
net.isr.maxthreads=128
net.pf.source_nodes_hashsize=81920
net.pf.states_hashsize=327680
pf_load="YES"       			# packet filter
zfs_load="YES"

 

pfctl -si

 

root@nata1:/usr/home/dyr (23132) pfctl -si
No ALTQ support in kernel
ALTQ related functions disabled
Status: Enabled for 0 days 19:12:00   		Debug: Urgent

State Table                          Total 			Rate
 current entries                    64636
 searches         			18537839541   	268197.9/s
 inserts                        125193861 		1811.3/s
 removals           			125134300 		1810.4/s
Counters
 match             			9411244729   	136158.1/s
 bad-offset                 			0            0.0/s
 fragment                 			338            0.0/s
 short                                650            0.0/s
 normalize                              0            0.0/s
 memory                     			0            0.0/s
 bad-timestamp                          0            0.0/s
 congestion                 			0            0.0/s
 ip-option               			1212            0.0/s
 proto-cksum                            0            0.0/s
 state-mismatch                    626712            9.1/s
 state-insert                        1269            0.0/s
 state-limit                            0            0.0/s
 src-limit                              0            0.0/s
 synproxy                   			0            0.0/s
root@nata1:/usr/home/dyr (23133)

 

sysctl net.ix.0|fgrep -v ': 0'

 

dev.ix.0.%desc: Intel(R) PRO/10GbE PCI-Express Network Driver, Version - 2.5.15
dev.ix.0.%driver: ix
dev.ix.0.%location: slot=0 function=0
dev.ix.0.%pnpinfo: vendor=0x8086 device=0x10fb subvendor=0x8086 subdevice=0x0003 class=0x020000
dev.ix.0.%parent: pci2
dev.ix.0.enable_aim: 1
dev.ix.0.link_irq: 5911
dev.ix.0.queue0.interrupt_rate: 500000
dev.ix.0.queue0.irqs: 1718610612
dev.ix.0.queue0.txd_head: 1604
dev.ix.0.queue0.txd_tail: 1614
dev.ix.0.queue0.tx_packets: 3090264050
dev.ix.0.queue0.rxd_head: 3162
dev.ix.0.queue0.rxd_tail: 3161
dev.ix.0.queue0.rx_packets: 3157400666
dev.ix.0.queue0.rx_bytes: 2561912049813
dev.ix.0.queue0.rx_copies: 1382007822
dev.ix.0.queue1.interrupt_rate: 26315
dev.ix.0.queue1.irqs: 1679256836
dev.ix.0.queue1.txd_head: 1491
dev.ix.0.queue1.txd_tail: 1491
dev.ix.0.queue1.tx_packets: 3012775640
dev.ix.0.queue1.rxd_head: 1045
dev.ix.0.queue1.rxd_tail: 1043
dev.ix.0.queue1.rx_packets: 3080709140
dev.ix.0.queue1.rx_bytes: 2498049337717
dev.ix.0.queue1.rx_copies: 1347550640
dev.ix.0.queue2.interrupt_rate: 500000
dev.ix.0.queue2.irqs: 1679031621
dev.ix.0.queue2.txd_head: 231
dev.ix.0.queue2.txd_tail: 231
dev.ix.0.queue2.tx_packets: 3042106788
dev.ix.0.queue2.rxd_head: 473
dev.ix.0.queue2.rxd_tail: 472
dev.ix.0.queue2.rx_packets: 3108700633
dev.ix.0.queue2.rx_bytes: 2526465969896
dev.ix.0.queue2.rx_copies: 1354247978
dev.ix.0.mac_stats.local_faults: 8
dev.ix.0.mac_stats.remote_faults: 1
dev.ix.0.mac_stats.total_octets_rcvd: 7661137735622
dev.ix.0.mac_stats.good_octets_rcvd: 7661134492076
dev.ix.0.mac_stats.total_pkts_rcvd: 9346739559
dev.ix.0.mac_stats.good_pkts_rcvd: 9346723529
dev.ix.0.mac_stats.mcast_pkts_rcvd: 33023
dev.ix.0.mac_stats.bcast_pkts_rcvd: 300
dev.ix.0.mac_stats.rx_frames_64: 1177914004
dev.ix.0.mac_stats.rx_frames_65_127: 2712448594
dev.ix.0.mac_stats.rx_frames_128_255: 285974221
dev.ix.0.mac_stats.rx_frames_256_511: 134374175
dev.ix.0.mac_stats.rx_frames_512_1023: 220888076
dev.ix.0.mac_stats.rx_frames_1024_1522: 4815132083
dev.ix.0.mac_stats.checksum_errs: 139958192
dev.ix.0.mac_stats.good_octets_txd: 7577920974112
dev.ix.0.mac_stats.total_pkts_txd: 9145061047
dev.ix.0.mac_stats.good_pkts_txd: 9145061043
dev.ix.0.mac_stats.bcast_pkts_txd: 144
dev.ix.0.mac_stats.mcast_pkts_txd: 1
dev.ix.0.mac_stats.tx_frames_64: 1176790855
dev.ix.0.mac_stats.tx_frames_65_127: 2570149826
dev.ix.0.mac_stats.tx_frames_128_255: 277634744
dev.ix.0.mac_stats.tx_frames_256_511: 133774126
dev.ix.0.mac_stats.tx_frames_512_1023: 218495272
dev.ix.0.mac_stats.tx_frames_1024_1522: 4768216225

 

netstat -I vlan11 -dhw 1

 

root@nata1:/usr/home/dyr (23134) netstat -I vlan11 -dhw 1
           input 		vlan11   		output
  packets  errs idrops      bytes    packets  errs      bytes colls drops
  	43K 	0 	0        29M        47K 	0        42M 	0
  	44K 	0 	0        31M        49K 	0        42M 	0
  	42K 	0 	0        29M        48K 	0        43M 	0
  	42K 	0 	0        31M        47K 	0        40M 	0
  	42K 	0 	0        31M        46K 	0        40M 	0
  	44K 	0 	0        28M        48K 	0        44M 	0
  	42K 	0 	0        28M        47K 	0        42M 	0
^C

 

top -aSCHIP

 

last pid: 66303;  load averages:  1.25,  1.22,  1.29                                               			up 1+21:53:33  20:56:56
278 processes: 8 running, 242 sleeping, 1 zombie, 27 waiting
CPU 0:  0.0% user,  0.0% nice, 13.4% system, 29.4% interrupt, 57.2% idle
CPU 1:  0.0% user,  0.0% nice,  0.0% system, 33.3% interrupt, 66.7% idle
CPU 2:  0.0% user,  0.0% nice,  0.5% system, 42.8% interrupt, 56.7% idle
CPU 3:  0.0% user,  0.0% nice,  2.0% system,  6.0% interrupt, 92.0% idle
Mem: 5352K Active, 213M Inact, 5423M Wired, 2904K Cache, 2277M Free
ARC: 3565M Total, 1787M MFU, 1457M MRU, 1040K Anon, 60M Header, 261M Other
Swap: 4096M Total, 4096M Free

 PID USERNAME   PRI NICE   SIZE    RES STATE   C   TIME 	CPU COMMAND
  11 root   	155 ki31 	0K    64K RUN 	3  33.9H 100.00% [idle{idle: cpu3}]
  11 root   	155 ki31 	0K    64K CPU1    1  33.4H  75.49% [idle{idle: cpu1}]
  11 root   	155 ki31 	0K    64K CPU0    0  41.4H  73.39% [idle{idle: cpu0}]
  11 root   	155 ki31 	0K    64K CPU2    2  33.7H  69.58% [idle{idle: cpu2}]
  12 root   	-72    - 	0K   464K WAIT    2  16:15  32.28% [intr{swi1: netisr 2}]
  12 root   	-72    - 	0K   464K CPU0    0  14:57  31.05% [intr{swi1: netisr 0}]
  12 root   	-72    - 	0K   464K CPU1    1  16:05  26.56% [intr{swi1: netisr 1}]
  12 root   	-92    - 	0K   464K WAIT    3 695:50   3.56% [intr{irq266: ix0:que }]
  12 root   	-92    - 	0K   464K WAIT    1 710:10   3.37% [intr{irq264: ix0:que }]
  12 root   	-92    - 	0K   464K WAIT    2 691:10   2.98% [intr{irq265: ix0:que }]
  12 root   	-60    - 	0K   464K WAIT    2  28:27   0.10% [intr{swi4: clock}]

 

Профилирование:

 

# pmcstat -S instructions -O /tmp/sample.out &

# sleep 30 && killall pmcstat

# pmcstat -R /tmp/sample.out -g && gprof -l -K INSTR_RETIRED_ANY/kernel |head -n 60 | tail -n 25

 

time is in ticks, not seconds

granularity: each sample hit covers 4 byte(s) for 0.00% of 1585953.00 seconds

 %   cumulative   self              self 	total
time   seconds   seconds    calls  ms/call  ms/call  name
19.6  311393.00 311393.00    42710  7290.87 12981.61  ipfw_chk [9]
 8.6  447664.00 136271.00   116269  1172.03  1172.03  rn_match [17]
 8.5  582786.00 135122.00    20129  6712.80  7888.93  sched_idletd [15]
 5.1  664060.00 81274.00        0  100.00%   		fsk_match [24]
 4.7  737889.00 73829.00    74322   993.37  1045.37  __mtx_lock_sleep [25]
 3.2  788562.00 50673.00    45306  1118.46  1118.46  __rw_rlock [31]
 2.4  827071.00 38509.00    19520  1972.80  1972.80  bzero [35]
 2.2  861608.00 34537.00    29790  1159.35  1159.35  _rw_runlock_cookie [37]
 2.1  895222.00 33614.00    33741   996.24  1003.90  dn_ht_find [38]
 1.4  917849.00 22627.00    21460  1054.38  1344.01  uma_zalloc_arg <cycle 4> [41]
 1.3  938280.00 20431.00    33574   608.54   905.65  uma_zfree_arg <cycle 4> [39]
 1.3  958563.00 20283.00    20283  1000.00  1000.00  cpu_search [53]
 1.3  978659.00 20096.00    82846   242.57  1571.22  ipfw_lookup_table [18]
 1.1  996646.00 17987.00 	7330  2453.89  2453.89  bcopy [56]
 1.1 1013947.00 17301.00 	7731  2237.87  2237.87  bcmp [58]
 1.0 1030179.00 16232.00 	8505  1908.52  9685.89  ixgbe_rxeof [23]
 0.9 1044990.00 14811.00    51153   289.54 10881.66  ip_output [8]
 0.9 1059296.00 14306.00    24481   584.37   590.02  dn_ht_scan_bucket <cycle 3> [63]
 0.8 1072312.00 13016.00 	8671  1501.10  2631.55  ixgbe_xmit [49]
  0.8 1085287.00 12975.00    82846   156.62  1328.65  rn_lookup [19]

 

hotkernel -m

 

Sampling... Hit Ctrl-C to end.
^C
MODULE                                                  COUNT   PCNT
zfs.ko                                                      4   0.0%
ng_ipfw.ko                                     			86   0.1%
netgraph.ko                                   			188   0.2%
ng_netflow.ko                                 			626   0.6%
pf.ko                                                    2789   2.8%
kernel                                                  96396  96.3%

 

hotkernel

 

^C
FUNCTION                                                COUNT   PCNT

...

pf.ko`pf_match_translation                                452   0.8%
kernel`__rw_rlock                             			489   0.9%
kernel`bcmp                                   			547   1.0%
kernel`spinlock_exit                                      731   1.3%
kernel`dn_ht_find                             			861   1.5%
kernel`__mtx_lock_sleep                       			921   1.6%
kernel`ipfw_chk                                          1322   2.4%
kernel`rn_match                                          1727   3.1%
kernel`fsk_match                             			2074   3.7%
kernel`cpu_idle                             			13256  23.7%
kernel`sched_idletd                         			25931  46.3%

 

#

dtrace -n 'sched:::on-cpu { @[execname] = count(); } profile:::tick-20s { exit(0); }'

dtrace: description 'sched:::on-cpu ' matched 2 probes
CPU 	ID                    FUNCTION:NAME
 3  32261                        :tick-20s

 accounting                                                        2
 enc_daemon0                                           			5
 bufdaemon                                                        20
 softdepflush                                         			21
 pagedaemon                                           			25
 vnlru                                                            27
 dtrace                                               			87
 syncer                                                          159
 zfskern                                             			196
 usb                                                 			207
 rand_harvestq                                       			227
 ftp-proxy                                           			342
 cam                                                 			352
 atop                                                            448
 snmpd                                               			696
 pf purge                                                        847
 ng_queue                                           			1691
 kernel                                                        39414
 idle                                                        1204119
 intr                                                        1681222

 

Куда смотреть? Что ещё профилировать? Или я действительно упираюсь в предел производительности железа на пресловутых 150 Мбайт/сек NAT-трафика?

Edited by Dyr

Share this post


Link to post
Share on other sites

CPU E5-2430 0 @ 2.20GHz Freebsd 9.2 PF_nat и только , карты Intel 82599 X520-da2 , помер на 1 гбит, прерывания в 100 процентов, вообще попа полная была. Срулил на debian в него приходит 2 алпинка по 10 гбит, уходит на 3420-28tc по 10 гбит. Роль нат сервера. Шейпер , netflow, PPPoE на отдельных машинах (Freebsd). Попробуйте для начала, вынести nat и netflow на отдельную машину с Debian увидите разницу

 

 

P.S. шас натит 3.7 гбит входи и 1 гбит на выход, не > 40- прцентов по прерываиям

Edited by roysbike

Share this post


Link to post
Share on other sites

roysbike, спасибо за совет, в принципе, к этому и склоняюсь. Но как бы это сказать...обидно уйти на другую ось, не понимая, в чём затык этой.

 

Кстати, шейпинг и нетфлоу у меня очень мало нагружают сервер в обычных (не 64-байтный шторм hping'ом на rand destination с 500 kpps ;) ) условиях. Это видно и из профайлинга, и из опыта отключения ipfw вовсе: нагрузка на процессор возрастает пропорционально увеличению трафика за счёт отключения шейпера и только.

 

 

Share this post


Link to post
Share on other sites

Не видно netstat -m

Почитайте статьи Евгения Гроссбейна (dadv) по тюнингу.

Я уже вижу, что у вас многие вещи выставлены чуть больше дефолтных.

Share this post


Link to post
Share on other sites

P.S. шас натит 3.7 гбит входи и 1 гбит на выход, не > 40- прцентов по прерываиям

PPS еще приведите.

 

У меня клиент поснимал маршрутизатор на дебиан после проблем ~ 2Гбит. Сейчас у него (~4Гбит) принимает траффик D-Link DES-7210, отдают 4 гейта на Дебиане.

Share this post


Link to post
Share on other sites

Не видно netstat -m

netstat -m

 

 

29368/9512/38880 mbufs in use (current/cache/total)
29340/3286/32626/507000 mbuf clusters in use (current/cache/total/max)
29340/3285 mbuf+clusters out of packet secondary zone in use (current/cache)
0/58/58/253499 4k (page size) jumbo clusters in use (current/cache/total/max)
0/0/0/75111 9k jumbo clusters in use (current/cache/total/max)
0/0/0/42249 16k jumbo clusters in use (current/cache/total/max)
66193K/9182K/75375K bytes allocated to network (current/cache/total)
0/0/0 requests for mbufs denied (mbufs/clusters/mbuf+clusters)
0/0/0 requests for mbufs delayed (mbufs/clusters/mbuf+clusters)
0/0/0 requests for jumbo clusters delayed (4k/9k/16k)
0/0/0 requests for jumbo clusters denied (4k/9k/16k)
0 requests for sfbufs denied
0 requests for sfbufs delayed
1 requests for I/O initiated by sendfile

 

vmstat -m

 

 
    	Type InUse MemUse HighUse Requests  Size(s)
  	ip6ndp    17 	2K   	-   	24  64,128
  	kbdmux 	7    18K   	-        7  16,512,1024,2048
  	module   243    31K   	-      243  128
	mtx_pool 	3    18K   	-        3  2048
         LED    24 	2K   	-   	24  16,128
         osd 	5 	1K   	-      115  16,32,64
	pmchooks 	1 	1K   	-        1  128
     CAM DEV    10    20K   	-   	18  2048
    	pgrp    25 	4K   	- 	8764  128
     session    22 	3K   	- 	7629  128
    	proc 	2    32K   	-        2
     subproc   161   263K   	-   775402  512,4096
    	cred    96    15K   	-  5833208  64,256
  	plimit    17 	5K   	-    84581  256
     uidinfo 	5 	5K   	- 	1987  128,4096
	acpitask 	1 	8K   	-        1
   raid_data 	0 	0K   	-      180  32,128,256
     acpisem    25 	4K   	-   	25  128
     CAM CCB 	0 	0K   	-  2524731  2048
     acpidev    38 	3K   	-   	38  64
	CAM path    13 	1K   	-   	69  32
  	sysctl 	0 	0K   	-  2078013  16,32,64
   sysctloid  5135   255K   	- 	5418  16,32,64,128
   sysctltmp 	0 	0K   	- 	6597  16,32,64,128,2048
     tidhash 	1    32K   	-        1
     callout 	5  2184K   	-        5
    	umtx   720    90K   	-      720  128
	p1003.1b 	1 	1K   	-        1  16
    	SWAP 	4   553K   	-        4  64
         bus   675    61K   	- 	3991  16,32,64,128,256,1024
  	bus-sc    66   202K   	- 	1323  16,32,64,128,256,512,1024,2048,4096
     entropy  1026    65K   	- 	6813  32,64,4096
     devstat    14    29K   	-   	14  32,4096
eventhandler   113    10K   	-      113  64,128
    	kobj   127   508K   	-      409  4096
  CAM periph 	8 	2K   	-   	21  16,32,64,128,256
     Per-cpu 	1 	1K   	-        1  32
    	UART 	9 	7K   	-        9  16,1024
   CAM queue    17 	6K   	-   	44  16,32,512
    	rman   231    27K   	-      617  32,128
    	sbuf 	1 	1K   	- 	2106  16,32,64,128,256,512,1024,2048,4096
CAM dev queue 	7 	1K   	-        7  64
       stack 	0 	0K   	-        6  256
   taskqueue   115    17K   	-      159  16,32,64,128,256
  	Unitno    26 	2K   	-  1615944  32,64
    	vmem 	2   640K   	-        8
	ioctlops 	0 	0K   	- 10149782  16,32,64,128,256,512,1024,2048,4096
  	select    74    10K   	-   	74  128
         iov 	0 	0K   	-   784793  16,64,128,256,512
         msg 	4    30K   	-        4  2048,4096
         sem 	4   106K   	-        4  2048,4096
         shm 	1    20K   	-        1
         tty    21    21K   	-   	33  1024,2048
         pts 	1 	1K   	-        7  256
	mbuf_tag   543   136K   	- 17757659536  32,64,256
       shmfd 	1 	8K   	-        1
  	soname 	3 	1K   	-  1563540  16,32,128
         pcb    27  1029K   	-   117077  16,32,64,1024,2048
md_nvidia_data 	0 	0K   	-   	30  512
         acl 	0 	0K   	-      563  4096
	vfscache 	1  2048K   	-        1
	vfs_hash 	1  1024K   	-        1
  	vnodes 	1 	1K   	-        1  256
       mount   116 	4K   	-      311  16,32,64,128,256
 vnodemarker 	0 	0K   	-   118983  512
         BPF 	9 	2K   	-   	23  16,128,512,4096
 md_sii_data 	0 	0K   	-   	30  512
       ifnet    10    19K   	-   	10  128,2048
  	ifaddr   107    29K   	-      119  32,64,128,256,512,2048,4096
 ether_multi   186    11K   	-      230  16,32,64
       clone 	5 	1K   	-        5  128
  	arpcom 	7 	1K   	-        7  16
         gif 	1 	1K   	-        1  256
     lltable    37    14K   	-      124  256,512
    	vlan    20 	2K   	-   	65  64,128
	SCSI ENC    25   100K   	-    25200  16,64,256,2048
     CAM SIM 	7 	2K   	-        7  256
         USB    37    51K   	-   	43  16,32,128,256,512,1024,2048,4096
  	USBdev    31 	8K   	-   	31  32,64,128,256,512,4096
	routetbl 11863  4442K   	-   196628  32,64,128,256,512
    	igmp 	9 	3K   	-        9  256
	in_multi 	6 	2K   	-        6  256
	acpiintr 	1 	1K   	-        1  64
	pci_link    16 	2K   	-   	16  64,128
   hostcache 	1    28K   	-        1
	syncache 	1    64K   	-        1
   in6_multi    91    12K   	-   	91  32,256
         mld 	9 	2K   	-        9  128
  	DEVFS3   159    40K   	-      210  256
	dummynet 17931  4488K   	-    17954  256,512,1024,2048,4096
	dummynet 36523 13780K   	- 74742384  16,256,512
  	DEVFS1   133    67K   	-      165  512
 IpFw/IpAcct    37    40K   	-   	68  16,32,64,128,256,1024
	ipfw_tbl 12858  3215K   	-    12931  256
audit_evclass   187 	6K   	-      228  32
   vm_pgdata 	3  1025K   	-        3  128
     UMAHash    47   849K   	-      162  512,1024,2048,4096
  	isadev 	7 	1K   	-        7  128
       DEVFS    18 	1K   	-   	25  16,32,128
  	DEVFSP 	1 	1K   	-      129  64
    	cdev 	8 	2K   	-        8  256
 fpukern_ctx 	4 	4K   	-        4  1024
     memdesc 	1 	4K   	-        1  4096
   pfs_nodes    21 	6K   	-   	21  256
	filedesc   112   179K   	-   776573  16,32,2048,4096
	atkbddev 	1 	1K   	-        1  64
       sigio 	2 	1K   	-        2  64
	filecaps 	0 	0K   	-   	12  64
     kdtrace   387    87K   	-   775905  64,256
    	kenv   104    12K   	-      116  16,32,64,128
  	kqueue 	5 	5K   	-      599  64,256,512,2048
   proc-args    28 	2K   	-   811531  16,32,64,128,256
  	apmdev 	1 	1K   	-        1  128
  madt_table 	0 	0K   	-        1  4096
       hhook 	2 	1K   	-        2  256
     ithread   133    22K   	-      133  32,128,256
    	GEOM    92    17K   	- 	1267  16,32,64,128,256,512,1024,2048
  	KTRACE   100    13K   	-      100  128
     io_apic 	1 	2K   	-        1  2048
  	acpica  3352   337K   	-    65843  16,32,64,128,256,512,1024,2048
         MCA    14 	2K   	-   	14  32,128
  	linker   585  1023K   	-      922  16,32,64,128,256,512,1024,2048,4096
     CAM XPT    33 	3K   	-      185  16,32,64,128,256,512,1024,2048
         msi    21 	3K   	-   	21  128
	nexusdev 	5 	1K   	-        5  16
       lockf    17 	2K   	-   552747  64,128
  loginclass 	3 	1K   	- 	6478  64
  	devbuf 17750 61975K   	-    18032  16,32,64,128,256,512,1024,2048,4096
    	temp    55    20K   	-  7380156  16,32,64,128,256,512,1024,2048,4096
     solaris 526480 90749K   	- 56470727  16,32,64,128,256,512,1024,2048,4096
         rpc 	1 	1K   	-        1  512
     pf_temp 	0 	0K   	- 	1961  128
     pf_hash 	3  2880K   	-        3
	pf_ifnet    14 	6K   	-   485752  256,2048
     pf_osfp  1110   114K   	- 	1110  64,128
  	pf_tag 	2 	1K   	-        2  128
     pf_rule  2971  1680K   	-  1074443  128,1024
	pf_table 	6    12K   	- 	3953  2048
  kstat_data 	6 	1K   	-        6  64
netgraph_node 	5 	1K   	-   	17  128,256
	netgraph 	5  2053K   	-        5  16,128
netgraph_msg 	0 	0K   	-   	19  64,128,256,512,1024
netgraph_hook 	6 	1K   	-        6  128
netgraph_parse 	0 	0K   	-        2  16
netgraph_path 	0 	0K   	-   	15  16
netgraph_sock 	0 	0K   	-   	24  128
netflow_hash 	2  6144K   	-        2
netflow_general 	1 	1K   	-        1  256
netgraph_ksock 	1 	1K   	-        1  128
    	ipmi 	0 	0K   	-      161  128,2048
  	crypto 	1 	1K   	-        1  512
       xform 	6 	1K   	-    86642  16,32,64,128,256,512,1024,2048,4096
  aesni_data 	4 	4K   	-        4  1024
         pmc   127   685K   	-      194  16,32,128,256,512,1024,2048,4096
  	cyclic    16 	2K   	-   	60  16,32,64,128
         fbt 30730  4098K   	-    30730  128
         SDT    20 	1K   	-   	20  16,64

 

vmstat -z| grep -v ' 0, 0

ITEM               	SIZE  LIMIT 	USED 	FREE      REQ FAIL SLEEP

16 Bucket:              128,      0, 	175, 	693,  124722,  11,   0
32 Bucket:              256,      0,    6208,    3227, 3890337,  60,   0
64 Bucket:              512,      0,    2123,    1573, 1065010, 222,   0
vmem btag:           	56,      0,   68359, 	156,   68423, 965,   0

Почитайте статьи Евгения Гроссбейна (dadv) по тюнингу.

Я уже вижу, что у вас многие вещи выставлены чуть больше дефолтных.

 

 

Читал. И многие значения выставлены сообразно моему пониманию в том числе и его советов.

 

 

Edited by Dyr

Share this post


Link to post
Share on other sites

P.S. шас натит 3.7 гбит входи и 1 гбит на выход, не > 40- прцентов по прерываиям

PPS еще приведите.

 

У меня клиент поснимал маршрутизатор на дебиан после проблем ~ 2Гбит. Сейчас у него (~4Гбит) принимает траффик D-Link DES-7210, отдают 4 гейта на Дебиане.

450K PPS

Edited by roysbike

Share this post


Link to post
Share on other sites

net.inet.tcp.delayed_ack=0

net.inet.tcp.drop_synfin=1

net.inet.tcp.maxtcptw=65535

net.inet.tcp.recvspace=65228

net.inet.tcp.sendspace=65228

net.inet.tcp.syncookies=1

net.inet.tcp.tso=0

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

 

mga_load="YES"
pf_load="YES" # packet filter

zfs_load="YES"

Оно надо?

пф 100% сам уже давно умеет подгружаться, из инит скрипта.

 

19.6 311393.00 311393.00 42710 7290.87 12981.61 ipfw_chk [9]

Намёк что правила IPFW долго чекаются.

 

 

Ещё, бывает что поверд и экологи из БИОС портят картину.

И для интересу попробуйте hz=100, на слабых арм/мипс оно весьма даёт весьма заметный рост.

Share this post


Link to post
Share on other sites

ipfw (шейперы, ng_netflow) включен, трафик в одну сторону ~500 Мбит/сек, 108 000 state в pf,

 

# (hotkernel &); sleep 60; killall dtrace

 


...

pf.ko`pf_test_rule                                       2084   0.9%
kernel`_rw_runlock_cookie                                2107   0.9%
kernel`__rw_rlock                                        3263   1.4%
pf.ko`pf_match_translation                               3844   1.6%
kernel`bcmp                                              4634   1.9%
kernel`dn_ht_find                                        4787   2.0%
kernel`ipfw_chk                                          7942   3.3%
kernel`__mtx_lock_sleep                                  9619   4.0%
kernel`rn_match                                         10948   4.6%
kernel`fsk_match                                        13211   5.5%
kernel`sched_idletd                                     26259  11.0%
kernel`acpi_cpu_c1                                      48633  20.3%
kernel`cpu_idle                                         61718  25.7%

 

systat -v 1

    2 users    Load  1,26  1,59  1,43                   9 апр 12:53

Mem:KB    REAL            VIRTUAL                       VN PAGER   SWAP PAGER
       Tot   Share      Tot    Share    Free           in   out     in   out
Act   59696    7732   804608     8932 2224944  count
All 4637192   10404   855868    43872          pages
Proc:                                                            Interrupts
 r   p   d   s   w   Csw  Trp  Sys  Int  Sof  Flt        ioflt 37048 total
            30       69k   16  304  32k   72    2        cow         atkbd0 1
                                                         zfod        ehci0 16
3,9%Sys  37,6%Intr  0,0%User  0,0%Nice 58,5%Idle         ozfod       ehci1 23
|    |    |    |    |    |    |    |    |    |           %ozfod  1014 cpu0:timer
==+++++++++++++++++++                                     daefr 11248 ix0:que 0
                                          dtbuf          prcfr 10441 ix0:que 1
Namei     Name-cache   Dir-cache    214017 desvn          totfr 10863 ix0:que 2
  Calls    hits   %    hits   %     68609 numvn          react     1 ix0:link
      3       3 100                 53504 frevn          pdwak    97 em0 272
                                                       4 pdpgs       ahci0 276
Disks  ada0  ada1 pass0 pass1 pass2                       intrn  1128 cpu3:timer
KB/t   0,00  0,00  0,00  0,00  0,00               5652168 wire   1128 cpu1:timer
tps       0     0     0     0     0                 10620 act    1128 cpu2:timer
MB/s   0,00  0,00  0,00  0,00  0,00                223084 inact
%busy     0     0     0     0     0                  2064 cache
                                                 2222880 free
                                                         buf

 

top -aSCHIP

last pid: 91177;  load averages:  1.39,  1.57,  1.43                                                           up 2+13:51:03  12:54:26
283 processes: 5 running, 248 sleeping, 1 zombie, 29 waiting
CPU 0:  0.0% user,  0.0% nice, 15.0% system,  0.0% interrupt, 85.0% idle
CPU 1:  0.0% user,  0.0% nice,  1.7% system, 43.3% interrupt, 55.0% idle
CPU 2:  0.0% user,  0.0% nice,  0.0% system, 41.7% interrupt, 58.3% idle
CPU 3:  0.0% user,  0.0% nice,  1.7% system, 55.0% interrupt, 43.3% idle
Mem: 9972K Active, 218M Inact, 5520M Wired, 2064K Cache, 2172M Free
ARC: 4176M Total, 1934M MFU, 1896M MRU, 1040K Anon, 75M Header, 270M Other
Swap: 4096M Total, 4096M Free

 PID USERNAME   PRI NICE   SIZE    RES STATE   C   TIME     CPU COMMAND
  11 root       155 ki31     0K    64K CPU0    0  55.7H 100.00% [idle{idle: cpu0}]
  11 root       155 ki31     0K    64K RUN     1  45.1H  60.16% [idle{idle: cpu1}]
  11 root       155 ki31     0K    64K CPU2    2  45.5H  54.79% [idle{idle: cpu2}]
  11 root       155 ki31     0K    64K CPU3    3  45.9H  53.08% [idle{idle: cpu3}]
  12 root       -92    -     0K   464K WAIT    3 927:01  51.27% [intr{irq266: ix0:que }]
  12 root       -92    -     0K   464K WAIT    2 925:39  50.98% [intr{irq265: ix0:que }]
  12 root       -92    -     0K   464K WAIT    1 946:45  43.16% [intr{irq264: ix0:que }]
  12 root       -60    -     0K   464K WAIT    2  37:49   0.39% [intr{swi4: clock}]

 

 

 

 

 

 

 

ipfw (шейперы, ng_netflow) отключен (sysctl net.inet.ip.fw.enable=0), трафик в одну сторону ~600 Мбит/сек, 106 000 states в pf

 

 

 

 

# (hotkernel &); sleep 60; killall dtrace

 


...kernel`spinlock_exit                                     1836   0.8%
pf.ko`pf_test_rule                                       1916   0.8%
kernel`ixgbe_rxeof                                       1931   0.8%
kernel`rn_match                                          1941   0.8%
kernel`dn_ht_scan_bucket                                 2030   0.8%
kernel`__rw_rlock                                        2275   0.9%
pf.ko`pf_match_translation                               3819   1.6%
kernel`bcmp                                              5118   2.1%
kernel`sched_idletd                                     53884  22.1%
kernel`acpi_cpu_c1                                      57648  23.6%
kernel`cpu_idle                                         88482  36.3%

 

systat -v 1

        2 users    Load  1,29  1,41  1,39                   9 апр 12:58

Mem:KB    REAL            VIRTUAL                       VN PAGER   SWAP PAGER
       Tot   Share      Tot    Share    Free           in   out     in   out
Act   76332    9368   904056    10636 2146468  count
All 4720444   12040   955332    45576          pages
Proc:                                                            Interrupts
 r   p   d   s   w   Csw  Trp  Sys  Int  Sof  Flt        ioflt 45608 total
            33       77k   14  153  37k  163    2        cow         atkbd0 1
                                                       2 zfod      6 ehci0 16
1,4%Sys  11,7%Intr  0,0%User  0,0%Nice 86,9%Idle         ozfod    10 ehci1 23
|    |    |    |    |    |    |    |    |    |           %ozfod  1941 cpu0:timer
=++++++                                                   daefr 12638 ix0:que 0
                                          dtbuf          prcfr 12201 ix0:que 1
Namei     Name-cache   Dir-cache    214017 desvn          totfr 12449 ix0:que 2
  Calls    hits   %    hits   %     68609 numvn          react       ix0:link
      3       3 100                 53502 frevn          pdwak     1 em0 272
                                                       9 pdpgs       ahci0 276
Disks  ada0  ada1 pass0 pass1 pass2                       intrn  2119 cpu3:timer
KB/t   0,00  0,00  0,00  0,00  0,00               5719224 wire   2120 cpu1:timer
tps       0     0     0     0     0                 21816 act    2123 cpu2:timer
MB/s   0,00  0,00  0,00  0,00  0,00                223308 inact
%busy     0     0     0     0     0                  2064 cache

 

top -aSCHIP

last pid: 91271;  load averages:  0.76,  1.27,  1.34                                            up 2+13:55:19  12:58:42
283 processes: 5 running, 248 sleeping, 1 zombie, 29 waiting
CPU 0:  0.0% user,  0.0% nice,  0.0% system,  0.0% interrupt,  100% idle
CPU 1:  0.0% user,  0.0% nice,  1.6% system, 19.7% interrupt, 78.7% idle
CPU 2:  0.0% user,  0.0% nice,  0.0% system, 19.7% interrupt, 80.3% idle
CPU 3:  0.0% user,  0.0% nice,  0.0% system, 27.9% interrupt, 72.1% idle
Mem: 9944K Active, 218M Inact, 5520M Wired, 2064K Cache, 2171M Free
ARC: 4176M Total, 1934M MFU, 1896M MRU, 1040K Anon, 75M Header, 270M Other
Swap: 4096M Total, 4096M Free

 PID USERNAME   PRI NICE   SIZE    RES STATE   C   TIME     CPU COMMAND
  11 root       155 ki31     0K    64K CPU0    0  55.7H 100.00% [idle{idle: cpu0}]
  11 root       155 ki31     0K    64K CPU1    1  45.2H  83.15% [idle{idle: cpu1}]
  11 root       155 ki31     0K    64K CPU2    2  45.5H  82.76% [idle{idle: cpu2}]
  11 root       155 ki31     0K    64K RUN     3  45.9H  81.69% [idle{idle: cpu3}]
  12 root       -92    -     0K   464K WAIT    1 948:02  23.49% [intr{irq264: ix0:que }]
  12 root       -92    -     0K   464K WAIT    2 927:00  22.56% [intr{irq265: ix0:que }]
  12 root       -92    -     0K   464K WAIT    3 928:23  22.36% [intr{irq266: ix0:que }]
  12 root       -60    -     0K   464K WAIT    1  37:51   0.20% [intr{swi4: clock}]

 

 

 

 

Share this post


Link to post
Share on other sites

Трафик подобрался к 1000 Мбит/сек и 120 kpps в одну сторону и становится всё более грустно. pf state ~ 140 000

 

hotkernel

 

pf.ko`pf_find_state                                      5434   1.0%
kernel`bcopy                                             6716   1.3%
pf.ko`pf_test_rule                                       7894   1.5%
kernel`_rw_runlock_cookie                                8625   1.6%
kernel`__rw_rlock                                       13185   2.5%
pf.ko`pf_match_translation                              14658   2.8%
kernel`dn_ht_find                                       16345   3.1%
kernel`bcmp                                             20940   4.0%
kernel`ipfw_chk                                         27812   5.3%
kernel`rn_match                                         37590   7.1%
kernel`fsk_match                                        43965   8.4%
kernel`__mtx_lock_sleep                                 50740   9.6%
kernel`cpu_idle                                         66153  12.6%
kernel`acpi_cpu_c1                                      80190  15.2%

 

hotkernel -m

 

Sampling... Hit Ctrl-C to end.
^C
MODULE                                                  COUNT   PCNT
ng_ksocket.ko                                               1   0.0%
dtrace.ko                                                  23   0.0%
zfs.ko                                                    129   0.0%
ng_ipfw.ko                                               2647   0.2%
netgraph.ko                                              3596   0.3%
ng_netflow.ko                                           12838   1.1%
pf.ko                                                   96765   8.2%
kernel                                                1066767  90.2%

 

top -aSCHIP

 

last pid: 93691;  load averages:  3.43,  3.18,  2.88                                                           up 2+19:11:08  18:14:31
287 processes: 6 running, 252 sleeping, 1 zombie, 28 waiting
CPU 0:  0.0% user,  0.0% nice, 26.3% system,  1.2% interrupt, 72.5% idle
CPU 1:  0.0% user,  0.0% nice, 10.2% system, 74.1% interrupt, 15.7% idle
CPU 2:  0.0% user,  0.0% nice,  0.0% system, 84.7% interrupt, 15.3% idle
CPU 3:  0.0% user,  0.0% nice,  0.8% system, 80.4% interrupt, 18.8% idle
Mem: 22M Active, 29M Inact, 7296M Wired, 724K Cache, 573M Free
ARC: 6066M Total, 1647M MFU, 3984M MRU, 1168K Anon, 82M Header, 352M Other
Swap: 4096M Total, 9868K Used, 4086M Free

 PID USERNAME   PRI NICE   SIZE    RES STATE   C   TIME     CPU COMMAND
  11 root       155 ki31     0K    64K RUN     0  59.9H  98.29% [idle{idle: cpu0}]
  12 root       -92    -     0K   464K WAIT    2  18.6H  87.50% [intr{irq265: ix0:que }]
  12 root       -92    -     0K   464K CPU3    3  18.6H  85.06% [intr{irq266: ix0:que }]
  12 root       -92    -     0K   464K WAIT    1  18.9H  81.79% [intr{irq264: ix0:que }]
  11 root       155 ki31     0K    64K RUN     3  48.0H  18.46% [idle{idle: cpu3}]
  11 root       155 ki31     0K    64K CPU1    1  47.3H  17.19% [idle{idle: cpu1}]
  11 root       155 ki31     0K    64K CPU2    2  47.6H  12.16% [idle{idle: cpu2}]
   0 root       -92    0     0K  2864K -       0   2:07   2.39% [kernel{ix0 que}]
  12 root       -60    -     0K   464K WAIT    2  41:30   0.78% [intr{swi4: clock}]
2296 proxy       20    0 12308K   972K kqread  0   1:34   0.10% /usr/sbin/ftp-proxy -m 500 -D 1

 

systat -v 1

 

    2 users    Load  3,07  3,13  2,88                   9 п╟п©я─ 18:15

Mem:KB    REAL            VIRTUAL                       VN PAGER   SWAP PAGER
       Tot   Share      Tot    Share    Free           in   out     in   out
Act   63868    6176   922876     9040  585912  count
All 6097688    8208   983028    44140          pages
Proc:                                                            Interrupts
 r   p   d   s   w   Csw  Trp  Sys  Int  Sof  Flt        ioflt 15862 total
            29   5   28k   76 1149  11k  170             cow         atkbd0 1
                                                         zfod        ehci0 16
6,6%Sys  64,7%Intr  0,0%User  0,0%Nice 28,7%Idle         ozfod       ehci1 23
|    |    |    |    |    |    |    |    |    |           %ozfod  1024 cpu0:timer
===+++++++++++++++++++++++++++++++++                      daefr  3978 ix0:que 0
                                          dtbuf          prcfr  2500 ix0:que 1
Namei     Name-cache   Dir-cache    214017 desvn          totfr  4959 ix0:que 2
  Calls    hits   %    hits   %     60421 numvn          react     1 ix0:link
      3       3 100                 53502 frevn          pdwak   113 em0 272
                                                       9 pdpgs       ahci0 276
Disks  ada0  ada1 pass0 pass1 pass2                       intrn  1108 cpu3:timer
KB/t   0,00  0,00  0,00  0,00  0,00               7471380 wire   1092 cpu1:timer
tps       0     0     0     0     0                 23712 act    1087 cpu2:timer
MB/s   0,00  0,00  0,00  0,00  0,00                 29772 inact
%busy     0     0     0     0     0                   724 cache
                                                  585188 free
                                                         buf

 

procsystime (переведённый в проценты)

 

__sysctl                                               0.1%
write                                                  0.1%
execve                                                 0.4%
close                                                  3.8%
read                                                   5.2%
connect                                                5.4%
sigsuspend                                             9.8%
kevent                                                10.0%
wait4                                                 10.2%
_umtx_op                                              11.6%
select                                                43.3%

 

Отключил ipfw. Трафик увеличился до 1200 Мбит/сек и 130 kpps, но нагрузка заметно снизилась, в том числе и по, почему-то, прерываниям:

 


last pid: 12026;  load averages:  1.28,  2.07,  2.52                                                           up 2+19:23:24  18:26:47
286 processes: 5 running, 251 sleeping, 1 zombie, 29 waiting
CPU 0:  0.0% user,  0.0% nice,  4.2% system,  0.4% interrupt, 95.4% idle
CPU 1:  0.0% user,  0.0% nice,  0.0% system, 25.9% interrupt, 74.1% idle
CPU 2:  0.0% user,  0.0% nice,  1.5% system, 24.7% interrupt, 73.7% idle
CPU 3:  0.0% user,  0.0% nice,  0.0% system, 31.3% interrupt, 68.7% idle
Mem: 11M Active, 29M Inact, 7234M Wired, 724K Cache, 645M Free
ARC: 6069M Total, 1648M MFU, 3986M MRU, 1168K Anon, 82M Header, 352M Other
Swap: 4096M Total, 9868K Used, 4086M Free

 PID USERNAME   PRI NICE   SIZE    RES STATE   C   TIME     CPU COMMAND
  11 root       155 ki31     0K    64K RUN     0  60.1H 100.00% [idle{idle: cpu0}]
  11 root       155 ki31     0K    64K CPU3    3  48.0H  71.19% [idle{idle: cpu3}]
  11 root       155 ki31     0K    64K CPU1    1  47.4H  69.38% [idle{idle: cpu1}]
  11 root       155 ki31     0K    64K CPU2    2  47.6H  63.09% [idle{idle: cpu2}]
  12 root       -92    -     0K   464K WAIT    2  18.7H  37.26% [intr{irq265: ix0:que }]
  12 root       -92    -     0K   464K WAIT    1  19.1H  34.77% [intr{irq264: ix0:que }]
  12 root       -92    -     0K   464K WAIT    3  18.8H  33.98% [intr{irq266: ix0:que }]
  12 root       -60    -     0K   464K WAIT    3  41:37   0.20% [intr{swi4: clock}]

 

hotkernel

 

[b]
[/b]

kernel`_rw_runlock_cookie                                 940   0.9%
pf.ko`pf_test                                            1005   0.9%
pf.ko`pf_find_state                                      1018   0.9%
kernel`ixgbe_rxeof                                       1253   1.2%
kernel`rn_match                                          1443   1.3%
kernel`__rw_rlock                                        1724   1.6%
pf.ko`pf_test_rule                                       1741   1.6%
pf.ko`pf_match_translation                               3130   2.9%
kernel`bcmp                                              4555   4.2%
kernel`sched_idletd                                     15105  14.0%
kernel`acpi_cpu_c1                                      25146  23.4%
kernel`cpu_idle                                         36280  33.7%


 

systat -v 1

 

    2 users    Load  1,31  1,79  2,34                   9 п╟п©я─ 19:28

Mem:KB    REAL            VIRTUAL                       VN PAGER   SWAP PAGER
       Tot   Share      Tot    Share    Free           in   out     in   out
Act   45292    6076   829596     8932  662252  count
All 6014920    8108   881160    44032          pages
Proc:                                                            Interrupts
 r   p   d   s   w   Csw  Trp  Sys  Int  Sof  Flt        ioflt 36847 total
            26   5   67k  213 1377  32k   62  111     61 cow         atkbd0 1
                                                      47 zfod        ehci0 16
1,2%Sys  24,4%Intr  0,0%User  0,0%Nice 74,4%Idle         ozfod       ehci1 23
|    |    |    |    |    |    |    |    |    |           %ozfod  1001 cpu0:timer
=++++++++++++                                             daefr 11084 ix0:que 0
                                          dtbuf      387 prcfr 10569 ix0:que 1
Namei     Name-cache   Dir-cache    214017 desvn      568 totfr 10804 ix0:que 2
  Calls    hits   %    hits   %     60423 numvn          react     1 ix0:link
     93      93 100                 53500 frevn          pdwak     2 em0 272
                                                       4 pdpgs       ahci0 276
Disks  ada0  ada1 pass0 pass1 pass2                       intrn  1128 cpu3:timer
KB/t   0,00  0,00  0,00  0,00  0,00               7407512 wire   1129 cpu1:timer
tps       0     0     0     0     0                 11076 act    1129 cpu2:timer
MB/s   0,00  0,00  0,00  0,00  0,00                 29932 inact
%busy     0     0     0     0     0                   724 cache
                                                  661528 free
                                                         buf

 

Коллеги, а профайлингом что, больше никто не занимался? По всему форуму сообщения, посвящённых профайлингу на FreeBSD, можно пересчитать по пальцам, а уж посвящённых dtrace, так и вообще по одной руке. Чувствую я потенциальную силу большую в этом, но нет никого, кто просветить бы мог.

 

 

Share this post


Link to post
Share on other sites

Продолжу изыскания. ;)

 

Результат "горячих" вызовов с включенным ipfw:

 

dtrace -n 'profile-1001hz / arg0 != 0 / { @ks[stack()]=count() }'

 

              kernel`dn_ht_find+0xa1
             kernel`ipfw_check_packet+0x258
             kernel`pfil_run_hooks+0x83
             kernel`ip_fastforward+0x43e
             kernel`ether_demux+0x113
             kernel`ether_nh_input+0x34a
             kernel`netisr_dispatch_src+0x5e
             kernel`ether_demux+0x95
             kernel`ether_nh_input+0x34a
             kernel`netisr_dispatch_src+0x5e
             kernel`ixgbe_rxeof+0x4f8
             kernel`ixgbe_msix_que+0xc0
             kernel`intr_event_execute_handlers+0xab
             kernel`ithread_loop+0x96
             kernel`fork_exit+0x9a
             kernel`0xffffffff8062f4be
           26895

             kernel`rn_match+0x5a
             kernel`ipfw_lookup_table+0x48
             kernel`ipfw_chk+0x2ae3
             kernel`ipfw_check_packet+0xff
             kernel`pfil_run_hooks+0x83
             kernel`ip_fastforward+0x352
             kernel`ether_demux+0x113
             kernel`ether_nh_input+0x34a
             kernel`netisr_dispatch_src+0x5e
             kernel`ether_demux+0x95
             kernel`ether_nh_input+0x34a
             kernel`netisr_dispatch_src+0x5e
             kernel`ixgbe_rxeof+0x4f8
             kernel`ixgbe_msix_que+0xc0
             kernel`intr_event_execute_handlers+0xab
             kernel`ithread_loop+0x96
             kernel`fork_exit+0x9a
             kernel`0xffffffff8062f4be
           28748

             kernel`__mtx_lock_sleep+0x212
             kernel`ipfw_check_packet+0x258
             kernel`pfil_run_hooks+0x83
             kernel`ip_fastforward+0x43e
             kernel`ether_demux+0x113
             kernel`ether_nh_input+0x34a
             kernel`netisr_dispatch_src+0x5e
             kernel`ether_demux+0x95
             kernel`ether_nh_input+0x34a
             kernel`netisr_dispatch_src+0x5e
             kernel`ixgbe_rxeof+0x4f8
             kernel`ixgbe_msix_que+0xc0
             kernel`intr_event_execute_handlers+0xab
             kernel`ithread_loop+0x96
             kernel`fork_exit+0x9a
             kernel`0xffffffff8062f4be
           28905

             kernel`__mtx_lock_sleep+0x215
             kernel`ipfw_check_packet+0x258
             kernel`pfil_run_hooks+0x83
             kernel`ip_fastforward+0x43e
             kernel`ether_demux+0x113
             kernel`ether_nh_input+0x34a
             kernel`netisr_dispatch_src+0x5e
             kernel`ether_demux+0x95
             kernel`ether_nh_input+0x34a
             kernel`netisr_dispatch_src+0x5e
             kernel`ixgbe_rxeof+0x4f8
             kernel`ixgbe_msix_que+0xc0
             kernel`intr_event_execute_handlers+0xab
             kernel`ithread_loop+0x96
             kernel`fork_exit+0x9a
             kernel`0xffffffff8062f4be
           33138

             kernel`fsk_match+0xf
             kernel`dummynet_io+0x11b
             kernel`ipfw_check_packet+0x258
             kernel`pfil_run_hooks+0x83
             kernel`ip_fastforward+0x43e
             kernel`ether_demux+0x113
             kernel`ether_nh_input+0x34a
             kernel`netisr_dispatch_src+0x5e
             kernel`ether_demux+0x95
             kernel`ether_nh_input+0x34a
             kernel`netisr_dispatch_src+0x5e
             kernel`ixgbe_rxeof+0x4f8
             kernel`ixgbe_msix_que+0xc0
             kernel`intr_event_execute_handlers+0xab
             kernel`ithread_loop+0x96
             kernel`fork_exit+0x9a
             kernel`0xffffffff8062f4be
           85591

             kernel`cpu_idle+0xbe
             kernel`fork_exit+0x9a
             kernel`0xffffffff8062f4be
          158647

             kernel`acpi_cpu_c1+0x6
             kernel`cpu_idle_acpi+0x3f
             kernel`cpu_idle+0x93
             kernel`sched_idletd+0x1ee
             kernel`fork_exit+0x9a
             kernel`0xffffffff8062f4be
          187387

 

 

Share this post


Link to post
Share on other sites

А так с выключенным ipfw:

 

              kernel`bcmp+0xb
             pf.ko`pf_test+0x77c
             pf.ko`pf_check_out+0x3c
             kernel`pfil_run_hooks+0x83
             kernel`ip_fastforward+0x43e
             kernel`ether_demux+0x113
             kernel`ether_nh_input+0x34a
             kernel`netisr_dispatch_src+0x5e
             kernel`ether_demux+0x95
             kernel`ether_nh_input+0x34a
             kernel`netisr_dispatch_src+0x5e
             kernel`ixgbe_rxeof+0x4f8
             kernel`ixgbe_msix_que+0xc0
             kernel`intr_event_execute_handlers+0xab
             kernel`ithread_loop+0x96
             kernel`fork_exit+0x9a
             kernel`0xffffffff8062f4be
           14014

             kernel`bcmp+0xb
             pf.ko`pf_test+0x899
             pf.ko`pf_check_out+0x3c
             kernel`pfil_run_hooks+0x83
             kernel`ip_fastforward+0x43e
             kernel`ether_demux+0x113
             kernel`ether_nh_input+0x34a
             kernel`netisr_dispatch_src+0x5e
             kernel`ether_demux+0x95
             kernel`ether_nh_input+0x34a
             kernel`netisr_dispatch_src+0x5e
             kernel`ixgbe_rxeof+0x4f8
             kernel`ixgbe_msix_que+0xc0
             kernel`intr_event_execute_handlers+0xab
             kernel`ithread_loop+0x96
             kernel`fork_exit+0x9a
             kernel`0xffffffff8062f4be
           18023

             kernel`bcmp+0xb
             pf.ko`pf_test+0x899
             pf.ko`pf_check_in+0x1d
             kernel`pfil_run_hooks+0x83
             kernel`ip_fastforward+0x352
             kernel`ether_demux+0x113
             kernel`ether_nh_input+0x34a
             kernel`netisr_dispatch_src+0x5e
             kernel`ether_demux+0x95
             kernel`ether_nh_input+0x34a
             kernel`netisr_dispatch_src+0x5e
             kernel`ixgbe_rxeof+0x4f8
             kernel`ixgbe_msix_que+0xc0
             kernel`intr_event_execute_handlers+0xab
             kernel`ithread_loop+0x96
             kernel`fork_exit+0x9a
             kernel`0xffffffff8062f4be
           18167

             kernel`sched_idletd+0x187
             kernel`0xffffffff8062f4be
           36810

             kernel`sched_idletd+0x18b
             kernel`0xffffffff8062f4be
           58715

             kernel`sched_idletd+0x18d
             kernel`0xffffffff8062f4be
           58949

             kernel`sched_idletd+0x180
             kernel`0xffffffff8062f4be
           81147

             kernel`acpi_cpu_c1+0x6
             kernel`cpu_idle_acpi+0x3f
             kernel`cpu_idle+0x93
             kernel`sched_idletd+0x1ee
             kernel`fork_exit+0x9a
             kernel`0xffffffff8062f4be
          436591

             kernel`cpu_idle+0xbe
             kernel`fork_exit+0x9a
             kernel`0xffffffff8062f4be
          620206

 

 

Share this post


Link to post
Share on other sites
Отключил ipfw. Трафик увеличился до 1200 Мбит/сек и 130 kpps, но нагрузка заметно снизилась, в том числе и по, почему-то, прерываниям

Потому что у тебя нет.иср=директ и всё обрабатывается в контексте обработчика прерываний.

 

Коллеги, а профайлингом что, больше никто не занимался? По всему форуму сообщения, посвящённых профайлингу на FreeBSD, можно пересчитать по пальцам, а уж посвящённых dtrace, так и вообще по одной руке. Чувствую я потенциальную силу большую в этом, но нет никого, кто просветить бы мог.

А что именно нужно освещать?

Share this post


Link to post
Share on other sites
Потому что у тебя нет.иср=директ и всё обрабатывается в контексте обработчика прерываний.

 

Переключил с direct на deferred. При выключенном ipfw загрузка процессоров не изменилась вообще (как было по 40% от ix0:que на ядро, так и осталось). Это для 130Kpps и 1100 Mbit/sec.

 

При включенном ipfw загрузка процессоров 90-100% на ядро всё от тех же ix0:que, трафик 110 Kpps и 880 Mbit/sec

 

Переключение net.isr почему-то вообще никак не сказалось, другими словами

 

              kernel`__mtx_lock_sleep+0x212
             kernel`ipfw_check_packet+0x258
             kernel`pfil_run_hooks+0x83
             kernel`ip_fastforward+0x43e
             kernel`ether_demux+0x113
             kernel`ether_nh_input+0x34a
             kernel`netisr_dispatch_src+0x5e
             kernel`ether_demux+0x95
             kernel`ether_nh_input+0x34a
             kernel`netisr_dispatch_src+0x5e
             kernel`ixgbe_rxeof+0x4f8
             kernel`ixgbe_msix_que+0xc0
             kernel`intr_event_execute_handlers+0xab
             kernel`ithread_loop+0x96
             kernel`fork_exit+0x9a
             kernel`0xffffffff8062f4be
        	1377

             kernel`__mtx_lock_sleep+0x215
             kernel`ipfw_check_packet+0x258
             kernel`pfil_run_hooks+0x83
             kernel`ip_fastforward+0x43e
             kernel`ether_demux+0x113
             kernel`ether_nh_input+0x34a
             kernel`netisr_dispatch_src+0x5e
             kernel`ether_demux+0x95
             kernel`ether_nh_input+0x34a
             kernel`netisr_dispatch_src+0x5e
             kernel`ixgbe_rxeof+0x4f8
             kernel`ixgbe_msix_que+0xc0
             kernel`intr_event_execute_handlers+0xab
             kernel`ithread_loop+0x96
             kernel`fork_exit+0x9a
             kernel`0xffffffff8062f4be
        	1643

             kernel`fsk_match+0xf
             kernel`dummynet_io+0x11b
             kernel`ipfw_check_packet+0x258
             kernel`pfil_run_hooks+0x83
             kernel`ip_fastforward+0x43e
             kernel`ether_demux+0x113
             kernel`ether_nh_input+0x34a
             kernel`netisr_dispatch_src+0x5e
             kernel`ether_demux+0x95
             kernel`ether_nh_input+0x34a
             kernel`netisr_dispatch_src+0x5e
             kernel`ixgbe_rxeof+0x4f8
             kernel`ixgbe_msix_que+0xc0
             kernel`intr_event_execute_handlers+0xab
             kernel`ithread_loop+0x96
             kernel`fork_exit+0x9a
             kernel`0xffffffff8062f4be
        	4064

             kernel`cpu_idle+0xbe
             kernel`fork_exit+0x9a
             kernel`0xffffffff8062f4be
        	4403

             kernel`acpi_cpu_c1+0x6
             kernel`cpu_idle_acpi+0x3f
             kernel`cpu_idle+0x93
             kernel`sched_idletd+0x1ee
             kernel`fork_exit+0x9a
             kernel`0xffffffff8062f4be
        	4968

 

 

 

 

А что именно нужно освещать?

 

Понять, как правильно профилировать вот загрузку ядра и прерываний. Кем вызываются, сколько времени процессором на них проводятся и в ходе каких вызовов. То есть что-то похожее на приведённый код выше.

 

 

 

Update: Ага, понял, почему переключение net.isr не дало результатов. Был включен fastforwarding. Выключил, структура загрузки изменилась, вот только результат всё равно ужасает:

 

top -aSCHIP

 

last pid: 76837;  load averages:  3.44,  3.19,  2.45                                            up 2+20:33:01  19:36:24
284 processes: 7 running, 249 sleeping, 1 zombie, 26 waiting, 1 lock
CPU 0:  0.0% user,  0.0% nice,  0.0% system, 66.7% interrupt, 33.3% idle
CPU 1:  0.0% user,  0.0% nice,  0.0% system, 66.7% interrupt, 33.3% idle
CPU 2:  0.0% user,  0.0% nice,  0.0% system,  100% interrupt,  0.0% idle
CPU 3:  0.0% user,  0.0% nice,  0.0% system,  0.0% interrupt,  100% idle
Mem: 9872K Active, 33M Inact, 7290M Wired, 724K Cache, 587M Free
ARC: 6088M Total, 1660M MFU, 3993M MRU, 912K Anon, 82M Header, 352M Other
Swap: 4096M Total, 9852K Used, 4086M Free

 PID USERNAME   PRI NICE   SIZE    RES STATE   C   TIME 	CPU COMMAND
  12 root   	-72    - 	0K   464K *dn_uh  0  26:13 100.00% [intr{swi1: netisr 0}]
  12 root   	-72    - 	0K   464K CPU2    2  28:26  99.17% [intr{swi1: netisr 2}]
  11 root   	155 ki31 	0K    64K RUN 	3  48.5H  95.26% [idle{idle: cpu3}]
  12 root   	-72    - 	0K   464K CPU1    1  27:43  94.38% [intr{swi1: netisr 1}]
  12 root   	-92    - 	0K   464K WAIT    2  19.4H   5.66% [intr{irq265: ix0:que }]
  12 root   	-92    - 	0K   464K WAIT    3  19.4H   5.27% [intr{irq266: ix0:que }]
  12 root   	-92    - 	0K   464K WAIT    1  19.7H   4.88% [intr{irq264: ix0:que }]
  11 root   	155 ki31 	0K    64K RUN 	0  61.0H   1.66% [idle{idle: cpu0}]
  11 root   	155 ki31 	0K    64K RUN 	1  47.8H   0.68% [idle{idle: cpu1}]
  11 root   	155 ki31 	0K    64K RUN 	2  48.1H   0.39% [idle{idle: cpu2}]
  12 root   	-60    - 	0K   464K WAIT    3  42:14   0.29% [intr{swi4: clock}]

 

Так изменилась структура вызовов, соответственно (ipfw включен, net.isr.dispatch=deferred, net.inet.ip.fastforwarding=0):

 

              kernel`sched_idletd+0x187
             kernel`0xffffffff8062f4be
            2917

             kernel`rn_match+0x5a
             kernel`ipfw_lookup_table+0x48
             kernel`ipfw_chk+0x2ae3
             kernel`ipfw_check_packet+0xff
             kernel`pfil_run_hooks+0x83
             kernel`ip_input+0x36f
             kernel`swi_net+0x132
             kernel`intr_event_execute_handlers+0xab
             kernel`ithread_loop+0x96
             kernel`fork_exit+0x9a
             kernel`0xffffffff8062f4be
            3059

             kernel`__mtx_lock_sleep+0x212
             kernel`ipfw_check_packet+0x258
             kernel`pfil_run_hooks+0x83
             kernel`ip_output+0x8a4
             kernel`ip_forward+0x284
             kernel`ip_input+0x682
             kernel`swi_net+0x132
             kernel`intr_event_execute_handlers+0xab
             kernel`ithread_loop+0x96
             kernel`fork_exit+0x9a
             kernel`0xffffffff8062f4be
            3094

             kernel`dn_ht_find+0xa1
             kernel`ipfw_check_packet+0x258
             kernel`pfil_run_hooks+0x83
             kernel`ip_output+0x8a4
             kernel`ip_forward+0x284
             kernel`ip_input+0x682
             kernel`swi_net+0x132
             kernel`intr_event_execute_handlers+0xab
             kernel`ithread_loop+0x96
             kernel`fork_exit+0x9a
             kernel`0xffffffff8062f4be
            3189

             kernel`__mtx_lock_sleep+0x215
             kernel`ipfw_check_packet+0x258
             kernel`pfil_run_hooks+0x83
             kernel`ip_output+0x8a4
             kernel`ip_forward+0x284
             kernel`ip_input+0x682
             kernel`swi_net+0x132
             kernel`intr_event_execute_handlers+0xab
             kernel`ithread_loop+0x96
             kernel`fork_exit+0x9a
             kernel`0xffffffff8062f4be
            3229

             kernel`sched_idletd+0x18b
             kernel`0xffffffff8062f4be
            4622

             kernel`sched_idletd+0x18d
             kernel`0xffffffff8062f4be
            4659

             kernel`sched_idletd+0x180
             kernel`0xffffffff8062f4be
            6279

             kernel`cpu_idle+0xbe
             kernel`fork_exit+0x9a
             kernel`0xffffffff8062f4be
            7245

             kernel`fsk_match+0xf
             kernel`dummynet_io+0x11b
             kernel`ipfw_check_packet+0x258
             kernel`pfil_run_hooks+0x83
             kernel`ip_output+0x8a4
             kernel`ip_forward+0x284
             kernel`ip_input+0x682
             kernel`swi_net+0x132
             kernel`intr_event_execute_handlers+0xab
             kernel`ithread_loop+0x96
             kernel`fork_exit+0x9a
             kernel`0xffffffff8062f4be
            9396

 

 

Edited by Dyr

Share this post


Link to post
Share on other sites

Убранные из ipfw правила pipe немного снизили нагрузку на процессор с одновременным (что естественно) увеличением проходящего трафика до 160 Kpps и 1400 Мbit/sec

 

last pid: 85948;  load averages:  2.79,  3.17,  2.75                                                   		up 2+20:39:49  19:43:12
283 processes: 8 running, 248 sleeping, 1 zombie, 26 waiting
CPU 0:  0.0% user,  0.0% nice,  4.3% system, 67.7% interrupt, 28.0% idle
CPU 1:  0.0% user,  0.0% nice,  0.0% system, 81.5% interrupt, 18.5% idle
CPU 2:  0.0% user,  0.0% nice,  0.0% system, 90.6% interrupt,  9.4% idle
CPU 3:  0.0% user,  0.0% nice,  0.8% system,  7.5% interrupt, 91.7% idle
Mem: 9900K Active, 33M Inact, 7293M Wired, 724K Cache, 584M Free
ARC: 6089M Total, 1660M MFU, 3994M MRU, 1168K Anon, 82M Header, 352M Other
Swap: 4096M Total, 9852K Used, 4086M Free

 PID USERNAME   PRI NICE   SIZE    RES STATE   C   TIME 	CPU COMMAND
  11 root   	155 ki31 	0K    64K RUN 	3  48.7H  96.97% [idle{idle: cpu3}]
  12 root   	-72    - 	0K   464K CPU2    2  34:31  86.28% [intr{swi1: netisr 2}]
  12 root   	-72    - 	0K   464K CPU1    1  33:52  80.27% [intr{swi1: netisr 1}]
  12 root   	-72    - 	0K   464K CPU0    0  31:25  78.86% [intr{swi1: netisr 0}]
  11 root   	155 ki31 	0K    64K RUN 	0  61.0H  26.56% [idle{idle: cpu0}]
  11 root   	155 ki31 	0K    64K RUN 	1  47.8H  15.58% [idle{idle: cpu1}]
  11 root   	155 ki31 	0K    64K RUN 	2  48.1H  14.70% [idle{idle: cpu2}]
  12 root   	-92    - 	0K   464K WAIT    2  19.4H   5.76% [intr{irq265: ix0:que }]
  12 root   	-92    - 	0K   464K WAIT    1  19.7H   5.37% [intr{irq264: ix0:que }]
  12 root   	-92    - 	0K   464K WAIT    3  19.4H   5.37% [intr{irq266: ix0:que }]
  12 root   	-60    - 	0K   464K WAIT    3  42:19   0.39% [intr{swi4: clock}]

 

Убранный из ipfw ng_tee на ng_netflow ещё сильнее снизил загрузку на процессор (на 20% по прерываниям!) при том же трафике:

 

last pid: 86038;  load averages:  2.24,  2.63,  2.61                                            up 2+20:44:07  19:47:30
284 processes: 7 running, 249 sleeping, 1 zombie, 27 waiting
CPU 0:  0.0% user,  0.0% nice,  3.9% system, 49.0% interrupt, 47.1% idle
CPU 1:  0.0% user,  0.0% nice,  0.0% system, 59.2% interrupt, 40.8% idle
CPU 2:  0.0% user,  0.0% nice,  0.4% system, 64.7% interrupt, 34.9% idle
CPU 3:  0.0% user,  0.0% nice,  0.8% system,  7.5% interrupt, 91.8% idle
Mem: 11M Active, 34M Inact, 7294M Wired, 724K Cache, 582M Free
ARC: 6090M Total, 1660M MFU, 3994M MRU, 912K Anon, 82M Header, 352M Other
Swap: 4096M Total, 9852K Used, 4086M Free

 PID USERNAME   PRI NICE   SIZE    RES STATE   C   TIME 	CPU COMMAND
  11 root   	155 ki31 	0K    64K RUN 	3  48.7H  94.68% [idle{idle: cpu3}]
  12 root   	-72    - 	0K   464K CPU2    2  37:10  57.28% [intr{swi1: netisr 2}]
  12 root   	-72    - 	0K   464K WAIT    0  33:49  53.96% [intr{swi1: netisr 0}]
  12 root   	-72    - 	0K   464K CPU1    1  36:21  51.86% [intr{swi1: netisr 1}]
  11 root   	155 ki31 	0K    64K CPU0    0  61.1H  50.88% [idle{idle: cpu0}]
  11 root   	155 ki31 	0K    64K RUN 	1  47.9H  44.09% [idle{idle: cpu1}]
  11 root   	155 ki31 	0K    64K RUN 	2  48.1H  40.09% [idle{idle: cpu2}]
  12 root   	-92    - 	0K   464K WAIT    1  19.7H   5.76% [intr{irq264: ix0:que }]
  12 root   	-92    - 	0K   464K WAIT    2  19.4H   5.37% [intr{irq265: ix0:que }]
  12 root   	-92    - 	0K   464K WAIT    3  19.4H   5.08% [intr{irq266: ix0:que }]
  12 root   	-60    - 	0K   464K WAIT    2  42:21   0.20% [intr{swi4: clock}]

 

Отключение ipfw полностью (sysctl net.inet.ip.fw.enable=0) ещё сильнее уменьшает загрузку на процессор (на ~15% по прерываниям):

 


last pid: 86093;  load averages:  1.58,  2.15,  2.41                                                   		up 2+20:46:52  19:50:15
284 processes: 6 running, 249 sleeping, 1 zombie, 28 waiting
CPU 0:  0.0% user,  0.0% nice,  4.3% system, 25.6% interrupt, 70.1% idle
CPU 1:  0.0% user,  0.0% nice,  0.4% system, 42.5% interrupt, 57.1% idle
CPU 2:  0.0% user,  0.0% nice,  0.4% system, 42.1% interrupt, 57.5% idle
CPU 3:  0.0% user,  0.0% nice,  0.8% system,  2.8% interrupt, 96.5% idle
Mem: 10M Active, 34M Inact, 7294M Wired, 724K Cache, 583M Free
ARC: 6090M Total, 1660M MFU, 3994M MRU, 912K Anon, 83M Header, 352M Other
Swap: 4096M Total, 9852K Used, 4086M Free

 PID USERNAME   PRI NICE   SIZE    RES STATE   C   TIME 	CPU COMMAND
  11 root   	155 ki31 	0K    64K RUN 	3  48.8H  98.00% [idle{idle: cpu3}]
  11 root   	155 ki31 	0K    64K RUN 	0  61.1H  69.68% [idle{idle: cpu0}]
  11 root   	155 ki31 	0K    64K CPU2    2  48.2H  66.16% [idle{idle: cpu2}]
  11 root   	155 ki31 	0K    64K RUN 	1  47.9H  60.89% [idle{idle: cpu1}]
  12 root   	-72    - 	0K   464K WAIT    1  37:29  33.69% [intr{swi1: netisr 1}]
  12 root   	-72    - 	0K   464K WAIT    2  38:16  33.59% [intr{swi1: netisr 2}]
  12 root   	-72    - 	0K   464K CPU0    0  34:51  31.88% [intr{swi1: netisr 0}]
  12 root   	-92    - 	0K   464K WAIT    2  19.4H   5.47% [intr{irq265: ix0:que }]
  12 root   	-92    - 	0K   464K WAIT    1  19.7H   5.27% [intr{irq264: ix0:que }]
  12 root   	-92    - 	0K   464K WAIT    3  19.4H   5.08% [intr{irq266: ix0:que }]
  12 root   	-60    - 	0K   464K WAIT    3  42:23   0.10% [intr{swi4: clock}]

 

Загрузка ipfw с правилами pipe, но без правил ng_netflow, тут же приводит к увеличению нагрузки "под потолок":

 

last pid: 86093;  load averages:  1.58,  2.15,  2.41                                                   		up 2+20:46:52  19:50:15
284 processes: 6 running, 249 sleeping, 1 zombie, 28 waiting
CPU 0:  0.0% user,  0.0% nice,  4.3% system, 25.6% interrupt, 70.1% idle
CPU 1:  0.0% user,  0.0% nice,  0.4% system, 42.5% interrupt, 57.1% idle
CPU 2:  0.0% user,  0.0% nice,  0.4% system, 42.1% interrupt, 57.5% idle
CPU 3:  0.0% user,  0.0% nice,  0.8% system,  2.8% interrupt, 96.5% idle
Mem: 10M Active, 34M Inact, 7294M Wired, 724K Cache, 583M Free
ARC: 6090M Total, 1660M MFU, 3994M MRU, 912K Anon, 83M Header, 352M Other
Swap: 4096M Total, 9852K Used, 4086M Free

 PID USERNAME   PRI NICE   SIZE    RES STATE   C   TIME 	CPU COMMAND
  11 root   	155 ki31 	0K    64K RUN 	3  48.8H  98.00% [idle{idle: cpu3}]
  11 root   	155 ki31 	0K    64K RUN 	0  61.1H  69.68% [idle{idle: cpu0}]
  11 root   	155 ki31 	0K    64K CPU2    2  48.2H  66.16% [idle{idle: cpu2}]
  11 root   	155 ki31 	0K    64K RUN 	1  47.9H  60.89% [idle{idle: cpu1}]
  12 root   	-72    - 	0K   464K WAIT    1  37:29  33.69% [intr{swi1: netisr 1}]
  12 root   	-72    - 	0K   464K WAIT    2  38:16  33.59% [intr{swi1: netisr 2}]
  12 root   	-72    - 	0K   464K CPU0    0  34:51  31.88% [intr{swi1: netisr 0}]
  12 root   	-92    - 	0K   464K WAIT    2  19.4H   5.47% [intr{irq265: ix0:que }]
  12 root   	-92    - 	0K   464K WAIT    1  19.7H   5.27% [intr{irq264: ix0:que }]
  12 root   	-92    - 	0K   464K WAIT    3  19.4H   5.08% [intr{irq266: ix0:que }]
  12 root   	-60    - 	0K   464K WAIT    3  42:23   0.10% [intr{swi4: clock}]


 

Загрузка ipfw, состоящего только из двух правил pipe, увеличивает нагрузку до 70-80% по прерываниям.

 

ipfw list

 

03000 pipe tablearg ip from any to table(4) { xmit vlan11 or xmit vlan12 } // Incoming traffic shaping
03000 pipe tablearg ip from table(5) to any xmit vlan3918 // Outgoing traffic shaping
65535 allow ip from any to any

 


last pid: 86249;  load averages:  2.40,  2.28,  2.38                                                   		up 2+20:51:20  19:54:43
284 processes: 8 running, 248 sleeping, 1 zombie, 27 waiting
CPU 0:  0.0% user,  0.0% nice, 24.3% system, 54.9% interrupt, 20.8% idle
CPU 1:  0.0% user,  0.0% nice,  0.4% system, 75.3% interrupt, 24.3% idle
CPU 2:  0.0% user,  0.0% nice,  0.0% system, 67.1% interrupt, 32.9% idle
CPU 3:  0.4% user,  0.0% nice,  0.8% system,  8.6% interrupt, 90.2% idle
Mem: 10M Active, 33M Inact, 7294M Wired, 724K Cache, 583M Free
ARC: 6090M Total, 1660M MFU, 3994M MRU, 1168K Anon, 83M Header, 352M Other
Swap: 4096M Total, 9852K Used, 4086M Free

 PID USERNAME   PRI NICE   SIZE    RES STATE   C   TIME 	CPU COMMAND
  11 root   	155 ki31 	0K    64K CPU3    3  48.8H 100.00% [idle{idle: cpu3}]
  12 root   	-72    - 	0K   464K WAIT    1  40:20  70.75% [intr{swi1: netisr 1}]
  12 root   	-72    - 	0K   464K CPU0    0  37:18  70.75% [intr{swi1: netisr 0}]
  12 root   	-72    - 	0K   464K CPU2    2  41:09  64.99% [intr{swi1: netisr 2}]
  11 root   	155 ki31 	0K    64K RUN 	0  61.1H  31.05% [idle{idle: cpu0}]
  11 root   	155 ki31 	0K    64K RUN 	2  48.2H  29.05% [idle{idle: cpu2}]
  11 root   	155 ki31 	0K    64K RUN 	1  47.9H  27.78% [idle{idle: cpu1}]
  12 root   	-92    - 	0K   464K WAIT    2  19.4H   6.15% [intr{irq265: ix0:que }]
  12 root   	-92    - 	0K   464K WAIT    3  19.4H   6.05% [intr{irq266: ix0:que }]
  12 root   	-92    - 	0K   464K WAIT    1  19.7H   5.96% [intr{irq264: ix0:que }]
  12 root   	-60    - 	0K   464K WAIT    3  42:25   0.10% [intr{swi4: clock}]

 

 

 

 

Выводы: ipfw становится при моей конфигурации узким местом, существенно ограничивая производительность.

 

Загрузка процессоров:

 

Отключенный ipfw: 40% netisr per cpu

 

ipfw с pipe, без ng_netflow и без фильтров : 70% netisr per cpu

 

ipfw с pipe, без ng_netflow и с фильтрами: 90-100% netisr per cpu

 

ipfw без pipe, с ng_netflow и с фильтрами: 75% netisr per cpu

 

ipfw без pipe, без ng_netflow и с фильтрами: 55% netisr per cpu

 

 

Кстати, интересная особенность - несмотря на создание 4 очередей netisr, активно ровно столько же, сколько и очередей от сетевой карты. Поскольку я специально уменьшал количество последних с 4 до 3 (чтобы освободить одно ядро процессора под dummynet), то и netisr работает только тремя очередями. Причём, что неприятно, прибивается к ядрам не в той очерёдности, в которой были прибиты сетевые (0 процессор оставляем под dummynet и вешаем на 1,2 и 3).

Edited by Dyr

Share this post


Link to post
Share on other sites

Сколько рулесов в ipfw? Сколько в его таблицах включений?

 

Зачем удлинять путь пакета навешивая и pf и ipfw?

Почему не использовать netgraph?

Edited by DVM-Avgoor

Share this post


Link to post
Share on other sites
Кстати, интересная особенность - несмотря на создание 4 очередей netisr, активно ровно столько же, сколько и очередей от сетевой карты. Поскольку я специально уменьшал количество последних с 4 до 3 (чтобы освободить одно ядро процессора под dummynet), то и netisr работает только тремя очередями. Причём, что неприятно, прибивается к ядрам не в той очерёдности, в которой были прибиты сетевые (0 процессор оставляем под dummynet и вешаем на 1,2 и 3).

Особенностей там куда больше :)

Например, использование сразу двух фаеров больше вымывает кеш.

Так же его вымывает частое переключение задач, за которое отвечает hz=1000.

Ещё кеш может быть не совсем общим: интел любил делать четрёх ядреные процессоры путём склеивания двух двух ядерных. А передача пакетов/данных между ядрами в разных половинках более затратно.

Share this post


Link to post
Share on other sites
Зачем удлинять путь пакета навешивая и pf и ipfw?

 

pf nat гораздо удобней и в принципе, производительней других вариантов natов на FreeBSD.

 

Шейперы в ipfw, без вариантов.

 

 

 

 

 

 

 

 

 

 

 

Share this post


Link to post
Share on other sites

Вчера попробовал с kern.hz=200, практически не помогло.

Share this post


Link to post
Share on other sites

Dyr, привожу свои данные с сервера с Intel X520-DA2 и CPU Xeon E3-1270 (v1), есть еще 2 роутера под фрей, но там уже стоит E5-1660v2.

На этой машине стоит FreeBSD 8.4 Stable. HT в биосе включен. 7 очередей на каждую ixgbe, каждое прибито к своему ядру с 1 по 7. dummynet прибит к 0 ядру.

Некоторе время тоже не хотел уходить с pf nat, но однажды ушел на ipfw nat и не жалею. Неудобно, но 1 раз переписать скрипты и все ок.

Шейпер на dummynet. Netflow нет, но есть в планах запустить.

Вчера в ЧНН (ix0 смотрит в сторону UPlink):

 

netstat -I ix0 -w1 -h

           input          (ix0)           output
  packets  errs idrops      bytes    packets  errs      bytes colls
     179k     0     0       181M       146k     0        72M     0
     175k     0     0       178M       139k     0        68M     0
     182k     0     0       185M       147k     0        72M     0
     193k     0     0       200M       154k     0        75M     0
     192k     0     0       201M       147k     0        70M     0
     193k     0     0       201M       150k     0        70M     0
     183k     0     0       187M       146k     0        73M     0
     184k     0     0       184M       149k     0        79M     0
     176k     0     0       175M       142k     0        74M     0
     174k     0     0       170M       143k     0        77M     0
     175k     0     0       175M       140k     0        72M     0
     188k     0     0       190M       149k     0        76M     0

 

netstat -m , vmstat -i , vmstat -z

59469/13731/73200 mbufs in use (current/cache/total)
59332/8498/67830/262144 mbuf clusters in use (current/cache/total/max)
59332/7100 mbuf+clusters out of packet secondary zone in use (current/cache)
0/151/151/262144 4k (page size) jumbo clusters in use (current/cache/total/max)
0/0/0/65536 9k jumbo clusters in use (current/cache/total/max)
0/0/0/32768 16k jumbo clusters in use (current/cache/total/max)
134043K/21032K/155076K bytes allocated to network (current/cache/total)
0/0/0 requests for mbufs denied (mbufs/clusters/mbuf+clusters)
0/0/0 requests for jumbo clusters denied (4k/9k/16k)
0/0/0 sfbufs in use (current/peak/max)
0 requests for sfbufs denied
0 requests for sfbufs delayed
0 requests for I/O initiated by sendfile
0 calls to protocol drain routines

# vmstat -i
interrupt                          total       rate
irq16: ehci0                     6358074          3
irq20: atapci0                   9050750          4
irq23: ehci1                     3464227          1
cpu0: timer                   3755521931       2000
irq256: ix0:que 0            21524892323      11463
irq257: ix0:que 1            20049944731      10677
irq258: ix0:que 2            20281395514      10801
irq259: ix0:que 3            20294240802      10807
irq260: ix0:que 4            20281282427      10801
irq261: ix0:que 5            19993490420      10647
irq262: ix0:que 6            19934646940      10616
irq263: ix0:link                       3          0
irq264: ix1:que 0            17927446830       9547
irq265: ix1:que 1            16742538179       8916
irq266: ix1:que 2            17025852569       9067
irq267: ix1:que 3            16998528574       9052
irq268: ix1:que 4            16991482651       9049
irq269: ix1:que 5            16419253213       8744
irq270: ix1:que 6            16389715267       8728
irq271: ix1:link                       3          0
cpu1: timer                   3755518269       2000
cpu3: timer                   3755515598       2000
cpu6: timer                   3755429141       2000
cpu4: timer                   3755517378       2000
cpu2: timer                   3755516333       2000
cpu5: timer                   3755425814       1999
cpu7: timer                   3755514905       2000
Total                       290917542866     154931

# vmstat -z
ITEM                     SIZE     LIMIT      USED      FREE  REQUESTS  FAILURES

UMA Kegs:                 208,        0,      105,       14,      105,        0
UMA Zones:                448,        0,      105,        7,      105,        0
UMA Slabs:                568,        0,     3662,      125,   288587,        0
UMA RCntSlabs:            568,        0,    34066,     1242,    40344,        0
UMA Hash:                 256,        0,        0,        0,        3,        0
16 Bucket:                152,        0,       28,      122,      206,        0
32 Bucket:                280,        0,       67,      115,      405,       15
64 Bucket:                536,        0,      122,      123,      928,      124
128 Bucket:              1048,        0,     2452,        2,   169139,    12281
VM OBJECT:                216,        0,    53220,    28770, 523925112,        0
MAP:                      232,        0,        7,       25,        7,        0
KMAP ENTRY:               120,   394475,       42,      578,   541460,        0
MAP ENTRY:                120,        0,     2264,    12306, 1527424124,        0
DP fakepg:                120,        0,        0,      124,       18,        0
SG fakepg:                120,        0,        0,        0,        0,        0
mt_zone:                 2056,        0,      233,       63,      235,        0
16:                        16,        0,     2777,     1423, 90401981,        0
32:                        32,        0,     4192,     1161, 39680351,        0
64:                        64,        0,     4194,     2022, 209259803,        0
128:                      128,        0,   837420,   183786, 4948173192,        0
256:                      256,        0,    25780,     9200, 412156878049,        0
512:                      512,        0,     8336,     1807, 2446686377,        0
1024:                    1024,        0,       67,     1097, 18089530,        0
2048:                    2048,        0,       69,      821,   741282,        0
4096:                    4096,        0,      293,     1246, 18058744,        0
Files:                     80,        0,      373,     3047, 224463346,        0
TURNSTILE:                136,        0,     3508,      352,     3634,        0
umtx pi:                   96,        0,        0,        0,        0,        0
MAC labels:                40,        0,        0,        0,        0,        0
PROC:                    1136,        0,       84,     2673, 17803577,        0
THREAD:                  1128,        0,     2831,      676,    11180,        0
SLEEPQUEUE:                80,        0,     3508,      349,     3634,        0
VMSPACE:                  392,        0,       65,     2745, 17803558,        0
cpuset:                    72,        0,      116,      384,      149,        0
audit_record:             952,        0,        0,        0,        0,        0
mbuf_packet:              256,        0,    59358,     7074, 311627223635,        0
mbuf:                     256,        0,      100,     6668, 680874189429,        0
mbuf_cluster:            2048,   262144,    66432,     1398,   474368,        0
mbuf_jumbo_page:         4096,   262144,        0,      151,      610,        0
mbuf_jumbo_9k:           9216,    65536,        0,        0,        0,        0
mbuf_jumbo_16k:         16384,    32768,        0,        0,        0,        0
mbuf_ext_refcnt:            4,        0,        0,        0,        0,        0
NetGraph items:            72,    65540,        0,      203,       32,        0
NetGraph data items:       72,    65540,        0,     1566, 64919857,        0
g_bio:                    232,        0,        0,     1520, 36210799,        0
ttyinq:                   160,        0,      195,      237,      510,        0
ttyoutq:                  256,        0,      104,      121,      272,        0
ata_request:              320,        0,        0,     1488,  9052755,        0
ata_composite:            336,        0,        0,        0,        0,        0
VNODE:                    472,        0,    49158,     3018,   439567,        0
VNODEPOLL:                112,        0,        0,        0,        0,        0
NAMEI:                   1024,        0,        0,     1332, 323634608,        0
S VFS Cache:              108,        0,     1924,     1046, 10502899,        0
STS VFS Cache:            148,        0,        0,        0,        0,        0
L VFS Cache:              328,        0,     4557,      831,   156961,        0
LTS VFS Cache:            368,        0,        0,        0,        0,        0
DIRHASH:                 1024,        0,      103,      829,     8912,        0
pipe:                     728,        0,        6,     1339, 33348127,        0
ksiginfo:                 112,        0,     2726,     1531,   364353,        0
itimer:                   344,        0,        1,       32,        2,        0
KNOTE:                    128,        0,        0,     1160,  1488045,        0
socket:                   680,   262146,      232,     2678, 33697628,        0
ipq:                       56,     8253,        0,      315,       26,        0
udp_inpcb:                336,   262152,      149,     1248, 18081715,        0
udpcb:                     16,   262248,      149,     1363, 18081715,        0
tcp_inpcb:                336,   262152,       32,     2916,   307169,        0
tcpcb:                    944,   262144,       21,     2987,   307169,        0
tcptw:                     72,    27800,        3,     1097,    85187,        0
syncache:                 144,    15366,        0,      442,   117514,        0
hostcache:                136,    15372,       51,      453,     3577,        0
tcpreass:                  40,    16464,        0,      672,      556,        0
sackhole:                  32,        0,        0,      909,      121,        0
sctp_ep:                 1320,   262146,        0,        0,        0,        0
sctp_asoc:               2288,    40000,        0,        0,        0,        0
sctp_laddr:                48,    80064,        0,      576,      148,        0
sctp_raddr:               696,    80000,        0,        0,        0,        0
sctp_chunk:               136,   400008,        0,        0,        0,        0
sctp_readq:               104,   400032,        0,        0,        0,        0
sctp_stream_msg_out:      104,   400032,        0,        0,        0,        0
sctp_asconf:               40,   400008,        0,        0,        0,        0
sctp_asconf_ack:           48,   400032,        0,        0,        0,        0
ripcb:                    336,   262152,        3,      591,   174214,        0
unpcb:                    240,   262144,       47,     1025,   409578,        0
rtentry:                  200,        0,     1120,      457,     7362,        0
pfsrctrpl:                152,        0,        0,        0,        0,        0
pfrulepl:                 912,        0,        0,        0,        0,        0
pfstatepl:                392,    10000,        0,        0,        0,        0
pfaltqpl:                 240,        0,        0,        0,        0,        0
pfpooladdrpl:              88,        0,        0,        0,        0,        0
pfrktable:               1296,        0,        0,        0,        0,        0
pfrkentry:                216,        0,        0,        0,        0,        0
pfrkentry2:               216,        0,        0,        0,        0,        0
pffrent:                   32,     5050,        0,        0,        0,        0
pffrag:                    80,        0,        0,        0,        0,        0
pffrcache:                 80,    10035,        0,        0,        0,        0
pffrcent:                  24,    50022,        0,        0,        0,        0
pfstatescrub:              40,        0,        0,        0,        0,        0
pfiaddrpl:                120,        0,        0,        0,        0,        0
pfospfen:                 112,        0,        0,        0,        0,        0
pfosfp:                    40,        0,        0,        0,        0,        0
IPFW dynamic rule:        120,        0,      101,     1418, 21596608,        0
selfd:                     56,        0,     2941,     3107, 6624395980,        0
SWAPMETA:                 288,   116519,        1,      142,     1140,        0
Mountpoints:              752,        0,        9,       16,        9,        0
FFS inode:                168,        0,    49114,     2916,   439507,        0
FFS1 dinode:              128,        0,        0,        0,        0,        0
FFS2 dinode:              256,        0,    49114,     3116,   439507,        0

 

top -aSCHPI

last pid: 30941;  load averages:  5.33,  5.18,  5.17                                             up 21+17:34:18  22:58:41
174 processes: 15 running, 118 sleeping, 41 waiting
CPU 0:  0.0% user,  0.0% nice, 51.1% system,  0.0% interrupt, 48.9% idle
CPU 1:  0.0% user,  0.0% nice,  1.1% system, 45.9% interrupt, 53.0% idle
CPU 2:  0.4% user,  0.0% nice,  2.2% system, 64.0% interrupt, 33.3% idle
CPU 3:  0.0% user,  0.0% nice,  2.3% system, 48.5% interrupt, 49.2% idle
CPU 4:  0.4% user,  0.0% nice,  0.8% system, 43.2% interrupt, 55.6% idle
CPU 5:  0.4% user,  0.0% nice,  1.1% system, 59.4% interrupt, 39.1% idle
CPU 6:  0.0% user,  0.0% nice,  0.7% system, 51.7% interrupt, 47.6% idle
CPU 7:  0.0% user,  0.0% nice,  0.7% system, 44.9% interrupt, 54.3% idle
Mem: 805M Active, 1913M Inact, 1008M Wired, 86M Cache, 417M Buf, 130M Free
Swap: 8192M Total, 4K Used, 8192M Free

 PID USERNAME   PRI NICE   SIZE    RES STATE   C   TIME    CPU COMMAND
  11 root       171 ki31     0K   128K RUN     0 277.6H 100.00% [idle{idle: cpu0}]
  11 root       171 ki31     0K   128K RUN     5 347.9H 59.77% [idle{idle: cpu5}]
  11 root       171 ki31     0K   128K RUN     4 347.9H 59.28% [idle{idle: cpu4}]
  11 root       171 ki31     0K   128K RUN     7 349.7H 52.29% [idle{idle: cpu7}]
  11 root       171 ki31     0K   128K RUN     1 335.8H 51.76% [idle{idle: cpu1}]
  11 root       171 ki31     0K   128K CPU3    3 346.0H 50.49% [idle{idle: cpu3}]
  12 root       -68    -     0K   736K CPU2    2  94.0H 40.87% [intr{irq257: ix0:que }]
  12 root       -68    -     0K   736K WAIT    6  92.1H 39.36% [intr{irq261: ix0:que }]
  11 root       171 ki31     0K   128K CPU2    2 341.4H 33.98% [idle{idle: cpu2}]
  11 root       171 ki31     0K   128K CPU6    6 347.3H 32.28% [idle{idle: cpu6}]
  12 root       -68    -     0K   736K WAIT    7  89.5H 31.98% [intr{irq262: ix0:que }]
  12 root       -68    -     0K   736K WAIT    6  67.2H 29.49% [intr{irq269: ix1:que }]
  12 root       -68    -     0K   736K RUN     1  96.4H 28.76% [intr{irq256: ix0:que }]
  12 root       -68    -     0K   736K WAIT    2  72.6H 26.37% [intr{irq265: ix1:que }]
  12 root       -68    -     0K   736K WAIT    4  87.9H 26.17% [intr{irq259: ix0:que }]
  12 root       -68    -     0K   736K WAIT    3  91.5H 25.20% [intr{irq258: ix0:que }]
  12 root       -68    -     0K   736K CPU5    5  91.4H 23.58% [intr{irq260: ix0:que }]
  12 root       -68    -     0K   736K WAIT    3  69.7H 22.07% [intr{irq266: ix1:que }]
  12 root       -68    -     0K   736K CPU1    1  74.6H 20.56% [intr{irq264: ix1:que }]
  12 root       -68    -     0K   736K CPU7    7  67.2H 19.38% [intr{irq270: ix1:que }]
  12 root       -68    -     0K   736K WAIT    4  70.8H 17.58% [intr{irq267: ix1:que }]
  12 root       -68    -     0K   736K WAIT    5  67.6H 16.55% [intr{irq268: ix1:que }]
   0 root       -68    0     0K   480K CPU0    0 238.0H  1.66% [kernel{dummynet}]
   0 root       -68    0     0K   480K -       2 230:28  0.88% [kernel{ix0 que}]
   0 root       -68    0     0K   480K -       3 239:17  0.68% [kernel{ix0 que}]
   0 root       -68    0     0K   480K -       7 227:38  0.68% [kernel{ix0 que}]
   0 root       -68    0     0K   480K -       6 243:19  0.59% [kernel{ix0 que}]
   0 root       -68    0     0K   480K -       3 240:28  0.49% [kernel{ix0 que}]
   0 root       -68    0     0K   480K -       1 242:14  0.39% [kernel{ix0 que}]
   0 root       -68    0     0K   480K -       3 153:39  0.20% [kernel{ix1 que}]
   0 root       -68    0     0K   480K -       6 162:12  0.10% [kernel{ix1 que}]
   0 root       -68    0     0K   480K -       6 153:02  0.10% [kernel{ix1 que}]
   0 root       -68    0     0K   480K -       4 147:41  0.10% [kernel{ix1 que}]

 

loader.conf , sysctl.conf

# cat /boot/loader.conf 
kern.ipc.nmbclusters=262144
kern.ipc.nmbjumbop=262144
kern.ipc.somaxconn=32768
kern.ipc.maxsockets=204800
kern.maxfiles=256000
kern.maxfilesperproc=230400

hw.igb.lro=0
hw.igb.rxd=4096
hw.igb.txd=4096
hw.igb.max_interrupt_rate=32000
hw.igb.rx_process_limit=4096
hw.igb.num_queues=3
net.link.ifqmaxlen=10240
net.isr.defaultqlimit=8192
net.isr.bindthreads=1
net.isr.maxthreads=4

hw.ixgbe.lro=0
hw.ixgbe.rxd=4096
hw.ixgbe.txd=4096
hw.ixgbe.rx_process_limit=4096
hw.ixgbe.num_queues=7
hw.intr_storm_threshold=19000

net.graph.maxalloc=65536
net.graph.maxdata=65536

# cat /etc/sysctl.conf 
hw.intr_storm_threshold=19000
kern.ipc.nmbclusters=262144
kern.ipc.nmbjumbop=262144
kern.ipc.somaxconn=32768
kern.ipc.maxsockbuf=83886080
kern.maxfiles=256000
kern.maxfilesperproc=230400
kern.random.sys.harvest.ethernet=0
kern.random.sys.harvest.interrupt=0
net.inet.ip.fw.one_pass=0
net.inet.ip.dummynet.io_fast=1
net.inet.ip.fw.dyn_buckets=16384
net.inet.ip.fastforwarding=0
net.inet.ip.dummynet.hash_size=16384
net.inet.icmp.drop_redirect=1
net.inet.ip.redirect=0
net.inet.ip.dummynet.pipe_slot_limit=4096
net.inet.ip.intr_queue_maxlen=10240
net.graph.recvspace=35000
net.graph.maxdgram=35000
net.inet.tcp.blackhole=2
net.inet.tcp.delayed_ack=0
net.inet.tcp.drop_synfin=1
net.inet.tcp.nolocaltimewait=1
net.inet.udp.blackhole=1

 

Edited by John_obn

Share this post


Link to post
Share on other sites

Немного оффтопично, но... а теперь попробуйте уйти на Linux, и реализовать всё то же самое.

Share this post


Link to post
Share on other sites

pf nat гораздо удобней и в принципе, производительней других вариантов natов на FreeBSD.

 

Ничего он не производительней. ng_nat / ipfw nat очень хороши, а создавая лишний инстанс в пути пакета вы добавляете нагрузки в систему, сотню лишних переходов.

С такими идеями лучше действительно уйти на линукс, там вариант ровно 1 и крутить особо нечего.

Share this post


Link to post
Share on other sites
Ничего он не производительней. ng_nat / ipfw nat очень хороши, а создавая лишний инстанс в пути пакета вы добавляете нагрузки в систему, сотню лишних переходов.

 

Вы тестировали? Мои тесты показали крайне удручающую картину. Отдельно отмечу невозможность настроек таймаутов соединений (кроме разве что перекомпилирования?).

 

 

Share this post


Link to post
Share on other sites

Вы тестировали? Мои тесты показали крайне удручающую картину. Отдельно отмечу невозможность настроек таймаутов соединений (кроме разве что перекомпилирования?).

 

 

Поставьте уже линукс.

Share this post


Link to post
Share on other sites

Немного оффтопично, но... а теперь попробуйте уйти на Linux, и реализовать всё то же самое.

 

согласен.

 

как я ни бился завести (чтобы работало месяцами а не днями) ipv6 на freebsd (7,8,9), безрезультатно.

 

пы.сы. у меня 7.2 фря работала годами (как BRAS с mpd, ng_bpf, ng_car, ipfw, где-то dumynet для особо важных),

но на ней с zebr-ой, с ND проблемы, не уходят neighbor discovery на ng интерфейсы.

долго бился с 8-й и 9-й веткой. крашится падла раз в два-семь дней.

ничего не помогало, я полгода убил наверное на всякие эксперименты

 

перешел на линух, всё запустилось и заработало. аптайм скоро будет год.

 

 

ipv6 трафик пока мал, до 15% в вечернее время

 

и у меня всё работает в qemu-kvm. а вы тут с мега-тазиками да с 10GE сетевыми :)

 

мои данные: аплинк 1гбит (2х1Гб физика). средний размер пакета у провайдера 600байт, PPS собсно из этого ясен (порядка 180кппс)

около 900Мбит и уходит к клиентам через 2 х EXPI9402 (по два порта 1Гб в LACP) через прокинутые в виртуалку PCI-Express девайсы.

 

что сподвигло на такое: выкинуть две стойки серверов, выкинуть два кондиционера, заменить ИБП на более слабые и более качественные

(Inelt-ы слабые есть без батарей за 5т.р. с током зарядки до 7А или 10А, в следствии чего можно подключить из коробки как говорится батареи на 70Ач или 100Ач)

поставив один 2U сервер Asus RS720-X7-RS8 с iKVM (чтобы управление было удалённое) c 32Гигами памяти и одним процом E5-2670

ну второй такойже в горячий резерв на другую площадку в случае глобального дизастера (пожар, затопление и т.п.).

охлаждение не требует, и работает. с 8-ю потоками E5-2670 нагружен на 20%. а там около 30 виртуалок.

главные пожиратели процессорного времени - BRAS и база данных биллинга.

 

вот так вот. а фря нравилась...

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