kirush Posted March 28, 2013 (edited) Добрый день! Роутер работает, может 2-3 дня работать нормально, потом резко увеличивается нагрузка по прерываниям, елееле пропускает трафик, как следствие отваливается quagga ОС: FreeBSD 9.1 uplink с 2х провайдеров в lagg0 (igb0+igb1) downlink в lagg1 (em0+em1) частота глюков не зависит ни от входящей/исходящей нагрузки по трафику. На роутере quagga (2 fullview), nat в пул /27 (tablearg) Может кто то даст какие либо мысли исходя из: vmstat -m: root@router:/usr/ports/net-mgmt # vmstat -m Type InUse MemUse HighUse Requests Size(s) ctlmem 5062 10113K - 5062 128,2048 ctlblk 200 1600K - 200 ramdisk 1 4096K - 1 acpidev 52 4K - 52 64 isadev 9 2K - 9 128 kbdmux 7 18K - 7 16,512,1024,2048 LED 8 1K - 8 16,128 cdev 7 2K - 7 256 ctlpool 532 142K - 532 32,512 sigio 6 1K - 11 64 filedesc 54 27K - 421738 32,512,4096 kenv 81 11K - 90 16,32,64,128 kqueue 10 12K - 185331 256,512,2048 proc-args 36 3K - 1149948 16,32,64,128,256 hhook 2 1K - 2 128 ithread 158 24K - 158 32,128,256 pci_link 16 2K - 16 64,128 acpi_perf 8 4K - 8 512 KTRACE 100 13K - 100 128 linker 163 36K - 177 16,32,64,128,256,512,2048,4096 lockf 29 3K - 1725 64,128 loginclass 2 1K - 623 64 temp 90 15K - 694520 16,32,64,128,256,512,1024,2048,4096 devbuf 9337 43800K - 9703 16,32,64,128,256,512,1024,2048,4096 module 348 44K - 348 128 mtx_pool 2 16K - 2 USBdev 41 5K - 41 64,128,512 USB 66 150K - 67 16,32,64,128,256,2048 pmchooks 1 1K - 1 128 subproc 394 386K - 355758 512,4096 proc 2 16K - 2 session 24 3K - 25763 128 pgrp 26 4K - 29780 128 cred 142 23K - 25044950 64,256 uidinfo 6 3K - 1956 128,2048 plimit 15 4K - 8277 256 CAM dev queue 6 1K - 6 128 sysctltmp 0 0K - 558631 16,32,64,128,256,4096 sysctloid 7553 377K - 7713 16,32,64,128 sysctl 0 0K - 422311 16,32,64 tidhash 1 16K - 1 callout 7 3584K - 7 umtx 1188 149K - 1188 128 p1003.1b 1 1K - 1 16 SWAP 2 549K - 2 64 bus-sc 139 410K - 4850 16,32,64,128,256,512,1024,2048,4096 bus 1112 110K - 235870 16,32,64,128,256,1024,2048 devstat 8 17K - 8 32,4096 eventhandler 90 7K - 90 64,128 CAM XPT 47 27K - 165 16,32,64,128,1024,2048 kobj 222 888K - 373 4096 Per-cpu 1 1K - 1 32 ata_pci 2 1K - 2 64 rman 299 35K - 705 16,32,128 DEVFS1 103 52K - 120 512 sbuf 1 1K - 89180 16,32,64,128,256,512,1024,2048,4096 DEVFS3 125 32K - 161 256 stack 0 0K - 684 256 taskqueue 57 5K - 57 16,32,128 Unitno 14 1K - 392084 32,64 iov 0 0K - 862019 16,32,64,128,256,512 select 308 39K - 308 128 ioctlops 0 0K - 134561 16,32,64,128,256,512,1024 msg 4 30K - 4 2048,4096 sem 4 106K - 4 2048,4096 shm 7 32K - 3755 2048 tty 20 20K - 742 1024,2048 pts 1 1K - 9 256 mbuf_tag 0 0K - 131438615 32,64,256 shmfd 1 8K - 1 pcb 28 157K - 95665 16,32,64,128,1024,2048,4096 soname 10 1K - 4335379 16,32,128 acl 0 0K - 1401 4096 vfscache 1 2048K - 1 cl_savebuf 0 0K - 1181 64 vfs_hash 1 1024K - 1 DEVFS 23 1K - 24 16,128 vnodes 2 1K - 5 64,256 DEVFSP 0 0K - 5 64 mount 16 1K - 86 16,32,64,128,256 vnodemarker 0 0K - 6928 512 BPF 19 3K - 44 16,128,512 ether_multi 49 3K - 62 16,64 ifaddr 108 34K - 108 32,512,4096 ifnet 20 39K - 21 128,256,2048 clone 7 28K - 7 4096 arpcom 9 1K - 9 16 lltable 66 22K - 11054 256,512 vlan 6 1K - 6 64,128 routetbl 495883 15507K - 8049399 32,64,128,256,512 netgraph_msg 0 0K - 14 64,128,256,1024 netgraph_node 13 4K - 26 128,256 netgraph_hook 6 1K - 6 128 netgraph 13 2053K - 13 16,64,128 netgraph_ksock 1 1K - 1 128 netgraph_parse 0 0K - 2 16 igmp 19 5K - 19 256 ip_moptions 2 1K - 2 64,256 in_multi 7 2K - 7 256 in_mfilter 1 1K - 1 1024 dummynet 3 3K - 3 512,1024 dummynet 30 10K - 1227854 256,512 IpFw/IpAcct 46 8K - 237 16,32,64,128,256,512,1024 ipfw_tbl 178 45K - 403 256 sctp_iter 0 0K - 4 256 sctp_ifn 6 1K - 6 128 sctp_ifa 37 5K - 37 128 sctp_vrf 1 1K - 1 64 sctp_a_it 0 0K - 4 16 hostcache 1 28K - 1 syncache 1 96K - 1 libalias 735259 93888K - 230506024 128 sctpnat 93 1240K - 93 rpc 2 1K - 2 256 audit_evclass 179 6K - 218 32 jblocks 2 1K - 2 128,256 savedino 0 0K - 1520 256 sbdep 0 0K - 3440 64 jsegdep 8 1K - 34160 64 jseg 20 3K - 14850 128 jfreefrag 0 0K - 4364 128 jnewblk 0 0K - 21559 128 jmvref 0 0K - 12 128 jremref 0 0K - 4098 128 jaddref 0 0K - 4139 128 freedep 0 0K - 109 64 freework 2 1K - 5602 32,128 newdirblk 0 0K - 65 64 dirrem 0 0K - 3976 128 mkdir 0 0K - 128 128 diradd 0 0K - 4011 128 freefile 0 0K - 1958 64 freeblks 1 1K - 3994 128 freefrag 1 1K - 4364 128 indirdep 0 0K - 1363 128 newblk 5 129K - 21560 256 bmsafemap 3 9K - 8579 256 inodedep 3 1025K - 9950 512 pagedep 1 128K - 1034 256 ufs_dirhash 1500 353K - 1503 16,32,64,128,256,512 ufs_mount 3 21K - 3 512,4096 vm_pgdata 2 129K - 2 128 UMAHash 3 17K - 8 512,1024,2048,4096 pfs_nodes 21 6K - 21 256 memdesc 1 4K - 1 4096 GEOM 43 9K - 3452 16,32,64,128,256,512,1024,2048 atkbddev 2 1K - 2 64 entropy 1024 64K - 1024 64 acpiintr 1 1K - 1 64 acpica 5101 557K - 812080 16,32,64,128,256,512,1024,2048,4096 acpitask 1 2K - 1 2048 CAM queue 20 1K - 96 16,32 apmdev 1 1K - 1 128 feeder 7 1K - 7 32 madt_table 0 0K - 1 4096 raid_data 0 0K - 90 32,128,256 acpisem 18 3K - 18 128 qpidrv 1 1K - 1 16 CAM SIM 6 2K - 6 256 io_apic 1 2K - 1 2048 md_nvidia_data 0 0K - 15 512 MCA 18 3K - 18 64,128 msi 24 3K - 24 128 nexusdev 4 1K - 4 16 CAM periph 4 1K - 22 16,32,64,128,256 md_sii_data 0 0K - 15 512 netflow_hash 1 3072K - 1 netflow_general 1 1K - 1 256 netgraph_sock 0 0K - 22 128 netgraph_path 0 0K - 11 16 vmstat -z: root@router:/usr/ports/net-mgmt # vmstat -z ITEM SIZE LIMIT USED FREE REQ FAIL SLEEP UMA Kegs: 208, 0, 91, 11, 91, 0, 0 UMA Zones: 1408, 0, 91, 1, 91, 0, 0 UMA Slabs: 568, 0, 6423, 3, 10141, 0, 0 UMA RCntSlabs: 568, 0, 11978, 6, 11978, 0, 0 UMA Hash: 256, 0, 0, 15, 3, 0, 0 16 Bucket: 152, 0, 187, 13, 187, 0, 0 32 Bucket: 280, 0, 297, 11, 297, 1, 0 64 Bucket: 536, 0, 286, 1, 286, 237, 0 128 Bucket: 1048, 0, 13191, 0, 13191,3418, 0 VM OBJECT: 232, 0, 46993, 1903, 8892198, 0, 0 MAP: 232, 0, 7, 25, 7, 0, 0 KMAP ENTRY: 120, 150629, 50, 911, 13583, 0, 0 MAP ENTRY: 120, 0, 1070, 3363,27882008, 0, 0 fakepg: 120, 0, 0, 0, 0, 0, 0 mt_zone: 4112, 0, 333, 10, 333, 0, 0 16: 16, 0, 3483, 1053, 2621681, 0, 0 32: 32, 0, 168845, 332721,10714235, 0, 0 64: 64, 0, 5837, 2619,15384054, 0, 0 128: 128, 0, 660702, 124241,234395712, 0, 0 256: 256, 0, 909, 1536,145570403, 0, 0 512: 512, 0, 1497, 1079, 1643235, 0, 0 1024: 1024, 0, 61, 391, 429536, 0, 0 2048: 2048, 0, 5137, 1157, 132677, 0, 0 4096: 4096, 0, 313, 457, 501360, 0, 0 Files: 80, 0, 123, 822, 7661265, 0, 0 TURNSTILE: 136, 0, 595, 145, 595, 0, 0 umtx pi: 96, 0, 0, 0, 0, 0, 0 MAC labels: 40, 0, 0, 0, 0, 0, 0 PROC: 1184, 0, 53, 286, 355614, 0, 0 THREAD: 1128, 0, 457, 137, 457, 0, 0 SLEEPQUEUE: 80, 0, 595, 188, 595, 0, 0 VMSPACE: 392, 0, 36, 274, 355424, 0, 0 cpuset: 72, 0, 138, 62, 154, 0, 0 audit_record: 960, 0, 0, 0, 0, 0, 0 mbuf_packet: 256, 0, 19008, 4416,6155966271, 0, 0 mbuf: 256, 0, 142, 2804,6004654979, 0, 0 mbuf_cluster: 2048, 524288, 23424, 6, 23424, 0, 0 mbuf_jumbo_page: 4096, 12800, 12, 251, 164465, 0, 0 mbuf_jumbo_9k: 9216, 6400, 0, 0, 0, 0, 0 mbuf_jumbo_16k: 16384, 3200, 0, 0, 0, 0, 0 mbuf_ext_refcnt: 4, 0, 0, 672, 24, 0, 0 NetGraph items: 72, 65540, 0, 232, 24, 0, 0 NetGraph data items: 72, 65540, 1, 695, 225163, 0, 0 g_bio: 232, 0, 0, 6352, 489755, 0, 0 ttyinq: 160, 0, 180, 396, 795, 0, 0 ttyoutq: 256, 0, 95, 190, 415, 0, 0 ata_request: 328, 0, 0, 228, 163270, 0, 0 ata_composite: 336, 0, 0, 0, 0, 0, 0 VNODE: 480, 0, 81600, 272, 796510, 0, 0 VNODEPOLL: 112, 0, 0, 0, 0, 0, 0 S VFS Cache: 108, 0, 60102, 27645, 539404, 0, 0 STS VFS Cache: 148, 0, 0, 0, 0, 0, 0 L VFS Cache: 328, 0, 24885, 11511, 288745, 0, 0 LTS VFS Cache: 368, 0, 0, 0, 0, 0, 0 NAMEI: 1024, 0, 0, 228,15400420, 0, 0 DIRHASH: 1024, 0, 5835, 113, 5837, 0, 0 NCLNODE: 568, 0, 0, 0, 0, 0, 0 Mountpoints: 792, 0, 2, 8, 2, 0, 0 pipe: 728, 0, 1, 219, 173033, 0, 0 ksiginfo: 112, 0, 329, 727, 20956, 0, 0 itimer: 344, 0, 0, 0, 0, 0, 0 KNOTE: 128, 0, 12, 597, 1042881, 0, 0 socket: 680, 25602, 48, 294, 1320341, 0, 0 unpcb: 240, 25600, 30, 370, 1005491, 0, 0 ipq: 56, 16443, 2, 817, 6834, 0, 0 udp_inpcb: 392, 25600, 3, 257, 120252, 0, 0 udpcb: 16, 25704, 3, 1341, 120252, 0, 0 tcp_inpcb: 392, 25600, 17, 753, 193952, 0, 0 tcpcb: 976, 25600, 13, 211, 193952, 0, 0 tcptw: 72, 5150, 4, 996, 162094, 0, 0 syncache: 152, 15375, 0, 375, 167992, 0, 0 hostcache: 136, 15372, 5, 275, 46, 0, 0 tcpreass: 40, 32844, 0, 756, 475, 0, 0 sackhole: 32, 0, 0, 505, 6, 0, 0 sctp_ep: 1376, 25600, 0, 0, 0, 0, 0 sctp_asoc: 2280, 40000, 0, 0, 0, 0, 0 sctp_laddr: 48, 80064, 0, 288, 36, 0, 0 sctp_raddr: 696, 80000, 0, 0, 0, 0, 0 sctp_chunk: 136, 400008, 0, 0, 0, 0, 0 sctp_readq: 104, 400032, 0, 0, 0, 0, 0 sctp_stream_msg_out: 112, 400026, 0, 0, 0, 0, 0 sctp_asconf: 40, 400008, 0, 0, 0, 0, 0 sctp_asconf_ack: 48, 400032, 0, 0, 0, 0, 0 ripcb: 392, 25600, 1, 119, 626, 0, 0 rtentry: 200, 0, 124151, 332096, 2944516, 0, 0 IPFW dynamic rule: 120, 0, 0, 0, 0, 0, 0 divcb: 392, 25600, 0, 0, 0, 0, 0 selfd: 56, 0, 471, 1419,63958350, 0, 0 SWAPMETA: 288, 116519, 0, 0, 0, 0, 0 FFS inode: 168, 0, 81572, 422, 796445, 0, 0 FFS1 dinode: 128, 0, 0, 0, 0, 0, 0 FFS2 dinode: 256, 0, 81572, 493, 796444, 0, 0 NetFlow IPv4 cache: 88, 262160, 0, 41383, 42641, 0, 0 ipfw: root@router:/usr/ports/net-mgmt # ipfw show 00005 635 100242 fwd 127.0.0.1,81 tcp from 172.16.0.0/16 to table(11) dst-port 80 in 00005 0 0 fwd 127.0.0.1,81 tcp from 10.1.0.0/16 to table(11) dst-port 80 in 00040 341889007 161876395028 allow ip from table(10) to any 00040 347049349 274047279431 allow ip from any to table(10) 00700 2531906895 1122393118392 nat tablearg ip from table(17) to any out 00800 17057919 1411615143 allow ip from table(14) to any out 00900 3155834296 3074908439384 nat tablearg ip from any to table(14) in 55000 246833 14353002 allow ip from any to any via lo0 65535 5605398849 4201104425474 allow ip from any to any Подозреваю дело в NAT, но что именно крутить? Edited March 28, 2013 by kirush Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
s.lobanov Posted March 28, 2013 А какие у вас таймауты на записи в xlat? И какие лимиты по сабскрайберам? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
kirush Posted March 28, 2013 А как это посмотреть? :) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
mlevel Posted December 16, 2013 (edited) Поделюсь в этой теме своими результатами. Около 1.9 Gbps в пике. Shaping + NAT +Firewall + терминация VLAN (около 600). Только ipfw. # uname -a FreeBSD router 9.2-STABLE FreeBSD 9.2-STABLE #0: Mon Dec 2 19:08:41 EET 2013 root@router:/usr/obj/usr/src/sys/ROUTER amd64 # grep -i cpu /var/run/dmesg.boot CPU: Intel(R) Xeon(R) CPU X3450 @ 2.67GHz (2666.69-MHz K8-class CPU) FreeBSD/SMP: Multiprocessor System Detected: 4 CPUs Конфиг ядра: # Custom parametrs device lagg device ichwd options HZ=8000 options LIBALIAS options IPFIREWALL options IPFIREWALL_FORWARD options IPFIREWALL_NAT options DUMMYNET options ZERO_COPY_SOCKETS options ROUTETABLES=4 options PANIC_REBOOT_WAIT_TIME=16 options SC_DISABLE_REBOOT options SC_HISTORY_SIZE=10000 ifconfig_igb0="-rxcsum -txcsum -tso -lro up" ifconfig_igb1="-rxcsum -txcsum -tso -lro up" ifconfig_igb2="-rxcsum -txcsum -tso -lro up" ifconfig_igb3="-rxcsum -txcsum -tso -lro up" # cat /boot/loader.conf # Main loader_logo="beastie" autoboot_delay=3 # IGB tuning hw.igb.rxd=4096 hw.igb.txd=4096 hw.igb.rx_process_limit=4096 hw.igb.max_interrupt_rate=32000 hw.igb.enable_msix=1 hw.igb.lro=0 hw.igb.fc_setting=0 # EM tuning hw.em.rxd=4096 hw.em.txd=4096 hw.em.rx_process_limit=4096 hw.em.rx_int_delay=200 hw.em.tx_int_delay=200 hw.em.rx_abs_int_delay=4000 hw.em.tx_abs_int_delay=4000 hw.em.enable_msix=1 hw.em.fc_setting=0 # IXBGE tuning hw.ix.rxd=4096 hw.ix.txd=4096 hw.ix.num_queues=4 hw.ix.rx_process_limit=4096 hw.ix.tx_process_limit=4096 hw.ix.max_interrupt_rate=40000 hw.ix.lro=0 hw.ix.fc_setting=0 hw.ix.enable_msix=1 # Networking net.isr.maxthreads=4 net.isr.bindthreads=1 net.inet.tcp.tcbhashsize=32768 net.link.ifqmaxlen=10240 net.isr.defaultqlimit=8192 net.inet.tcp.syncache.hashsize=4096 net.inet.tcp.syncache.bucketlimit=100 # HW hw.intr_storm_threshold=9000 # cat /etc/sysctl.conf # FlowControll OFF - igb, em, ix dev.igb.0.fc=0 dev.igb.1.fc=0 dev.igb.2.fc=0 dev.igb.3.fc=0 dev.em.0.fc=0 dev.em.1.fc=0 # TCP/IP stack net.inet.ip.forwarding=1 net.inet.ip.fastforwarding=1 net.inet.tcp.blackhole=2 net.inet.udp.blackhole=0 net.inet.ip.redirect=0 net.inet.tcp.delayed_ack=0 net.inet.tcp.recvbuf_max=4194304 net.inet.tcp.sendbuf_max=4194304 net.inet.tcp.sack.enable=0 net.inet.tcp.drop_synfin=1 net.inet.tcp.nolocaltimewait=1 net.inet.ip.sourceroute=0 net.inet.ip.accept_sourceroute=0 net.inet.udp.recvspace=64080 net.inet.ip.rtmaxcache=1024 net.inet.ip.intr_queue_maxlen=5120 kern.ipc.nmbclusters=824288 kern.ipc.maxsockbuf=83886080 net.inet.tcp.recvspace=95536 net.inet.tcp.sendspace=95536 net.local.stream.recvspace=32768 net.local.stream.sendspace=32768 kern.ipc.somaxconn=32768 net.inet.tcp.maxtcptw=65535 # IPFW net.inet.ip.fw.one_pass=1 net.inet.ip.fw.dyn_max=65535 net.inet.ip.fw.dyn_buckets=2048 net.inet.ip.fw.dyn_syn_lifetime=10 net.inet.ip.fw.dyn_ack_lifetime=120 net.inet.ip.fw.verbose=0 # Dummynet net.inet.ip.dummynet.io_fast=1 net.inet.ip.dummynet.hash_size=65536 net.inet.ip.dummynet.pipe_slot_limit=1000 # ICMP net.inet.icmp.icmplim=3000 net.inet.icmp.drop_redirect=1 net.inet.icmp.log_redirect=0 net.inet.icmp.bmcastecho=0 net.inet.icmp.maskrepl=0 # /dev/random optimize networking kern.random.sys.harvest.ethernet=0 kern.random.sys.harvest.point_to_point=0 kern.random.sys.harvest.interrupt=0 net.inet.raw.maxdgram=65534 net.inet.raw.recvspace=65534 net.raw.recvspace=65534 net.raw.sendspace=65534 net.route.netisr_maxqlen=8192 net.inet.ip.intr_queue_maxlen=10240 net.inet.ip.portrange.first=1024 # ipfw show 00101 24814 2384582 allow ip from any to any via lo0 00201 262728 13057576 deny tcp from any to not 10.100.104.6 dst-port 25,137-139,445 00241 1999061735 627713536264 nat tablearg ip from table(12) to not table(9) out xmit lagg1 00242 2788823848 3143366074955 nat tablearg ip from not table(9) to table(11) in recv lagg1 00251 291178711 212884946786 allow ip from any to any via lagg1 00255 7513725 531692785 allow ip from table(2) to 10.100.104.0/21 via vlan* 00256 7355635 2235097939 allow ip from 10.100.104.0/21 to table(2) via vlan* 00261 396678 32698268 deny ip from table(2) to table(2) 00301 10089994 1070218474 allow ip from table(3) to table(3) 00401 540457 42705181 deny ip from any to 192.168.0.0/21 00441 0 0 allow ip from 192.168.104.8 80,443 to any via vlan* 00442 3 152 allow ip from any to 192.168.104.8 dst-port 80,443 via vlan* 00451 11112 701467 allow ip from table(8) to table(10) dst-port 80,443,53 in recv vlan* 00452 11090 5185957 allow ip from table(10) to table(8) out xmit vlan* 00471 600846 43057477 fwd 192.168.204.10 tcp from table(8) to not table(10) dst-port 80,443 in recv vlan* 00472 710543 64824528 allow tcp from any to table(8) src-port 80,443 out xmit vlan* 00901 2883353902 3299903223322 pipe tablearg ip from any to table(20) out xmit vlan* 00902 2110356757 671776115919 pipe tablearg ip from table(21) to any in recv vlan* 65535 719976 42232675 deny ip from any to any # top -aSPHI last pid: 4047; load averages: 10.25, 10.63, 10.22 up 0+05:35:16 21:12:36 133 processes: 14 running, 87 sleeping, 32 waiting CPU 0: 0.0% user, 0.0% nice, 12.5% system, 72.1% interrupt, 15.4% idle CPU 1: 0.0% user, 0.0% nice, 10.6% system, 75.0% interrupt, 14.4% idle CPU 2: 0.0% user, 0.0% nice, 7.7% system, 77.9% interrupt, 14.4% idle CPU 3: 0.0% user, 0.0% nice, 12.5% system, 76.0% interrupt, 11.5% idle Mem: 69M Active, 42M Inact, 512M Wired, 70M Buf, 7232M Free Swap: 8192M Total, 8192M Free PID USERNAME PRI NICE SIZE RES STATE C TIME WCPU COMMAND 0 root -92 0 0K 480K CPU2 2 110:17 42.63% [kernel{dummynet}] 12 root -92 - 0K 640K RUN 3 57:00 25.73% [intr{irq277: igb2:que}] 12 root -92 - 0K 640K RUN 3 56:25 23.34% [intr{irq282: igb3:que}] 12 root -92 - 0K 640K RUN 0 56:54 23.29% [intr{irq279: igb3:que}] 12 root -92 - 0K 640K CPU2 2 54:11 22.75% [intr{irq276: igb2:que}] 12 root -92 - 0K 640K WAIT 2 54:34 22.12% [intr{irq281: igb3:que}] 12 root -92 - 0K 640K RUN 0 56:14 21.29% [intr{irq274: igb2:que}] 12 root -92 - 0K 640K WAIT 1 55:47 20.90% [intr{irq280: igb3:que}] 12 root -92 - 0K 640K WAIT 1 54:16 19.78% [intr{irq275: igb2:que}] 11 root 155 ki31 0K 64K RUN 0 117:28 17.09% [idle{idle: cpu0}] 12 root -92 - 0K 640K WAIT 2 39:48 16.94% [intr{irq266: igb0:que}] 12 root -92 - 0K 640K WAIT 0 40:40 16.50% [intr{irq264: igb0:que}] 11 root 155 ki31 0K 64K CPU1 1 110:02 15.97% [idle{idle: cpu1}] 12 root -92 - 0K 640K RUN 1 39:26 15.48% [intr{irq265: igb0:que}] 12 root -92 - 0K 640K WAIT 1 41:18 15.43% [intr{irq270: igb1:que}] 12 root -92 - 0K 640K CPU3 3 40:11 15.04% [intr{irq272: igb1:que}] 11 root 155 ki31 0K 64K RUN 2 112:10 14.55% [idle{idle: cpu2}] 12 root -92 - 0K 640K RUN 3 40:46 14.55% [intr{irq267: igb0:que}] 12 root -92 - 0K 640K WAIT 0 41:08 14.36% [intr{irq269: igb1:que}] 12 root -92 - 0K 640K WAIT 2 39:10 13.62% [intr{irq271: igb1:que}] 11 root 155 ki31 0K 64K RUN 3 108:29 13.53% [idle{idle: cpu3}] 8009 root 20 0 33428K 8136K select 0 2:42 0.44% /usr/local/sbin/snmpd -p /var/run/net_snmpd.pid -r # netstat -hw1 input (Total) output packets errs idrops bytes packets errs bytes colls 764k 0 0 547M 804k 2 704M 0 779k 0 0 555M 824k 3 720M 0 785k 0 0 564M 829k 1 731M 0 787k 0 0 569M 831k 0 735M 0 785k 0 0 568M 833k 0 738M 0 785k 0 0 562M 830k 2 728M 0 762k 0 0 549M 806k 0 711M 0 Edited December 16, 2013 by mlevel Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted December 17, 2013 device lagg device ichwd В ядре не нужны, прекрасно грузятся модулями из rc скрипта: /etc/rc.conf[.local] kld_list="smbus smb amdtemp amdsbwd if_em accf_dns accf_http cc_htcp" # Kernel modules to load after local disks are mounted options DUMMYNET Тоже можно грузить модулем. options ZERO_COPY_SOCKETS Больше нет такой опции. net.isr.maxthreads=4 можно поставить 1024 или любое число больше ядер в системе система выставит количество ядер процов. hw.em.rx_int_delay=200 hw.em.tx_int_delay=200 hw.em.rx_abs_int_delay=4000 hw.em.tx_abs_int_delay=4000 можно крутить через сисцтл. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted December 17, 2013 net.inet.tcp. net.inet.udp. net.raw. net.inet.raw. net.inet.icmp. net.local. kern.ipc.somaxconn=32768 kern.ipc.maxsockbuf=83886080 net.inet.ip.portrange.first=1024 Всё это на роутинг/нат не влияет, это настройки касающиеся трафика на саму систему. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
nshut Posted December 17, 2013 Подозреваю дело в NAT, но что именно крутить? фря 9.2 работает примерно в таком же режиме, нат и т.д. в определенное время (мониторю все ядра) возникает скачек нагрузки на одно два ядра, и через время проходит само собой. из всего что мониторю, стейты в этот момент не увеличиваются, ппс и объем трафика такой же. вываливал весь трафик по нетфлоу и отдельный файл и прогонял через функции libalias, в эти моменты хэш таблица назначений и источника определенной истансы разрастается не пропорционально. т.е. допустим в истанс 1 таблица размером 100-200, а 2ая 900 и выше. Увеличил размеры таблиц в либалиас по максимуму, проц до 100% взлетать перестал, анализ прекратил. Видимо реакция на торент или вирусы определенные, но явно функция расчета хэш не оптимальная. Наблюдая вижу также неравномерность но система не умирает по загрузке. Может у вас не так, но у меня так :) руки не доходят посмотреть как контрэк в линухе описан, но явно получше чем во фряхе. Не обижайтесь, я сам обожаю фряху, но если кто-нибудь не перепишет ядро, либо не доработает netmap как nat сервер на большой нагрузке приходится жертвовать чем то. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted December 17, 2013 В 02 ночи по крону система запускает какие то свои скрипты для чего там, в мане наверное написано для чего, и они грузят систему. Это дефолтное поведение всех фрей. Может у вас такие скачки нагрузки как раз из того что крон чего своё запускает для обслуживания системы? Ядро переписывать не нужно, на самом деле. Я иногда думаю попробовать свой ng_nat написать, только не знаю зачем мне это :) Может соберусь, если не заморачиваться на всякие фтп, гре и прочее то там не сложно и за пару вечеров оно оживёт. Ну и вопрос тестирования с нагрузками тоже будет актуален - где взять тестеров? Можете пока попробовать фрю 10, там пф теперь многоядерный, и там своя реализация ната, может быстрее будет. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
pashaumka Posted December 17, 2013 агга - и столкнуться с тем-же, чем и я :) хотя..... Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
nshut Posted December 18, 2013 Может у вас такие скачки нагрузки как раз из того что крон чего своё запускает для обслуживания системы? увы нет. время не ноч, зависимости нет. самое сложное задание это бэкап сервера, длится 3 секунды. Я иногда думаю попробовать свой ng_nat написать, только не знаю зачем мне это :) Есть подозрение, что ng_nat будет грузить систему также, в принципе нат бсдевый те ноды и использует, разве что переписать в корне весь нат. Пробывал подымать кучу нод для нарезки пользователям полисинга. Скажем так: поведение ну очень неадекватное системы. Ноды когда их много реагируют по разному и бывает просто не реагируют даже на управляющие команды, пару нод убил только выгрузив модуль ядра. Хотя может уже пропатчили, но пока забросил и не проверял больше. Ну и вопрос тестирования с нагрузками тоже будет актуален - где взять тестеров? фрибсд нагрузку могу потестировать до 1,5 гига трафика, остальное у меня на линухе, фряху 10ую не пробовал. Нет свободного сервера для внедрения в работающую систему. А модули потестить запросто. 10ку не пробовал, потому что помню тесты 9.1 release когда он вышел. Слетание маршрутов при использовании ПФ, и замена дефолтного маршрута на адрес сети из сети которая даже не принадлежит этому серверу, это была жесть и тот же пинг под 3к. Данный баг многие описали в мэйллисте, результат поправили через пол года и статус бага был не критичен, да и нетмап апи стали писать из-за того что в последнее время ну очень теряется производительность систем изза того что в ядре накручено. Раньше сказав "работает в ядре" звучало престижно, круто и быстро, сейчас смотрю модули юзерспейс как фри так и линуха уже по грамотней пишут Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
hsvt Posted December 18, 2013 options ZERO_COPY_SOCKETS Больше нет такой опции. На 9.2 в /usr/src/sys/amd64/conf/LINT есть же ? cat /usr/src/sys/amd64/conf/LINT | grep ZERO_COPY options ZERO_COPY_SOCKETS И собирается с ней. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted December 18, 2013 Пардон, в девятке ещё есть. В десятке уже нет: http://www.freebsd.org/cgi/man.cgi?query=zero_copy&apropos=0&sektion=0&manpath=FreeBSD+10-current&arch=default&format=html Но смысла от неё для роутинга/ната точно нет, ибо до сокетов такой траф не долетает. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted December 18, 2013 Есть подозрение, что ng_nat будет грузить систему также, в принципе нат бсдевый те ноды и использует, разве что переписать в корне весь нат. Если сяду то и будет с нуля, без всяких либалис и пр старого порно. Пробывал подымать кучу нод для нарезки пользователям полисинга. Скажем так: поведение ну очень неадекватное системы. Ноды когда их много реагируют по разному и бывает просто не реагируют даже на управляющие команды, пару нод убил только выгрузив модуль ядра. Хотя может уже пропатчили, но пока забросил и не проверял больше. Может памяти не хватало или система х32 - там не особо. Данный баг многие описали в мэйллисте, результат поправили через пол года и статус бага был не критичен, да и нетмап апи стали писать из-за того что в последнее время ну очень теряется производительность систем изза того что в ядре накручено. Раньше сказав "работает в ядре" звучало престижно, круто и быстро, сейчас смотрю модули юзерспейс как фри так и линуха уже по грамотней пишут Ситуация намного сложнее. Луиджи академик, и нетмап ему очень интересен с точки зрения демонстрации и обучения, и это великолепный инструмент. К сожалению, он оказался слишком хорош :) Те в ядро фри/линуха патчи/коммиты идут очень осторожно, ещё хуже там с выбрасыванием старого кода. Теперь же можно послать всех на три, даже две буквы и наваять своё довольно производительное, переносимое и лёгкое в поддержке и отладке решение. Боюсь что постепенно развитие нетмапа сильно много перетянет активных писателей и развития в ядрах не будет. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
mlevel Posted December 21, 2013 Ivan_83, огромное Вам спасибо за замечания! А чем собственно лучше грузить модулем? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted December 21, 2013 Если у вас генерик ядро, то вам не потребуется его пересобирать. Если кастомное - то в нём не будет ничего лишнего, а всё что нужно (но не требуется для загрузки) можно подгрузить потом модулями. Так же, это удобно если эксперементировать с кодом: пересобрал, выгрузил модуль, установил новый, загрузил - те не требуется пересобирать всё ядро и перезагружаться. А всякие сетевухи и вочдоги вообще могут часто меняться в месте с платформой, их всяко проще грузить модулями из rc.conf чем пересобирать ядро каждый раз либо раздувать ядро ненужными дровами. Я у вас с лоадера тоже полезного почерпнул :) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
mlevel Posted December 21, 2013 Ivan_83, еще раз спасибо. Но как видно на пике уже начинаются ошибки в выводе netstat, наверное CPU слабоват. Поетому разделил нагрузку на два сервера. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Dyr Posted January 28, 2014 (edited) По старой доброй традиции "настоящиие фидошники сабжа не меняют" присоединюсь-ка к вашей беседе, коллеги. Что-то стал озадачил меня сегодня вопрос, правильно ли, что мой сервер при 150 kpps NAT и shaping почти в полке по процессору и interrupts? #uname -a FreeBSD nata2 10.0-RELEASE FreeBSD 10.0-RELEASE #0 r260789: Thu Jan 16 22:34:59 UTC 2014 root@snap.freebsd.org:/usr/obj/usr/src/sys/GENERIC amd64 # grep CPU /var/run/dmesg.boot| head -n 2 CPU: Intel(R) Xeon(R) CPU E31270 @ 3.40GHz (3392.36-MHz K8-class CPU) FreeBSD/SMP: Multiprocessor System Detected: 4 CPUs Ядро GENERIC # cat /boot/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.igb.max_interrupt_rate=32000 hw.igb.rx_process_limit=-1 hw.igb.rxd=4096 hw.igb.txd=4096 net.graph.maxdata=16384 net.inet.ip.fw.default_to_accept=1 net.isr.bindthreads=1 net.isr.maxthreads=8 zfs_load="YES" # cat /etc/sysctl.conf dev.em.0.rx_processing_limit=1000 dev.em.1.rx_processing_limit=1000 dev.igb.0.rx_processing_limit=4096 dev.igb.1.rx_processing_limit=4096 dev.igb.2.rx_processing_limit=4096 dev.igb.3.rx_processing_limit=4096 kern.corefile="/var/tmp/%U/%N.core" kern.ipc.maxsockbuf=2097152 kern.ipc.somaxconn=4096 kern.timecounter.hardware=HPET net.inet.ip.dummynet.io_fast=1 net.inet.ip.fastforwarding=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.process_options=1 net.inet.ip.redirect=0 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.udp.blackhole=1 net.inet.udp.maxdgram=57344 net.inet.udp.recvspace=65228 net.raw.recvspace=64000 net.raw.sendspace=64000 # ipfw show 00010 5192 376429 deny ip from any to any not verrevpath in via lagg0 00020 0 0 count log ip from any to any not antispoof in 00100 70540 5148299 allow ip from 109.71.176.0/24 to not 10.52.0.0/16,10.53.0.0/16,10.54.0.0/16 00250 212 17139 deny ip from 10.52.0.0/16,10.53.0.0/16,10.54.0.0/16 to 10.90.90.0/23,10.99.99.0/24,192.168.254.0/24 00300 95161 45519552 allow ip from 10.90.90.0/23,10.99.99.0/24,192.168.254.0/24 to 10.90.90.0/23,10.99.99.0/24,192.168.254.0/24 00500 60 4224 allow ip from 10.78.76.0/24,10.78.77.0/24 to 10.78.76.0/24,10.78.77.0/24 00600 118873 56413582 allow ip from 10.78.78.0/24 to any 00601 87634 7038260 allow ip from any to 10.78.78.0/24 01200 0 0 allow udp from 217.119.20.194 to me dst-port 161 keep-state // Allow TheDude SNMP queries 01460 205430 11936724 allow ip from 10.52.0.0/16,10.53.0.0/16,10.54.0.0/16 to 10.52.0.0/16,10.53.0.0/16,10.54.0.0/16,217.119.16.0/20,93.92.199.0/24,109.71.176.0/21 // Local traffic 01470 43516 18551835 allow ip from 10.52.0.0/16,10.53.0.0/16,10.54.0.0/16,217.119.16.0/20,93.92.199.0/24,109.71.176.0/21 to 10.52.0.0/16,10.53.0.0/16,10.54.0.0/16,217.119.16.0/20,93.92.199.0/24,109.71.176.0/21 // Local traffic 01500 660116944 284369970248 skipto 3000 ip from table(1) to any // Skip deny rule by allowed ips 01550 90 3864 allow ip from 10.52.0.0/16,10.53.0.0/16,10.54.0.0/16 to table(3) // Skip deny rule by always allowed destinations 01570 36057 2575201 fwd 127.0.0.1,8080 tcp from 10.52.0.0/16,10.53.0.0/16,10.54.0.0/16 to any dst-port 80,443 { recv vlan22 or recv vlan21 } // Make redirect to blocked page 01600 24334 1383896 deny ip from 10.52.0.0/16,10.53.0.0/16,10.54.0.0/16 to not me in // Deny all another clients ips 01700 343 20568 allow ip from me to any out setup keep-state // My traffic 02000 14979 909916 allow icmp from me to any icmptypes 0,3,4,8,11 // Allow ICMP 02000 5 160 allow icmp from any to me icmptypes 0,3,4,8,11 // Allow ICMP 02300 3466 233859 allow tcp from any 21 to me keep-state // Allow incoming FTP 02400 0 0 unreach filter-prohib log ip from any to me { recv vlan22 or recv vlan21 } 02500 0 0 fwd 127.0.0.1 tcp from table(2) to any dst-port 80 { recv vlan22 or recv vlan21 } // Make redirect to reminder page 03000 423761621 468751566967 pipe tablearg ip from any to table(4) { xmit vlan22 or xmit vlan21 } // Incoming traffic shaping 03000 328138569 142141315154 pipe tablearg ip from table(5) to any xmit lagg0 // Outgoing traffic shaping 03200 332595768 142457212601 allow ip from table(1) to any { recv vlan22 or recv vlan21 } // Allow nat client to go in 03500 442351736 471566195575 allow ip from any to 10.52.0.0/16,10.53.0.0/16,10.54.0.0/16,217.119.16.0/20,93.92.199.0/24,109.71.176.0/21 // Allow all to nat clients 65530 1925 218915 unreach filter-prohib ip from any to any { recv vlan22 or recv vlan21 } 65530 1 96 deny ip from any to any 65535 1 96 allow ip from any to any # cat /etc/pf.conf ext_if="lagg0" int_if_1="vlan22" int_if_2="vlan21" dst_nat1="109.71.177.128/25" dst_nat2="109.71.177.0/25" table <src-nat> persist file "/etc/pf.src-nat" table <our-nets> const { 80.249.176.0/20, 93.92.192.0/21, 109.71.176.0/21, 217.119.16.0/20 } table <allowed-spammers> persist { 10.52.249.24 } table <always_allowed_dst> persist { 84.204.97.154, 213.180.204.32, 195.95.218.31, 195.95.218.30 } set limit { states 10000000, frags 800000, src-nodes 100000, table-entries 500000} set state-policy if-bound set optimization aggressive set ruleset-optimization profile set timeout { frag 10, tcp.established 3600, src.track 30 } set block-policy drop set fingerprints "/etc/pf.os" set require-order no set hostid 2 set skip on {lo0, em0, pfsync0} table <spammers> persist pass in quick on $int_if_1 proto tcp from <allowed-spammers> to any port smtp flags S/SAFR keep state pass in quick on $int_if_2 proto tcp from <allowed-spammers> to any port smtp flags S/SAFR keep state pass in on $int_if_1 proto tcp from any to any port smtp flags S/SAFR keep state \ (max-src-conn 15, max-src-conn-rate 15/30, overload <spammers> flush global) block return-icmp (host-prohib) log quick proto tcp from <spammers> to any port smtp pass in on $int_if_2 proto tcp from any to any port smtp flags S/SAFR keep state \ (max-src-conn 15, max-src-conn-rate 15/30, overload <spammers> flush global) block return-icmp (host-prohib) log quick proto tcp from <spammers> to any port smtp pass in quick on $int_if_1 all no state allow-opts tag NAT1 label "$nr:NAT1" pass in quick on $int_if_2 all no state allow-opts tag NAT2 label "$nr:NAT2" binat-anchor "binat" load anchor "binat" from "/etc/pf.anchor.binat" nat-anchor "ftp-proxy/*" rdr-anchor "ftp-proxy/*" rdr pass on $int_if_1 proto tcp from <src-nat> to any port 21 -> 127.0.0.1 port 8021 rdr pass on $int_if_2 proto tcp from <src-nat> to any port 21 -> 127.0.0.1 port 8021 rdr pass on $ext_if proto udp from 109.71.176.3 to 109.71.176.2 port 4784 -> 10.78.76.2 port 4784 nat on $ext_if from <src-nat> to any tagged NAT1 -> $dst_nat1 static-port source-hash #sticky-address nat on $ext_if from <src-nat> to any tagged NAT2 -> $dst_nat2 static-port source-hash #sticky-address nat on $ext_if from any to <always_allowed_dst> -> $dst_nat1 static-port source-hash #sticky-address binat on $ext_if from 10.78.78.2 to any -> 93.92.199.252 nat on $ext_if from 10.78.76.0/24 to any -> 109.71.176.2 static-port source-hash nat on $ext_if from 10.78.77.0/24 to any -> 93.92.199.254 nat on $ext_if from 10.78.78.0/24 to any -> $dst_nat1 static-port source-hash anchor "ftp-proxy/*" pass out quick proto tcp from any to any port 21 no state pass quick on $ext_if proto gre all no state #cat /etc/rc.local pfctl -d && pfctl -e echo "Binding igb(4) IRQs to CPUs" cpus=`sysctl -n kern.smp.cpus` vmstat -ai | sed -E '/^irq.*que/!d; s/^irq([0-9]+): igb([0-9]+):que ([0-9]+).*/\1 \2 \3/' |\ while read irq igb que do cpuset -l $(( ($igb+$que) % $cpus )) -x $irq done cpuset -l 0 -t $(procstat -t 0 | awk '/dummynet/ {print $2}') kldload ipmi kldload coretemp # top -aSCHIP last pid: 77009; load averages: 10.38, 10.48, 9.99 up 0+03:01:33 21:17:52 295 processes: 14 running, 246 sleeping, 35 waiting CPU 0: 0.0% user, 0.0% nice, 32.5% system, 67.5% interrupt, 0.0% idle CPU 1: 0.0% user, 0.0% nice, 0.0% system, 78.0% interrupt, 22.0% idle CPU 2: 0.0% user, 0.0% nice, 0.0% system, 79.6% interrupt, 20.4% idle CPU 3: 0.0% user, 0.0% nice, 1.2% system, 73.3% interrupt, 25.5% idle Mem: 6756K Active, 35M Inact, 1270M Wired, 6598M Free ARC: 759M Total, 228M MFU, 511M MRU, 121K Anon, 3520K Header, 16M Other Swap: 4096M Total, 4096M Free PID USERNAME PRI NICE SIZE RES STATE C TIME CPU COMMAND 11 root 155 ki31 0K 64K CPU3 3 142:46 30.27% [idle{idle: cpu3}] 11 root 155 ki31 0K 64K RUN 1 143:10 25.20% [idle{idle: cpu1}] 11 root 155 ki31 0K 64K RUN 2 142:18 25.10% [idle{idle: cpu2}] 12 root -92 - 0K 672K WAIT 1 9:03 21.68% [intr{irq265: igb0:que}] 12 root -92 - 0K 672K CPU3 3 9:51 21.19% [intr{irq279: igb3:que}] 12 root -92 - 0K 672K WAIT 2 8:52 20.65% [intr{irq282: igb3:que}] 12 root -92 - 0K 672K RUN 0 8:20 20.36% [intr{irq264: igb0:que}] 12 root -92 - 0K 672K WAIT 2 9:16 19.97% [intr{irq266: igb0:que}] 12 root -92 - 0K 672K WAIT 1 8:42 19.38% [intr{irq277: igb2:que}] 12 root -92 - 0K 672K RUN 0 7:40 19.38% [intr{irq280: igb3:que}] 12 root -92 - 0K 672K RUN 0 8:24 18.99% [intr{irq272: igb1:que}] 12 root -92 - 0K 672K WAIT 1 10:12 18.90% [intr{irq269: igb1:que}] 0 root -92 0 0K 2976K CPU0 0 20:36 18.55% [kernel{dummynet}] 12 root -92 - 0K 672K WAIT 2 9:30 18.46% [intr{irq274: igb2:que}] 12 root -92 - 0K 672K WAIT 3 9:28 18.07% [intr{irq271: igb1:que}] 12 root -92 - 0K 672K RUN 0 7:26 17.68% [intr{irq276: igb2:que}] 12 root -92 - 0K 672K WAIT 3 8:43 16.80% [intr{irq275: igb2:que}] 12 root -92 - 0K 672K RUN 1 8:41 15.97% [intr{irq281: igb3:que}] 12 root -92 - 0K 672K WAIT 3 8:58 15.48% [intr{irq267: igb0:que}] 12 root -92 - 0K 672K RUN 2 9:52 15.28% [intr{irq270: igb1:que}] 11 root 155 ki31 0K 64K RUN 0 128:46 6.79% [idle{idle: cpu0}] # netstat -hw1 input (Total) output packets errs idrops bytes packets errs bytes colls 684K 0 0 502M 698K 0 590M 0 681K 0 0 502M 693K 0 590M 0 680K 0 0 499M 696K 0 593M 0 663K 0 0 493M 676K 0 577M 0 # netstat -I lagg0 -dhw 1 input (lagg0) output packets errs idrops bytes packets errs bytes colls drops 158K 0 0 164M 121K 0 53M 0 0 162K 0 0 168M 121K 0 55M 0 0 164K 0 0 172M 121K 0 54M 0 0 158K 0 0 162M 122K 0 58M 0 0 # systat -v 5 [b] [/b] 1 users Load 12,19 11,10 10,50 28 янв 21:29 Mem:KB REAL VIRTUAL VN PAGER SWAP PAGER Tot Share Tot Share Free in out in out Act 49100 7156 641292 8640 6746216 count All 942968 8872 682764 34700 pages Proc: Interrupts r p d s w Csw Trp Sys Int Sof Flt ioflt 90325 total 26 120k 137 940 85k 66 cow atkbd0 1 zfod 1 ehci0 16 8,8%Sys 72,6%Intr 0,0%User 0,0%Nice 18,5%Idle ozfod 1 ehci1 23 | | | | | | | | | | %ozfod 1126 cpu0:timer ====+++++++++++++++++++++++++++++++++++++ daefr 363 igb0:que 0 dtbuf prcfr 6257 igb0:que 1 Namei Name-cache Dir-cache 213835 desvn 94 totfr 7206 igb0:que 2 Calls hits % hits % 10401 numvn react 6130 igb0:que 3 140 140 100 9654 frevn pdwak igb0:link 3 pdpgs 5980 igb1:que 0 Disks ada0 ada1 pass0 pass1 pass2 intrn 7402 igb1:que 1 KB/t 8,06 7,94 0,00 0,00 0,00 1309244 wire 6011 igb1:que 2 tps 14 14 0 0 0 7944 act 356 igb1:que 3 MB/s 0,11 0,11 0,00 0,00 0,00 36256 inact igb1:link %busy 0 0 0 0 0 cache 6117 igb2:que 0 6746216 free 8201 igb2:que 1 buf 357 igb2:que 2 8344 igb2:que 3 igb2:link 8696 igb3:que 0 359 igb3:que 1 7504 igb3:que 2 6509 igb3:que 3 igb3:link 1 em0 284 26 ahci0 288 1126 cpu3:timer 1126 cpu1:timer 1126 cpu2:timer Отдельно не понимаю, почему такое большое количество прерываний и context switching: #systat -v 5 1 users Load 12,54 11,72 10,90 28 янв 21:33 Mem:KB REAL VIRTUAL VN PAGER SWAP PAGER Tot Share Tot Share Free in out in out Act 49064 7156 641292 8640 6744992 count All 943628 8920 682828 34748 pages Proc: Interrupts r p d s w Csw Trp Sys Int Sof Flt ioflt 89922 total 26 120k 23 119 85k 61 cow atkbd0 1 zfod 1 ehci0 16 9,3%Sys 74,3%Intr 0,0%User 0,0%Nice 16,3%Idle ozfod 1 ehci1 23 | | | | | | | | | | %ozfod 1126 cpu0:timer =====+++++++++++++++++++++++++++++++++++++ daefr 118 igb0:que 0 dtbuf prcfr 6674 igb0:que 1 Namei Name-cache Dir-cache 213835 desvn 80 totfr 6398 igb0:que 2 Calls hits % hits % 10403 numvn react 5951 igb0:que 3 25 25 100 9656 frevn pdwak igb0:link 3 pdpgs 6220 igb1:que 0 Disks ada0 ada1 pass0 pass1 pass2 intrn 6844 igb1:que 1 KB/t 7,83 7,83 0,00 0,00 0,00 1310456 wire 6002 igb1:que 2 tps 14 14 0 0 0 7892 act 118 igb1:que 3 MB/s 0,11 0,11 0,00 0,00 0,00 36320 inact igb1:link %busy 1 0 0 0 0 cache 6219 igb2:que 0 6744992 free 8906 igb2:que 1 buf 118 igb2:que 2 9112 igb2:que 3 igb2:link 8496 igb3:que 0 118 igb3:que 1 7843 igb3:que 2 6252 igb3:que 3 igb3:link 1 em0 284 26 ahci0 288 1126 cpu3:timer 1126 cpu1:timer 1126 cpu2:timer Edited January 28, 2014 by Dyr Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted January 28, 2014 ifconfig что пишет? оффлоадинги лишние отключали на сетевушках? пробовали заюзать обработку в ISR? Пробовали фастфорвадинг? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Dyr Posted January 28, 2014 #ifconfig -a igb0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=403bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,VLAN_HWTSO> ether a0:36:9f:00:0e:d0 inet6 fe80::a236:9fff:fe00:ed0%igb0 prefixlen 64 scopeid 0x1 nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL> media: Ethernet 1000baseT <full-duplex> status: active igb1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=403bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,VLAN_HWTSO> ether a0:36:9f:00:0e:d0 inet6 fe80::a236:9fff:fe00:ed1%igb1 prefixlen 64 scopeid 0x2 nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL> media: Ethernet 1000baseT <full-duplex> status: active igb2: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=403bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,VLAN_HWTSO> ether a0:36:9f:00:0e:d3 inet6 fe80::a236:9fff:fe00:ed2%igb2 prefixlen 64 scopeid 0x3 nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL> media: Ethernet 1000baseT <full-duplex> status: active igb3: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=403bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,VLAN_HWTSO> ether a0:36:9f:00:0e:d3 inet6 fe80::a236:9fff:fe00:ed3%igb3 prefixlen 64 scopeid 0x4 nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL> media: Ethernet 1000baseT <full-duplex> status: active em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=4219b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MAGIC,VLAN_HWTSO> ether 00:25:90:51:6f:e9 inet 192.168.254.12 netmask 0xffffff00 broadcast 192.168.254.255 inet6 fe80::225:90ff:fe51:6fe9%em0 prefixlen 64 scopeid 0x5 nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL> media: Ethernet autoselect (1000baseT <full-duplex>) status: active em1: flags=8c02<BROADCAST,OACTIVE,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=4219b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MAGIC,VLAN_HWTSO> ether 00:25:90:51:6f:e8 nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL> media: Ethernet autoselect status: no carrier lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384 options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6> inet6 ::1 prefixlen 128 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x7 inet 127.0.0.1 netmask 0xff000000 nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL> lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=403bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,VLAN_HWTSO> ether a0:36:9f:00:0e:d0 inet 109.71.176.3 netmask 0xfffffffe broadcast 255.255.255.255 inet6 fe80::a236:9fff:fe00:ed0%lagg0 prefixlen 64 scopeid 0x8 nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL> media: Ethernet autoselect status: active laggproto lacp lagghash l2,l3,l4 laggport: igb1 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING> laggport: igb0 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING> lagg1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=403bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,VLAN_HWTSO> ether a0:36:9f:00:0e:d3 nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL> media: Ethernet autoselect status: active laggproto lacp lagghash l2,l3,l4 laggport: igb2 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING> laggport: igb3 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING> vlan21: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=303<RXCSUM,TXCSUM,TSO4,TSO6> ether a0:36:9f:00:0e:d3 inet 10.78.76.5 netmask 0xfffffffe broadcast 255.255.255.255 inet6 fe80::a236:9fff:fe00:ed3%vlan21 prefixlen 64 scopeid 0xa nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL> media: Ethernet autoselect status: active vlan: 21 parent interface: lagg1 vlan22: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=303<RXCSUM,TXCSUM,TSO4,TSO6> ether a0:36:9f:00:0e:d3 inet 10.78.76.3 netmask 0xfffffffe broadcast 255.255.255.255 inet6 fe80::a236:9fff:fe00:ed3%vlan22 prefixlen 64 scopeid 0xb nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL> media: Ethernet autoselect status: active vlan: 22 parent interface: lagg1 TSO на этом сервере не выключал, выключал на соседнем (полностью аналогичное железо, но включен HT в BIOS и FreeBSD 9.0-STABLE установлена). без видимых результатов. На соседнем же пробовал и fastforwarding, разницы не ощутил. Кстати, не напомнишь как просмотреть статистику, сколько через fastforward пролетело, а сколько мимо? ISR не пробовал, сейчас на нём так: #netstat -Q Configuration: Setting Current Limit Thread count 4 4 Default queue limit 256 10240 Dispatch policy direct n/a Threads bound to CPUs enabled n/a Protocols: Name Proto QLimit Policy Dispatch Flags ip 1 3000 flow default --- igmp 2 256 source default --- rtsock 3 256 source default --- arp 7 256 source default --- ether 9 256 source direct --- ip6 10 256 flow default --- Workstreams: WSID CPU Name Len WMark Disp'd HDisp'd QDrops Queued Handled 0 0 ip 0 1 71098 0 0 5 71103 0 0 igmp 0 0 0 0 0 0 0 0 0 rtsock 0 1 0 0 0 13 13 0 0 arp 0 0 525 0 0 0 525 0 0 ether 0 0 651488588 0 0 0 651488588 0 0 ip6 0 0 0 0 0 0 0 1 1 ip 0 1 50416 0 0 7 50423 1 1 igmp 0 0 0 0 0 0 0 1 1 rtsock 0 0 0 0 0 0 0 1 1 arp 0 0 46 0 0 0 46 1 1 ether 0 0 665653348 0 0 0 665653348 1 1 ip6 0 0 0 0 0 0 0 2 2 ip 0 1 78853 0 0 2 78855 2 2 igmp 0 0 0 0 0 0 0 2 2 rtsock 0 0 0 0 0 0 0 2 2 arp 0 0 40 0 0 0 40 2 2 ether 0 0 697791388 0 0 0 697791388 2 2 ip6 0 0 0 0 0 0 0 3 3 ip 0 2 42238 0 0 349 42587 3 3 igmp 0 0 0 0 0 0 0 3 3 rtsock 0 0 0 0 0 0 0 3 3 arp 0 0 45 0 0 0 45 3 3 ether 0 0 691545336 0 0 0 691545336 3 3 ip6 0 0 0 0 0 0 0 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted January 28, 2014 тсо я бы по выключал. Выше был толковый тюниг сетевух: http://forum.nag.ru/forum/index.php?showtopic=84027&view=findpost&p=911333 Ещё там экономия электричества случаем в биосе или поверд не активированы? netstat -s -p ip ... 845776411 packets forwarded (0 packets fast forwarded) ... Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Dyr Posted January 29, 2014 (edited) Меня во всех этих "толковых тюнингах" больше всего раздражает отсутствие чётких обьективных показателей, по которым бы можно было судить об их эффективности. За исключением совсем уж явных случаев - нехватки буферов, например. В общем и целом это напоминает шаманство в виде возведения деревянной вышки контроля АТС, если вы понимаете, о чём я. Edited January 29, 2014 by Dyr Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
DVM-Avgoor Posted January 29, 2014 Это же bsd, тут так принято! Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
snark Posted January 29, 2014 раздражает отсутствие чётких обьективных показателей, по которым бы можно было судить об их эффективности Тюним hw.em. - получаем уменьшение прерываний и общее увеличение производительности сетевой подсистемы - чем не показатель эффективности? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Dyr Posted January 29, 2014 Тюним hw.em. - получаем уменьшение прерываний и общее увеличение производительности сетевой подсистемы - чем не показатель эффективности? Это как раз одна из тех немногих крутилок, что имеют документацию (интеловскую) и мониторинг по ошибкам через sysctl dev.em. (и которая, если сузить речь о моей системе, уже сделано). Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
nshut Posted January 29, 2014 2 Dyr 12 root -92 - 0K 672K RUN 0 8:20 20.36% [intr{irq264: igb0:que}] 12 root -92 - 0K 672K WAIT 2 9:16 19.97% [intr{irq266: igb0:que}] 12 root -92 - 0K 672K WAIT 1 8:42 19.38% [intr{irq277: igb2:que}] 12 root -92 - 0K 672K RUN 0 7:40 19.38% [intr{irq280: igb3:que}] 12 root -92 - 0K 672K RUN 0 8:24 18.99% [intr{irq272: igb1:que}] 12 root -92 - 0K 672K WAIT 1 10:12 18.90% [intr{irq269: igb1:que}] 12 root -92 - 0K 672K WAIT 2 9:30 18.46% [intr{irq274: igb2:que}] 12 root -92 - 0K 672K WAIT 3 9:28 18.07% [intr{irq271: igb1:que}] 12 root -92 - 0K 672K RUN 0 7:26 17.68% [intr{irq276: igb2:que}] могу ошибаться, т.к. с 10 еще не работал, но из того, что видно похоже очереди не прибиты по прерываниям, а если и прибиты то не все. Отсюда как минимум неравномерная нагрузка на ядра Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...