Jump to content

Recommended Posts

Posted

Подскажите пожалуйста тюнинг sysctl и параметры в /boot/loader.conf для NAS под FreeBSD 9.0 для оптимальной работы сетевой подсистемы.

Клиенты терминируются pppoe (mpd 5.6), используется NAT (ipfw nat).

Сетевая Intel PT dual port server adapter

Процессор - атлон 4-х ядерный

 

Онлайн в пиках до 900 соединений. Трафик порядка 600 мегабит.

 

Заранее благодарю.

Posted (edited)

не трогайте вы параметры системы, работает, не трогайте.

 

 

 

p.s.

а то тут вам насоветуют буфер сокетов на маршрутизаторе повысить.

Edited by Giga-Byte
Posted (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 by Bear_UA
Posted (edited)

Дело в том что работает то не очень хорошо. Хотелось бы улучшить производительность.

что значит "не очень хорошо" ?

Edited by Giga-Byte
Posted (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 by Giga-Byte
Posted

Да вот еще какая проблема. Наблюдаю такой глюк - раз в 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 дней. Может быть такое что переполняется какой-то буфер за это время и происходит краш?

Posted

Да вот еще какая проблема. Наблюдаю такой глюк - раз в 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 правила.

Posted

Подскажите пожалуйста тюнинг 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

Posted

Да вот еще какая проблема. Наблюдаю такой глюк - раз в 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

Posted (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 by Giga-Byte
Posted

Процессор - атлон 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

дык скольки ядерный то? :)

Posted (edited)

Тоесть на FreeBSD9 кроме dev.em.tx dev.em.rxd ничего тюнить не надо? Хм...

Я думаю не помешает

net.graph.maxdgram=8388608
net.graph.recvspace=8388608

Edited by roysbike
Posted

И из-за этого машина ребутится/виснет каждые 7-8 дней? Почему не каждый вечер когда пиковая нагрузка а каждые 7-8 дней? Причем ребут происходит не обязательно когда пиковая нагрузка.

Posted
# ipfw list65535 allow ip from any to any

Вырубите его вообще, он же не используется по факту.

 

net.inet.ip.fastforwarding=1

= 0

 

net.isr.defaultqlimit=4096

Убрать чтобы дефолтным стало.

 

net.isr.dispatch: direct

Оставить так: оно хуже параллелит нагрузку, но чуть более безопасно при удалении интерфейсов.

Вроде не так давно в 9.0 что то исправляли связанное с возможными падениями при удалении интерфейсов, попробуйте обновить ядро.

Posted
А чем вам 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, не смотря на то, что глобальная политика стоит как раз в очереди пихать по процам.

Posted

Ivan_83 а нельзя это вот на картинке увидеть? А то у меня никак не укладывается в голове ваша схема прохождения пакетов. :( Пожалуйста.

Posted
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.

Posted

Тоесть на FreeBSD9 кроме dev.em.tx dev.em.rxd ничего тюнить не надо? Хм...

да.

Я думаю не помешает

net.graph.maxdgram=8388608
net.graph.recvspace=8388608

:-) опять-таки, откуда такие заоблачные значения???

  • 3 months later...
Posted

Подскажите пожалуйста тюнинг 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

 

(-:

Posted
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

 

так они будут быстрее грузится намного.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.