Bear_UA Posted March 11, 2012 Posted March 11, 2012 Подскажите пожалуйста тюнинг sysctl и параметры в /boot/loader.conf для NAS под FreeBSD 9.0 для оптимальной работы сетевой подсистемы. Клиенты терминируются pppoe (mpd 5.6), используется NAT (ipfw nat). Сетевая Intel PT dual port server adapter Процессор - атлон 4-х ядерный Онлайн в пиках до 900 соединений. Трафик порядка 600 мегабит. Заранее благодарю. Вставить ник Quote
Giga-Byte Posted March 11, 2012 Posted March 11, 2012 (edited) не трогайте вы параметры системы, работает, не трогайте. p.s. а то тут вам насоветуют буфер сокетов на маршрутизаторе повысить. Edited March 11, 2012 by Giga-Byte Вставить ник Quote
Bear_UA Posted March 11, 2012 Author Posted March 11, 2012 (edited) Дело в том что работает то не очень хорошо. Хотелось бы улучшить производительность. Сейчас из тюнинга следующее: /etc/sysctl.conf net.inet.tcp.sendspace=131072 net.inet.tcp.recvspace=131072 net.inet.ip.fastforwarding=1 net.inet.ip.intr_queue_maxlen=10000 net.inet.tcp.blackhole=2 net.inet.udp.blackhole=1 kern.polling.user_frac=10 net.graph.recvspace=1000000 net.graph.maxdgram=1000000 kern.ipc.somaxconn=16384 kern.ipc.maxsockbuf=10000000 kern.maxfiles=200000 kern.maxfilesperproc=200000 kern.threads.max_threads_per_proc=200000 net.inet.icmp.icmplim=5000 net.inet.ip.dummynet.pipe_slot_limit=1000 net.inet.ip.dummynet.io_fast=1 /boot/loader.conf kern.maxusers=1024 net.graph.maxdata=65536 net.graph.maxalloc=65536 hw.em.txd=4096 hw.em.rxd=4096 net.isr.defaultqlimit=4096 net.link.ifqmaxlen=10240 hw.em.max_interrupt_rate=32000 Хотелось бы уточнить по тюнингу следующих параметров: net.isr.numthreads: 1 net.isr.maxprot: 16 net.isr.bindthreads: 0 net.isr.maxthreads: 1 net.isr.direct: 0 net.isr.direct_force: 0 net.isr.dispatch: direct Что тут лучше поставить для моей задачи? Edited March 11, 2012 by Bear_UA Вставить ник Quote
lagman Posted March 12, 2012 Posted March 12, 2012 у "не очень хорошо" может быть множество форм и причин Вставить ник Quote
Giga-Byte Posted March 12, 2012 Posted March 12, 2012 (edited) Дело в том что работает то не очень хорошо. Хотелось бы улучшить производительность. что значит "не очень хорошо" ? Edited March 12, 2012 by Giga-Byte Вставить ник Quote
Giga-Byte Posted March 12, 2012 Posted March 12, 2012 (edited) Хотелось бы уточнить по тюнингу следующих параметров: net.isr.numthreads: 1 net.isr.maxprot: 16 net.isr.bindthreads: 0 net.isr.maxthreads: 1 net.isr.direct: 0 net.isr.direct_force: 0 net.isr.dispatch: direct Что тут лучше поставить для моей задачи? посмотрел, на ethernet-фреймы этот механизм похоже не распространяется. яндексовые драйверы будут лучшим решенем когда ядер в разы больше чем сетевых плат, учавствующих в передаче PPPoE фреймов netstat -Q Configuration: Setting Current Limit Thread count 2 2 Default queue limit 256 10240 Dispatch policy deferred n/a Threads bound to CPUs enabled n/a Protocols: Name Proto QLimit Policy Dispatch Flags ip 1 256 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 48 0 0 0 11563 11563 0 0 igmp 0 1 0 0 0 14 14 0 0 rtsock 0 1 0 0 0 136 136 0 0 arp 0 2 0 0 0 6 6 0 0 ether 0 0 19324 0 0 0 19324 0 0 ip6 0 1 0 0 0 6 6 1 1 ip 0 15 0 0 0 8083 8083 1 1 igmp 0 0 0 0 0 0 0 1 1 rtsock 0 0 0 0 0 0 0 1 1 arp 0 2 0 0 0 148 148 1 1 ether 0 0 486 0 0 0 486 1 1 ip6 0 1 0 0 0 6 6 Edited March 13, 2012 by Giga-Byte Вставить ник Quote
Bear_UA Posted March 12, 2012 Author Posted March 12, 2012 Да вот еще какая проблема. Наблюдаю такой глюк - раз в 7-8 дней сервер при моей нагрузке ребутится. Один раз заметил в логах что ребутнулся вот из-за чего: Mar 4 15:20:24 access kernel: Mar 4 15:20:24 access kernel: Mar 4 15:20:24 access kernel: Fatal trap 12: page fault while in kernel mode Mar 4 15:20:24 access kernel: cpuid = 0; apic id = 00 Mar 4 15:20:24 access kernel: fault virtual address = 0x64 Mar 4 15:20:24 access kernel: fault code = supervisor read data, page not present Mar 4 15:20:24 access kernel: instruction pointer = 0x20:0xffffffff8101d9e9 Mar 4 15:20:24 access kernel: stack pointer = 0x28:0xffffff80002aef10 Mar 4 15:20:24 access kernel: frame pointer = 0x28:0xffffff80002aefb0 Mar 4 15:20:24 access kernel: code segment = base 0x0, limit 0xfffff, type 0x1b Mar 4 15:20:24 access kernel: = DPL 0, pres 1, long 1, def32 0, gran 1 Mar 4 15:20:24 access kernel: processor eflags = interrupt enabled, resume, IOPL = 0 Mar 4 15:20:24 access kernel: current process = 0 (em0 taskq) Mar 4 15:20:24 access kernel: trap number = 12 Mar 4 15:20:24 access kernel: panic: page fault Mar 4 15:20:24 access kernel: cpuid = 0 Mar 4 15:20:24 access kernel: KDB: stack backtrace: Mar 4 15:20:24 access kernel: #0 0xffffffff805e75fe at kdb_backtrace+0x5e Mar 4 15:20:24 access kernel: #1 0xffffffff805b21b7 at panic+0x187 Mar 4 15:20:24 access kernel: #2 0xffffffff8080f120 at trap_fatal+0x290 Mar 4 15:20:24 access kernel: #3 0xffffffff8080f469 at trap_pfault+0x1f9 Mar 4 15:20:24 access kernel: #4 0xffffffff8080f92f at trap+0x3df Mar 4 15:20:24 access kernel: #5 0xffffffff807f9e5f at calltrap+0x8 Mar 4 15:20:24 access kernel: #6 0xffffffff8101d126 at ng_bpf_rcvdata+0x66 Mar 4 15:20:24 access kernel: #7 0xffffffff8067c01b at ng_apply_item+0x22b Mar 4 15:20:24 access kernel: #8 0xffffffff8067afce at ng_snd_item+0x39e Mar 4 15:20:24 access kernel: #9 0xffffffff8101f3fc at ng_car_rcvdata+0xbc Mar 4 15:20:24 access kernel: #10 0xffffffff8067c01b at ng_apply_item+0x22b Mar 4 15:20:24 access kernel: #11 0xffffffff8067afce at ng_snd_item+0x39e Mar 4 15:20:24 access kernel: #12 0xffffffff8067c01b at ng_apply_item+0x22b Mar 4 15:20:24 access kernel: #13 0xffffffff8067afce at ng_snd_item+0x39e Mar 4 15:20:24 access kernel: #14 0xffffffff8067c01b at ng_apply_item+0x22b Mar 4 15:20:24 access kernel: #15 0xffffffff8067afce at ng_snd_item+0x39e Mar 4 15:20:24 access kernel: #16 0xffffffff8068252e at ng_ppp_rcvdata+0x26e Mar 4 15:20:24 access kernel: #17 0xffffffff8067c01b at ng_apply_item+0x22b Mar 4 15:20:24 access kernel: Uptime: 6d2h55m16s Mar 4 15:20:24 access kernel: Automatic reboot in 15 seconds - press a key on the console to abort Это повторяется каждые 7-8 дней. Может быть такое что переполняется какой-то буфер за это время и происходит краш? Вставить ник Quote
Giga-Byte Posted March 13, 2012 Posted March 13, 2012 Да вот еще какая проблема. Наблюдаю такой глюк - раз в 7-8 дней сервер при моей нагрузке ребутится. Один раз заметил в логах что ребутнулся вот из-за чего: ... Mar 4 15:20:24 access kernel: current process = 0 (em0 taskq) ... Mar 4 15:20:24 access kernel: Uptime: 6d2h55m16s Mar 4 15:20:24 access kernel: Automatic reboot in 15 seconds - press a key on the console to abort Это повторяется каждые 7-8 дней. Может быть такое что переполняется какой-то буфер за это время и происходит краш? конечно :) уберите весь свой тюнинг, кроме hw.em.txd=4096 hw.em.rxd=4096 кроме пары nat-правил в ipfw больше ничего нету? скорость абоненту режется с помошью ng_car ? вообще, покажите ipfw правила. Вставить ник Quote
roysbike Posted March 13, 2012 Posted March 13, 2012 Подскажите пожалуйста тюнинг sysctl и параметры в /boot/loader.conf для NAS под FreeBSD 9.0 для оптимальной работы сетевой подсистемы. Клиенты терминируются pppoe (mpd 5.6), используется NAT (ipfw nat). Сетевая Intel PT dual port server adapter Процессор - атлон 4-х ядерный Онлайн в пиках до 900 соединений. Трафик порядка 600 мегабит. Заранее благодарю. Покажите в пике top -SHP , netstat -w1 -h Вставить ник Quote
Bear_UA Posted March 13, 2012 Author Posted March 13, 2012 Да вот еще какая проблема. Наблюдаю такой глюк - раз в 7-8 дней сервер при моей нагрузке ребутится. Один раз заметил в логах что ребутнулся вот из-за чего: ... Mar 4 15:20:24 access kernel: current process = 0 (em0 taskq) ... Mar 4 15:20:24 access kernel: Uptime: 6d2h55m16s Mar 4 15:20:24 access kernel: Automatic reboot in 15 seconds - press a key on the console to abort Это повторяется каждые 7-8 дней. Может быть такое что переполняется какой-то буфер за это время и происходит краш? конечно :) уберите весь свой тюнинг, кроме hw.em.txd=4096 hw.em.rxd=4096 кроме пары nat-правил в ipfw больше ничего нету? скорость абоненту режется с помошью ng_car ? вообще, покажите ipfw правила. Еще есть DNS, snmpd, dhcpd. Скорость абоненту режется только ng_car посредством отправки радиус пакетов при авторизации в mpd # ipfw list 65535 allow ip from any to any Нат пока что сделан на PF (планируется переход на ipfw nat если получится на нем натить в pool ip адресов). На счет тюнинга - что в нем не так? Аналогичные значения прописаны на NAS с 7.4 - аптайм месяцами с похожей нагрузкой.... :( Подскажите пожалуйста тюнинг sysctl и параметры в /boot/loader.conf для NAS под FreeBSD 9.0 для оптимальной работы сетевой подсистемы. Клиенты терминируются pppoe (mpd 5.6), используется NAT (ipfw nat). Сетевая Intel PT dual port server adapter Процессор - атлон 4-х ядерный Онлайн в пиках до 900 соединений. Трафик порядка 600 мегабит. Заранее благодарю. Покажите в пике top -SHP , netstat -w1 -h last pid: 98753; load averages: 1.19, 1.02, 1.00 up 7+05:18:54 20:39:02 72 processes: 3 running, 56 sleeping, 13 waiting CPU 0: 8.1% user, 0.0% nice, 67.6% system, 0.0% interrupt, 24.3% idle CPU 1: 16.2% user, 0.0% nice, 51.4% system, 2.7% interrupt, 29.7% idle Mem: 198M Active, 519M Inact, 609M Wired, 160K Cache, 213M Buf, 647M Free Swap: 4096M Total, 4096M Free PID USERNAME PRI NICE SIZE RES STATE C TIME WCPU COMMAND 0 root -92 0 0K 192K - 0 62.4H 65.67% kernel{em1 taskq} 0 root -92 0 0K 192K - 0 51.5H 54.64% kernel{em0 taskq} 11 root 155 ki31 0K 32K CPU0 0 91.4H 28.52% idle{idle: cpu0} 12 root -60 - 0K 208K WAIT 1 332:01 27.54% intr{swi4: clock} 11 root 155 ki31 0K 32K RUN 1 126.5H 17.09% idle{idle: cpu1} 7835 root 22 0 44820K 8840K select 1 129:04 1.90% snmpd 0 root -92 0 0K 192K - 0 46:18 1.42% kernel{dummynet} 7778 root 32 0 560M 330M select 0 169:18 0.78% mpd5{mpd5} 7778 root 33 0 560M 330M select 1 0:00 0.73% mpd5{mpd5} 7778 root 34 0 560M 330M select 1 0:00 0.54% mpd5{mpd5} 7778 root 52 0 560M 330M select 0 0:00 0.05% mpd5{mpd5} 7670 bind 20 0 154M 128M uwait 0 47:58 0.00% named{named} 7670 bind 20 0 154M 128M uwait 0 47:56 0.00% named{named} 2 root -16 - 0K 16K pftm 1 23:46 0.00% pfpurge 15 root -16 - 0K 16K - 1 17:51 0.00% yarrow 7670 bind 20 0 154M 128M kqread 0 15:51 0.00% named{named} 9 root 16 - 0K 16K syncer 1 13:45 0.00% syncer 13 root -16 - 0K 32K sleep 1 2:08 0.00% ng_queue{ng_queue0} 13 root -16 - 0K 32K sleep 0 2:08 0.00% ng_queue{ng_queue1} 7276 root 20 0 12184K 1648K select 1 1:29 0.00% syslogd 12 root -60 - 0K 208K WAIT 1 0:43 0.00% intr{swi4: clock} 7670 bind 20 0 154M 128M uwait 0 0:41 0.00% named{named} 0 root -16 0 0K 192K sched 1 0:40 0.00% kernel{swapper} 12 root -88 - 0K 208K WAIT 0 0:08 0.00% intr{irq19: atapci1+} 6192 root 20 0 10372K 3488K select 1 0:06 0.00% devd 14 root -8 - 0K 48K - 1 0:06 0.00% geom{g_down} 17 root -16 - 0K 16K sdflus 0 0:05 0.00% softdepflush 7957 root 20 0 46876K 4648K select 0 0:05 0.00% sshd 4 root -16 - 0K 16K ccb_sc 0 0:04 0.00% xpt_thrd 12 root -68 - 0K 208K WAIT 0 0:04 0.00% intr{swi2: cambio} 14 root -8 - 0K 48K - 0 0:03 0.00% geom{g_up} 16 root -16 - 0K 16K vlruwt 0 0:02 0.00% vnlru 8 root -16 - 0K 16K psleep 0 0:02 0.00% bufdaemon 7966 root 20 0 14260K 1736K nanslp 0 0:01 0.00% cron 5 root -16 - 0K 16K psleep 0 0:00 0.00% pagedaemon 1 root 20 0 6280K 544K wait 0 0:00 0.00% init 25131 bear 20 0 68016K 5656K select 0 0:00 0.00% sshd 25128 root 20 0 68016K 5584K sbwait 1 0:00 0.00% sshd 12 root -52 - 0K 208K WAIT 0 0:00 0.00% intr{swi6: task queue} 25132 bear 20 0 17572K 2984K wait 0 0:00 0.00% bash 7 root 155 ki31 0K 16K pgzero 0 0:00 0.00% pagezero 14 root -8 - 0K 48K - 0 0:00 0.00% geom{g_event} 98753 bear 20 0 16700K 2332K CPU1 1 0:00 0.00% top 12 root -72 - 0K 208K WAIT 1 0:00 0.00% intr{swi1: netisr 0} 7670 bind 52 0 154M 128M sigwai 1 0:00 0.00% named{named} 0 root 8 0 0K 192K - 0 0:00 0.00% kernel{thread taskq} 8047 root 52 0 12184K 1392K ttyin 1 0:00 0.00% getty 8049 root 52 0 12184K 1392K ttyin 1 0:00 0.00% getty 8054 root 52 0 12184K 1392K ttyin 1 0:00 0.00% getty 12 root -56 - 0K 208K WAIT 0 0:00 0.00% intr{swi5: +} 8048 root 52 0 12184K 1392K ttyin 1 0:00 0.00% getty $ netstat -w 1 -h input (Total) output packets errs idrops bytes packets errs bytes colls 208k 0 0 150M 216k 0 187M 0 205k 0 0 147M 213k 0 186M 0 209k 0 0 150M 217k 0 189M 0 200k 0 0 141M 208k 0 179M 0 203k 0 0 144M 211k 0 182M 0 204k 0 0 145M 211k 0 182M 0 208k 0 0 148M 215k 0 184M 0 197k 0 0 138M 204k 0 174M 0 Вставить ник Quote
Giga-Byte Posted March 13, 2012 Posted March 13, 2012 (edited) Еще есть DNS, snmpd, dhcpd. ок, не критично. Скорость абоненту режется только ng_car посредством отправки радиус пакетов при авторизации в mpd # ipfw list 65535 allow ip from any to any пойдет. Нат пока что сделан на PF (планируется переход на ipfw nat если получится на нем натить в pool ip адресов). ну как говорят PF не для SMP систем (код я лично не смотрел) поэтому переход на ipfw nat или ng_nat может немного снизить нагрузку на процессор. коллеги поправьте если заблуждаюсь. На счет тюнинга - что в нем не так? Аналогичные значения прописаны на NAS с 7.4 - аптайм месяцами с похожей нагрузкой.... :( потому что 9-я ветка далеко от 7-й ушла. очень далеко. пы.сы. оформляйте выводы netstat, top и пр. тэгами "code", чтобы форматирование сохранилось. Edited March 13, 2012 by Giga-Byte Вставить ник Quote
Giga-Byte Posted March 13, 2012 Posted March 13, 2012 Процессор - атлон 4-х ядерный last pid: 98753; load averages: 1.19, 1.02, 1.00 up 7+05:18:54 20:39:02 72 processes: 3 running, 56 sleeping, 13 waiting CPU 0: 8.1% user, 0.0% nice, 67.6% system, 0.0% interrupt, 24.3% idle CPU 1: 16.2% user, 0.0% nice, 51.4% system, 2.7% interrupt, 29.7% idle Mem: 198M Active, 519M Inact, 609M Wired, 160K Cache, 213M Buf, 647M Free Swap: 4096M Total, 4096M Free дык скольки ядерный то? :) Вставить ник Quote
Bear_UA Posted March 13, 2012 Author Posted March 13, 2012 Тоесть на FreeBSD9 кроме dev.em.tx dev.em.rxd ничего тюнить не надо? Хм... Вставить ник Quote
roysbike Posted March 13, 2012 Posted March 13, 2012 (edited) Тоесть на FreeBSD9 кроме dev.em.tx dev.em.rxd ничего тюнить не надо? Хм... Я думаю не помешает net.graph.maxdgram=8388608 net.graph.recvspace=8388608 Edited March 13, 2012 by roysbike Вставить ник Quote
vlad11 Posted March 14, 2012 Posted March 14, 2012 Я подозреваю, что все-таки происходит упор по прерываниям Вставить ник Quote
Bear_UA Posted March 14, 2012 Author Posted March 14, 2012 И из-за этого машина ребутится/виснет каждые 7-8 дней? Почему не каждый вечер когда пиковая нагрузка а каждые 7-8 дней? Причем ребут происходит не обязательно когда пиковая нагрузка. Вставить ник Quote
Ivan_83 Posted March 14, 2012 Posted March 14, 2012 # ipfw list65535 allow ip from any to any Вырубите его вообще, он же не используется по факту. net.inet.ip.fastforwarding=1 = 0 net.isr.defaultqlimit=4096 Убрать чтобы дефолтным стало. net.isr.dispatch: direct Оставить так: оно хуже параллелит нагрузку, но чуть более безопасно при удалении интерфейсов. Вроде не так давно в 9.0 что то исправляли связанное с возможными падениями при удалении интерфейсов, попробуйте обновить ядро. Вставить ник Quote
Dyr Posted March 14, 2012 Posted March 14, 2012 А чем вам net.inet.ip.fastforwarding не нравится? Вставить ник Quote
AlKov Posted March 15, 2012 Posted March 15, 2012 А чем вам net.inet.ip.fastforwarding не нравится? http://forum.nag.ru/forum/index.php?showtopic=55736&view=findpost&p=556460 Вставить ник Quote
Ivan_83 Posted March 15, 2012 Posted March 15, 2012 А чем вам net.inet.ip.fastforwarding не нравится? Это отличная опция для ОДНОЯДЕРНЫХ роутеров. Когда фастфорвард включён пакет без ип опций и не предназначенный для этого хоста прямо сразу проходит все проверки, для дст ищется некст хоп и он выплёвывается через if_output соотвествующего интерфейса. Если сетевуха с одним RX прерыванием а проц многоядерный то всё будет в одном ядре крутится. # netstat -Q Configuration: Setting Current Limit Thread count 2 2 Default queue limit 256 10240 Dispatch policy deferred n/a Threads bound to CPUs enabled n/a Protocols: Name Proto QLimit Policy Dispatch Flags ip 1 4096 flow default --- igmp 2 256 source default --- rtsock 3 1024 source default --- arp 7 256 source default --- ether 9 256 source direct --- ip6 10 256 flow default --- Вот когда фастфорвад включён то IP не идёт через NetISR в случае пакетов для форвада, а идёт директом, как продолжение обработки ether, не смотря на то, что глобальная политика стоит как раз в очереди пихать по процам. Вставить ник Quote
Dyr Posted March 15, 2012 Posted March 15, 2012 Ivan_83 а нельзя это вот на картинке увидеть? А то у меня никак не укладывается в голове ваша схема прохождения пакетов. :( Пожалуйста. Вставить ник Quote
Ivan_83 Posted March 15, 2012 Posted March 15, 2012 Ivan_83 а нельзя это вот на картинке увидеть? /usr/src/sys/net/if_ethersubr.c /usr/src/sys/netinet/ip_fastfwd.c ether_input->netisr_dispatch(NETISR_ETHER)--(тут не параллелится, а могло бы)-->ether_nh_input->ether_input_internal--- (никакой обработки нет - просто вызов последующей функции, если только внутри NetISR в недрах netisr_dispatch до ether_nh_input) --->ether_demux--(опционально: ether_ipfw_chk, vlan_input_p)-->>>>ip_fastforward если включено и пакет подходит для форвада или netisr_dispatch(NETISR_IP)--(здесь и раскладывается по ядрам)-->ip_input... Другой вариант распараллелить - завернуть в нетграф ноду внутри: ether_input_internal до ether_demux, но хук ноды должен быть с флагом HK_QUEUE (NG_HOOK_FORCE_QUEUE) или HK_TO_INBOUND (NG_HOOK_SET_TO_INBOUND) - тогда оно разложится в очереди внутри нетграфа, вообщем аналогично NetISR. Вставить ник Quote
Giga-Byte Posted March 15, 2012 Posted March 15, 2012 Тоесть на FreeBSD9 кроме dev.em.tx dev.em.rxd ничего тюнить не надо? Хм... да. Я думаю не помешает net.graph.maxdgram=8388608 net.graph.recvspace=8388608 :-) опять-таки, откуда такие заоблачные значения??? Вставить ник Quote
snark Posted June 25, 2012 Posted June 25, 2012 Подскажите пожалуйста тюнинг sysctl и параметры в /boot/loader.conf для NAS под FreeBSD 9.0 # grep -vE '^(#|$)' /boot/loader.conf autoboot_delay="3" coretemp_load="YES" # grep -vE '^(#|$)' /etc/sysctl.conf net.inet.tcp.blackhole=2 net.inet.udp.blackhole=1 kern.corefile=/tmp/%U.%N.%P.core # uname -rsm FreeBSD 9.0-STABLE amd64 (-: Вставить ник Quote
Ivan_83 Posted June 25, 2012 Posted June 25, 2012 coretemp_load="YES" В 9.0 модули не обязательные для бута можно грузить после, из rc: rc.conf[.local] kld_list="coretemp if_de accf_dns accf_http cc_htcp" # Kernel modules to load after local disks are mounted так они будут быстрее грузится намного. Вставить ник 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.