Hawk128 Posted January 12, 2012 Posted January 12, 2012 (edited) Добрый вечер. Может кто-нибудь поделиться тюнингом под dummynet + freebsd 8.2 на скоростаях порядка 1G в каждую сторону? (Это брас с mpd5.5, но от тунелей нагрузка мала). Последнее время пользователи начали потихоньку жаловаться на скорость, хотя по нагрузке проблем не вижу (меньше 50% все cpu, HT убит в биосе). Система: SR1600UR + 2xX5650 + 82598 (10G). Забыл добавить тафифы скоростные 8, 16, 32, 64... и прочие мелкие. Edited January 12, 2012 by Hawk128 Вставить ник Quote
Hawk128 Posted January 12, 2012 Author Posted January 12, 2012 (edited) 1 users Load 2.79 2.72 2.83 Jan 12 23:47 Mem:KB REAL VIRTUAL VN PAGER SWAP PAGER Tot Share Tot Share Free in out in out Act 421996 8892 821288 8624 6906068 count All 569804 8892 1074676k 8624 pages Proc: Interrupts r p d s w Csw Trp Sys Int Sof Flt 221 cow 157k total 34 618k 2110 11k 133k 1055 986 471 zfod atapci0 18 ozfod uhci0 uhci 16.2%Sys 11.4%Intr 0.4%User 0.0%Nice 72.0%Idle %ozfod 2000 cpu0: time | | | | | | | | | | | daefr 12144 ix0:que 0 ========++++++ 355 prcfr 16580 ix0:que 1 39 dtbuf 1183 totfr 17517 ix0:que 2 Namei Name-cache Dir-cache 222953 desvn react 16653 ix0:que 3 Calls hits % hits % 162508 numvn pdwak 18207 ix0:que 4 604 604 100 55736 frevn pdpgs 18797 ix0:que 5 intrn 16650 ix0:que 6 Disks ad4 1308124 wire 16740 ix0:que 7 KB/t 16.00 330768 act ix0:link 2 tps 0 3537560 inact 2000 cpu2: time MB/s 0.01 24 cache 2000 cpu7: time %busy 0 6906036 free 2000 cpu4: time 1260528 buf 2000 cpu11: tim 2000 cpu5: time 2000 cpu10: tim 2000 cpu1: time 2000 cpu3: time 2000 cpu8: time 2000 cpu6: time 2000 cpu9: time Чуть позже ЧНН. Пробовал отключать шейпер - немного падает общая нагрузка, каналы оба в потолок (раза в полтора в ЧНН). Edited January 12, 2012 by Hawk128 Вставить ник Quote
vlad11 Posted January 12, 2012 Posted January 12, 2012 (edited) uname -a cat /etc/sysctl.conf pciconf -lv сетевой карты джамбо-фрейм на свитче включен? Edited January 12, 2012 by vlad11 Вставить ник Quote
Hawk128 Posted January 12, 2012 Author Posted January 12, 2012 gw01# uname -a FreeBSD gw01.local 8.2-STABLE FreeBSD 8.2-STABLE #0: Mon Oct 10 10:30:08 MSD 2011 hawk@gw01.local:/usr/obj/usr/src/sys/Hawk amd64 gw01# cat /etc/sysctl.conf # $FreeBSD: src/etc/sysctl.conf,v 1.8.34.1.6.1 2010/12/21 17:09:25 kensmith Exp $ # # This file is read when going to multi-user and its contents piped thru # ``sysctl'' to adjust kernel values. ``man 5 sysctl.conf'' for details. # # Uncomment this to prevent users from seeing information about processes that # are being run under another UID. #security.bsd.see_other_uids=0 # net.inet.ip.fw.one_pass=0 net.inet.icmp.icmplim=20000 # net.inet.tcp.blackhole=1 # net.inet.udp.blackhole=1 net.inet.ip.fastforwarding=1 net.inet.ip.dummynet.io_fast=1 kern.threads.max_threads_per_proc=5000 kern.ipc.nmbclusters=500000 kern.ipc.maxsockbuf=83886080 kern.maxfiles=2048000 kern.maxfilesperproc=200000 net.inet.tcp.sendspace=3217968 net.inet.tcp.recvspace=3217968 kern.ipc.somaxconn=32768 # net.graph.maxdgram=1024000 # net.graph.recvspace=1024000 net.graph.maxdgram=8388608 net.graph.recvspace=8388608 # for rtsock net.route.netisr_maxqlen=4096 # for other protocols (IP & PPPoE?) net.isr.defaultqlimit=4096 dev.ix.0.rx_processing_limit=4096 dev.ix.1.rx_processing_limit=4096 net.inet.ip.dummynet.hash_size=65535 net.inet.ip.fw.dyn_buckets=65535 gw01# cat /boot/loader.conf autoboot_delay="3" # alias_ftp_load="YES" net.isr.maxthreads=12 hw.igb.rx_process_limit=4096 hw.ix.rx_process_limit=4096 net.graph.maxalloc=65536 net.graph.maxdata=32768 vm.kmem_size=1G hw.igb.rxd=4096 hw.igb.txd=4096 hw.ix.rxd=4096 hw.ix.txd=4096 hw.igb.max_interrupt_rate=32000 ix0@pci0:2:0:0: class=0x020000 card=0xa01f8086 chip=0x10ec8086 rev=0x01 hdr=0x00 vendor = 'Intel Corporation' class = network subclass = ethernet ix1@pci0:2:0:1: class=0x020000 card=0xa01f8086 chip=0x10ec8086 rev=0x01 hdr=0x00 vendor = 'Intel Corporation' class = network subclass = ethernet джамбо-фрейм на свитче включен? Глобально выключен: DGS-3627G:admin#show jumbo_frame Command: show jumbo_frame Jumbo Frame Global State : Disable Maximum Jumbo Frame Size : 1536 Bytes Port Jumbo Frame State ------- -------------------- 1 Enable 2 Enable 3 Enable 4 Enable 5 Enable 6 Enable 7 Enable 8 Enable 9 Enable 10 Enable 11 Enable 12 Enable 13 Enable 14 Enable 15 Enable 16 Enable 17 Enable 18 Enable 19 Enable 20 Enable 21 Enable 22 Enable 23 Enable 24 Enable 25 Enable 26 Enable 27 Enable Вставить ник Quote
vlad11 Posted January 12, 2012 Posted January 12, 2012 (edited) Добавьте это: # увеличиваем диапазон портов net.inet.ip.portrange.first=1024 net.inet.ip.portrange.last=65535 А с этими опциями поаккуратнее, может потребоваться ручное вмешательство: # увеличиваем число сетевых буферов # на тот случай, если работу netisr стабилизируют в будущем, увеличиваем длину очереди под входящие пакеты: net.inet.ip.intr_queue_maxlen=10240 включаем джамбофрейм на сетевухах, выставив MTU 8000-9000 Edited January 12, 2012 by vlad11 Вставить ник Quote
Hawk128 Posted January 13, 2012 Author Posted January 13, 2012 (edited) Добавьте это: # увеличиваем диапазон портов net.inet.ip.portrange.first=1024 net.inet.ip.portrange.last=65535 НАТа нет, диапазон вроде как ни при чем. Тем не менее вот что стоит по умолчанию: net.inet.ip.portrange.last: 65535 net.inet.ip.portrange.first: 10000 net.inet.ip.portrange.lowlast: 600 net.inet.ip.portrange.lowfirst: 1023 А с этими опциями поаккуратнее, может потребоваться ручное вмешательство: # увеличиваем число сетевых буферов # на тот случай, если работу netisr стабилизируют в будущем, увеличиваем длину очереди под входящие пакеты: net.inet.ip.intr_queue_maxlen=10240 А какие именно проблемы могут быть? Как выражаются? (Изначально 50 вроде было, малова-то...) включаем джамбофрейм на сетевухах, выставив MTU 8000-9000 Попробую. Edited January 13, 2012 by Hawk128 Вставить ник Quote
Dyr Posted January 13, 2012 Posted January 13, 2012 (edited) На какой хрен jumbo frame вы собираетесь включать на BRAS'е?! Вас не смущает, что от клиентов будут приходить пакеты средним размером эдак в 1000 байт, и уходить в мир с его ~1450 байтным ограничением на MTU? Автору настоятельно рекомендую уходить от dummynet и использовать "родной" механизм ограничения скорости mpd5 через ng_car. И кстати, раскрыть тему жалоб пользователей на скорость. В чём конкретно проблемы? Edited January 13, 2012 by Dyr Вставить ник Quote
st_re Posted January 13, 2012 Posted January 13, 2012 Джамбо фреймы то причем ? на транзите то в интернет ? top -PSH ? прибить думинет к процессору не помогает ? http://forum.nag.ru/forum/index.php?showtopic=61738&view=findpost&p=555850 И, кстати, на некоторых машинах получался странный фифект, что не безразлично к какому именно ядру прибито. поиграйтесь с разными ядрами. Вставить ник Quote
lagman Posted January 13, 2012 Posted January 13, 2012 Кстати да, dummynet любит быть прибитым к 0-му ядру cpuset -l 0 -t `procstat -k 0 | awk '/dummynet/ { print $2 }'` Вставить ник Quote
Dyr Posted January 13, 2012 Posted January 13, 2012 top -PSH ? А ещё лучше top - aSCHIP. Запоминается ещё легче, и информации нужной поболе. ;) Вставить ник Quote
Hawk128 Posted January 13, 2012 Author Posted January 13, 2012 Вечером ТОП сделаю. Но там все чисто. Дамми к процу конечно прибит, без этого он на гораздо меньшем трафике выделывался. Пробовал к 10-му, 4-му, 0-му прибивать, везде одинаково работает. Жалуются на сильно недостающуюю скорость, 1.5 мбита вместо 20, например... Насчет джамбо все так, конечно, но ради спортивного интереса между серверами сделаю, погоняю... Вставить ник Quote
Dyr Posted January 13, 2012 Posted January 13, 2012 Жалуются только те, что через dummynet пробегают, или и остальные тоже? sysctl net.inet.ip.dummynet покажете? Вставить ник Quote
st_re Posted January 13, 2012 Posted January 13, 2012 И пример пайпа ? гредов/размеров очередей каких потюнить ? чтобы меньше трафика в очередях сидело. еще где-то видел жалобы что net.inet.ip.dummynet.io_fast=1 на 8 работает хуже чем net.inet.ip.dummynet.io_fast=0 Вставить ник Quote
Hawk128 Posted January 13, 2012 Author Posted January 13, 2012 Да они все через него бегают. Не бегают 2 чела всего - не показатель. gw01# sysctl net.inet.ip.dummynet net.inet.ip.dummynet.io_pkt_drop: 7367354387 net.inet.ip.dummynet.io_pkt_fast: 320461723403 net.inet.ip.dummynet.io_pkt: 475880924954 net.inet.ip.dummynet.queue_count: 0 net.inet.ip.dummynet.fsk_count: 42 net.inet.ip.dummynet.si_count: 1918 net.inet.ip.dummynet.schk_count: 84 net.inet.ip.dummynet.tick_lost: 0 net.inet.ip.dummynet.tick_diff: 103804 net.inet.ip.dummynet.tick_adjustment: 154190 net.inet.ip.dummynet.tick_delta_sum: 514 net.inet.ip.dummynet.tick_delta: 0 net.inet.ip.dummynet.red_max_pkt_size: 1500 net.inet.ip.dummynet.red_avg_pkt_size: 512 net.inet.ip.dummynet.red_lookup_depth: 256 net.inet.ip.dummynet.expire_cycle: 0 net.inet.ip.dummynet.expire: 1 net.inet.ip.dummynet.debug: 0 net.inet.ip.dummynet.io_fast: 1 net.inet.ip.dummynet.pipe_byte_limit: 1048576 net.inet.ip.dummynet.pipe_slot_limit: 100 net.inet.ip.dummynet.hash_size: 65535 ng_car пробовал, но он начал как-то плохо себя вести. Такое впечатлениие было, что слишком много нетграфовских нод в системе было... Ушел на дамминет с него, стало лучше заметно. net.inet.ip.dummynet.io_fast=0 пробовал - проц сразу забивает на 100% Вставить ник Quote
Hawk128 Posted January 13, 2012 Author Posted January 13, 2012 Примерно так: #!/bin/sh fw=/sbin/ipfw ng=/usr/sbin/ngctl # nat1_ip=178.217.96.1 ${fw} -f flush ${fw} -f pipe flush ${fw} -f table all flush ${fw} pipe 107 config bw 1M mask dst-ip 0xffffffff ${fw} pipe 207 config bw 1M mask src-ip 0xffffffff ${fw} pipe 108 config bw 2M mask dst-ip 0xffffffff ${fw} pipe 208 config bw 2M mask src-ip 0xffffffff ${fw} pipe 109 config bw 512K mask dst-ip 0xffffffff ${fw} pipe 209 config bw 512K mask src-ip 0xffffffff ${fw} pipe 112 config bw 4M mask dst-ip 0xffffffff ${fw} pipe 212 config bw 4M mask src-ip 0xffffffff ${fw} pipe 113 config bw 6M mask dst-ip 0xffffffff ${fw} pipe 213 config bw 6M mask src-ip 0xffffffff ${fw} pipe 114 config bw 8M mask dst-ip 0xffffffff ${fw} pipe 214 config bw 8M mask src-ip 0xffffffff ${fw} pipe 115 config bw 10M mask dst-ip 0xffffffff ${fw} pipe 215 config bw 10M mask src-ip 0xffffffff ${fw} pipe 116 config bw 16M mask dst-ip 0xffffffff ${fw} pipe 216 config bw 16M mask src-ip 0xffffffff ${fw} pipe 117 config bw 20M mask dst-ip 0xffffffff ${fw} pipe 217 config bw 20M mask src-ip 0xffffffff ${fw} pipe 118 config bw 32M mask dst-ip 0xffffffff ${fw} pipe 218 config bw 32M mask src-ip 0xffffffff ${fw} pipe 119 config bw 64M mask dst-ip 0xffffffff ${fw} pipe 219 config bw 64M mask src-ip 0xffffffff ${fw} pipe 302 config bw 1M mask dst-ip 0xffffffff ${fw} pipe 402 config bw 1M mask src-ip 0xffffffff ${fw} pipe 303 config bw 1M mask dst-ip 0xffffffff ${fw} pipe 403 config bw 1M mask src-ip 0xffffffff ${fw} pipe 304 config bw 3M mask dst-ip 0xffffffff ${fw} pipe 404 config bw 3M mask src-ip 0xffffffff ${fw} pipe 305 config bw 5M mask dst-ip 0xffffffff ${fw} pipe 405 config bw 5M mask src-ip 0xffffffff ${fw} pipe 306 config bw 512K mask dst-ip 0xffffffff ${fw} pipe 406 config bw 512K mask src-ip 0xffffffff ${fw} pipe 307 config bw 1M mask dst-ip 0xffffffff ${fw} pipe 407 config bw 1M mask src-ip 0xffffffff ${fw} pipe 308 config bw 2M mask dst-ip 0xffffffff ${fw} pipe 408 config bw 2M mask src-ip 0xffffffff ${fw} pipe 309 config bw 3M mask dst-ip 0xffffffff ${fw} pipe 409 config bw 3M mask src-ip 0xffffffff ${fw} pipe 310 config bw 5M mask dst-ip 0xffffffff ${fw} pipe 410 config bw 5M mask src-ip 0xffffffff ${fw} pipe 310 config bw 10M mask dst-ip 0xffffffff ${fw} pipe 410 config bw 10M mask src-ip 0xffffffff ${fw} table 20 add 178.217.96.0/21 ${fw} table 20 add 46.149.64.0/20 ${fw} table 20 add 176.98.176.0/20 ${fw} add 25 deny ip from 'table(25)' to any 25 ${fw} add 50 fwd 10.11.0.4 ip from 200.9.1.0/24 to not 10.11.0.0/16 ${fw} add 100 deny ip from 'table(0)' to any ${fw} add 105 allow ip from 'table(20)' to 'table(20)' ${fw} add 110 pipe tablearg ip from any to 'table(110)' in ${fw} add 120 pipe tablearg ip from 'table(120)' to any in ${fw} add 65530 allow ip from any to any HZ=? gw01# sysctl -a | grep hz kern.clockrate: { hz = 1000, tick = 1000, profhz = 2000, stathz = 133 } kern.dcons.poll_hz: 25 kern.hz: 1000 debug.psm.hz: 20 Вставить ник Quote
kapa Posted January 13, 2012 Posted January 13, 2012 HZ=? gw01# sysctl -a | grep hz kern.clockrate: { hz = 1000, tick = 1000, profhz = 2000, stathz = 133 } kern.dcons.poll_hz: 25 kern.hz: 1000 debug.psm.hz: 20 А он точно с таким HZ шейпит скорости больше 12 Мбит? Попробуйте 5000-8000 выставить? Вставить ник Quote
Dyr Posted January 13, 2012 Posted January 13, 2012 (edited) В ipfw лучше явным образом указать интерфейсы, и шейпить на выходе, а не на входе, как-то так: $ipfw add 01000 pipe tablearg all from any to 'table(110)' xmit "ng*" // Incoming traffic shaping $ipfw add 02000 pipe tablearg all from 'table(120)' to any xmit $ext_if // Outgoing traffic shaping Edited January 13, 2012 by Dyr Вставить ник Quote
st_re Posted January 13, 2012 Posted January 13, 2012 Размеры очередей бы потюнить надоть.. Причем мне так кажется, что для 2-3 мегабит и быстрее очередь укоротить бы надо до почти 0, чтобы почти полисер вышел. и гред какой настроить, чтобы намекнуть клиенту притормозить. типа для мегабита было так ... queue 99 gred 0.002/24/49/0.1 что приведет к включению греда и незаполняемости в большинстве случаев очереди больше половины. net.inet.ip.dummynet.expire: 1 Мне кажется что оно зло, и приводит к фрагментированию памяти и не более. $ipfw add 01000 pipe tablearg all from any to 'table(110)' xmit "ng*" // Incoming traffic shaping xmit "ng*" - ЗЛО!!! звездОчки в сад И правила 110 и 120, они точно видят IP разначенные ? Вставить ник Quote
Dyr Posted January 13, 2012 Posted January 13, 2012 xmit "ng*" - ЗЛО!!! звездОчки в сад Дык mpd же, по другому интерфейсы не задашь. Мне проще, у меня mpd нет ;) Вставить ник Quote
st_re Posted January 13, 2012 Posted January 13, 2012 само наличие * в правиле будет тормозить. Задавать правила по другому. или просто out или еще как. но без *. Вставить ник Quote
Dyr Posted January 13, 2012 Posted January 13, 2012 А чего, не пофиксили ещё этот обход всех интерфейсов при звезде? Ну ок, убрать. Оставить только направление выхода (out вместо in). Вставить ник Quote
Hawk128 Posted January 13, 2012 Author Posted January 13, 2012 Напрявление пробовал. Погоды не делало. Про HZ может кто-нибудь ссулку кинуть как оно с DUMMYNET связанно и как работает? Вставить ник Quote
Hawk128 Posted January 13, 2012 Author Posted January 13, 2012 А может кто-нибудь свой файл-конфиг правил для скоростных тарифов под DUMMYNET скинет? Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.