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

FreeBSD 11 high interrupt

Всем доброго дня.

 

FreeBSD 10.3

Сеть на  ix 82599ES 10-Gigabit

Сервер ProLiant DL360 G5

Проц E5450  @ 3.00GHz, два штуки по 4 ядра

HT выключен.

 

Из сервисов только pf nat и bgp на квагге. Фильтрация не используется.

Трафика 1.5 гбит, суммарная загрузка процов доходит до 30%.

Прерывания распределяются ровно:

 

 vmstat -i
interrupt                          total       rate
irq1: atkbd0                          18          0
irq14: ata0                       280694          0
irq22: uhci4                          24          0
cpu0:timer                     440402789       1045
irq256: ix0:q0                2936855695       6971
irq257: ix0:q1                3216167594       7634
irq258: ix0:q2                3437776130       8160
irq259: ix0:q3                3002407789       7126
irq260: ix0:q4                2982675851       7079
irq261: ix0:q5                3324595248       7891
irq262: ix0:q6                2966543606       7041
irq263: ix0:q7                3035602172       7205
irq264: ix0:link                       1          0
irq265: ix1:q0                2913150425       6914
irq266: ix1:q1                3224929543       7655
irq267: ix1:q2                3454122927       8199
irq268: ix1:q3                3011195104       7147
irq269: ix1:q4                3001954609       7125
irq270: ix1:q5                3301233480       7836
irq271: ix1:q6                2970392567       7050
irq272: ix1:q7                3066342775       7278
irq273: ix1:link                       1          0
 

Смущает много софтовых прерываний:

 

 vmstat -s
366097786 cpu context switches
3426668849 device interrupts
832478312 software interrupts
201457044 traps
1583558136 system calls
 

sysctl.conf

 

kern.random.sys.harvest.ethernet=0
kern.random.sys.harvest.point_to_point=0
kern.random.sys.harvest.interrupt=0

kern.ipc.maxsockbuf=83886080
 

loader.conf

 

hint.p4tcc.0.disabled=1
hint.acpi_throttle.0.disabled=1

dev.ix.0.rx_processing_limit=4096
dev.ix.1.rx_processing_limit=4096

hw.ix.tx_process_limit=-1
hw.ix.rx_process_limit=-1
hw.ix.rxd=4096
hw.ix.txd=4096

cc_htcp_load="YES"

net.link.ifqmaxlen=8192  # (default 50)

net.isr.defaultqlimit=8192 # (default 256)

hw.ix.max_interrupt_rate=32000 # (default 8000)

kern.ipc.nmbclusters=5242880
kern.ipc.nmbjumbop=2621440

hw.intr_storm_threshold=9000

net.inet.tcp.syncache.hashsize=1024
net.inet.tcp.syncache.bucketlimit=100

hw.ix.enable_aim=0
net.isr.bindthreads=1
net.isr.maxthreads=8
net.isr.numthreads=8

 

Можно ли что-то еще подкрутить для улучшения?

 

И основной вопрос. Решил перейти на 11 FreeBSD. Загружаюсь на этом же сервере под FreeBSD 11.1,настройки по части сети идентичные, единственно добавляется harvest_mask=351.

Прерывания начинают грузить процы в 2-3 раза сильнее,и на пиках доходят до 100% на этом же трафике, т.е. 1.5 гбит.

 

Есть у кого в работе 11 ветка, какие новшества я не учел в части настройки сети? Будет ли профит по производительности с 10.3 на 11 ?

 

Уповаю на помощь корифеев тазиководства )

 

Всем спасибо заранее!

Share this post


Link to post
Share on other sites
5 часов назад, ingvarrwvw сказал:

harvest_mask=351

Что мешает поставить на 0 или более разумно там немного оставить, скажем дисковые и клавиатурные события?

Мои конфиги тут лежат: http://www.netlab.linkpc.net/download/software/os_cfg/FBSD/11/

base+srv сверху.

 

Сам сервер под роутер так себе, на меж CPU связи производительность сильно проседает, жалкий I5 там будет ощутимо лучше работать.

https://www.freebsd.org/releases/11.1R/errata.html

https://www.freebsd.org/releases/11.0R/errata.html

Share this post


Link to post
Share on other sites

БИОСы и фирмваре на сервере самые последние?

Share this post


Link to post
Share on other sites
1 час назад, vlad11 сказал:

БИОСы и фирмваре на сервере самые последние?

Не поможет.

Скорее внять один проц даст больше эффекта.

Share this post


Link to post
Share on other sites
12 часов назад, ingvarrwvw сказал:

Проц E5450  @ 3.00GHz, два штуки

+1 к выниманию проца

Share this post


Link to post
Share on other sites
11 hours ago, vlad11 said:

БИОСы и фирмваре на сервере самые последние?

Да, это все последнее.

Share this post


Link to post
Share on other sites
10 hours ago, Ivan_83 said:

Не поможет.

Скорее внять один проц даст больше эффекта.

Физическое вынимание проца и иcскуственное ограничение в виде:

 

net.isr.maxthreads=8 ---> 4
net.isr.numthreads=8 ---> 4

 

даст одинаковый эффект? Плюс по ядрам прерывания разнести ровно.

 

Впрочем, буду пробовать. Спасибо за советы!

 

Еще ,по вашему мнению, какой процессор наиболее подходящий для рутинга? Что нибудь такое:

Intel Xeon E5-2683 V4 2.1G 16C ?

На AMD стоит смотреть под такие задачи?

Share this post


Link to post
Share on other sites

net.inet.ip.redirect=0 еще можно

но странно что нагрузка по iq возрастает на новой бсд

можете временно тыкнуть hw.ix.num_queues=8 или 16 для посмотреть будут ли изменения в iq

Share this post


Link to post
Share on other sites
1 час назад, ingvarrwvw сказал:

Еще ,по вашему мнению, какой процессор наиболее подходящий для рутинга? Что нибудь такое:

Intel Xeon E5-2683 V4 2.1G 16C ?

На AMD стоит смотреть под такие задачи?

E3-1220 хватит на ваши нужды с запасом, сервер в сборе будет стоить в 5 раза дешевле чем ненужный проц 'E5-2683'.

АМД не нужно смотреть.

Share this post


Link to post
Share on other sites

если есть время и желание поразбираться что грузит так цпу на новой фре

вот ссылка в конце статьи

https://bsdrp.net/documentation/technical_docs/performance

и да HT лучше с биоса или с настроек бсд выключить, уменьшением очереди не факт что где то останется какое то узкое место которое будет мешать

Share this post


Link to post
Share on other sites
3 hours ago, kayot said:

E3-1220 хватит на ваши нужды с запасом, сервер в сборе будет стоить в 5 раза дешевле чем ненужный проц 'E5-2683'.

АМД не нужно смотреть.

Нужды до 10gbit под те же задачи. Е3-1220 хватит под такую задачу?

 

2 hours ago, paradox_ said:

если есть время и желание поразбираться что грузит так цпу на новой фре

вот ссылка в конце статьи

https://bsdrp.net/documentation/technical_docs/performance

и да HT лучше с биоса или с настроек бсд выключить, уменьшением очереди не факт что где то останется какое то узкое место которое будет мешать

HT отключен в биосе. Разбираться буду,да.

Share this post


Link to post
Share on other sites
8 минут назад, ingvarrwvw сказал:

Нужды до 10gbit под те же задачи. Е3-1220 хватит под такую задачу?

1220v1 с трудом. Какой-нить 1270v5 или 1680v3/v4 будут в самый раз.

Share this post


Link to post
Share on other sites
8 часов назад, ingvarrwvw сказал:

даст одинаковый эффект? Плюс по ядрам прерывания разнести ровно.

Нет.

У тебя есть общие данные которые шарятся между процами, для сихронизации доступа процы будут долго общаться между собой.

 

8 часов назад, ingvarrwvw сказал:

На AMD стоит смотреть под такие задачи?

Если только на ядрах райзена.

 

8 часов назад, paradox_ сказал:

net.inet.ip.redirect=0 еще можно

Немного не в тему.

net.inet.ip.redirect: Enable sending IP redirects

Share this post


Link to post
Share on other sites
5 минут назад, Ivan_83 сказал:

Немного не в тему.

net.inet.ip.redirect: Enable sending IP redirects

это в тему про тюнинг,  а не про странную загрузку на 11

мелких админов /24 сразу можно отличить по не знаю этой опции))

Share this post


Link to post
Share on other sites
6 минут назад, paradox_ сказал:

это в тему про тюнинг,  а не про странную загрузку на 11

Для общего тюнинга это сильно мало.

У меня по ссылке выше сильно больше всего накручено да ещё и подписано что это такое.

 

Я уже и не админ, у меня несколько /32 )

Но в ядре я колупаюсь и патчю.

Share this post


Link to post
Share on other sites
В 30.05.2018 в 20:27, Ivan_83 сказал:

Не поможет.

Это минимальное, но не достаточное требование.

 

18 часов назад, ingvarrwvw сказал:

Да, это все последнее.

Можете это как-то подтвердить?

 

В 30.05.2018 в 08:39, ingvarrwvw сказал:

Решил перейти на 11 FreeBSD. Загружаюсь на этом же сервере под FreeBSD 11.1,настройки по части сети идентичные, единственно добавляется harvest_mask=351.

Прерывания начинают грузить процы в 2-3 раза сильнее,и на пиках доходят до 100% на этом же трафике, т.е. 1.5 гбит.


Покажите топ процессов.
Покажите вывод
 

sysctl -a kern.eventtimer
netstat -m

 

9 часов назад, Ivan_83 сказал:

Но в ядре я колупаюсь и патчю.

Можете показать коммиты в общем дереве FreeBSD ?

Share this post


Link to post
Share on other sites
2 часа назад, vlad11 сказал:

Можете показать коммиты в общем дереве FreeBSD ?

ng_vlan.c переписал.

Куски по arp проколу тоже мои, искать мелкими частями с 2011 года.

amdtemp допинать лень, так и висит в фабрикаторе.

Остального в дереве нет и не будет ибо или дереву не надо или это фича на которой зарабатывает контора в которой я пилю.

Share this post


Link to post
Share on other sites
1 час назад, Ivan_83 сказал:

ng_vlan.c переписал.

Куски по arp проколу тоже мои, искать мелкими частями с 2011 года.

Ок.
По поводу PR187835  к вам?

 

1 час назад, Ivan_83 сказал:

Остального в дереве нет и не будет ибо или дереву не надо или это фича на которой зарабатывает контора в которой я пилю.

Интересна лицензия. GPLv3 ? :)

Share this post


Link to post
Share on other sites

Всем спасибо большое за внимание к теме.

 

В ближайшее время смогу вытащить один проц и потестить на 11.1 под нагрузкой. Параметры и результаты выложу по итогу.

Плюс заказано несколько платформ для тестирования с разными процессорами.

Share this post


Link to post
Share on other sites
В 30.05.2018 в 13:58, Ivan_83 сказал:

Что мешает поставить на 0 или более разумно там немного оставить, скажем дисковые и клавиатурные события?

Мои конфиги тут лежат: http://www.netlab.linkpc.net/download/software/os_cfg/FBSD/11/

base+srv сверху.

 

Сам сервер под роутер так себе, на меж CPU связи производительность сильно проседает, жалкий I5 там будет ощутимо лучше работать.

https://www.freebsd.org/releases/11.1R/errata.html

https://www.freebsd.org/releases/11.0R/errata.html

В чём разница base srv work ? Какие можно взять за основу ?) У меня конфиги просто в менее красивом и удобном виде, думал переписать.

Share this post


Link to post
Share on other sites
9 часов назад, hsvt сказал:

В чём разница base srv work ? Какие можно взять за основу ?) У меня конфиги просто в менее красивом и удобном виде, думал переписать.

Не делайте так, как он в /etc/src.conf.

Для этого есть свой конфиг ядра, если чем-то не устраивает GENERIC.

 

Share this post


Link to post
Share on other sites
15 часов назад, vlad11 сказал:

По поводу PR187835  к вам?

если не тюнить sysctl  вывод в бинарке начинается раньше ? или все так же с того же номера влан ?

если раньше - то банально не хватает памяти, тюнить еще sysctl

Share this post


Link to post
Share on other sites
23 часа назад, vlad11 сказал:

По поводу PR187835  к вам?

Нет.

Скорее всего он упёрся в лимит буфера нетграф сокета, тюнить сисцтл.

 

23 часа назад, vlad11 сказал:

Интересна лицензия. GPLv3 ? :)

Нет. С чего бы?

 

17 часов назад, hsvt сказал:

В чём разница base srv

base - общие файлы, типа первыми накатывается

srv/wks - кастомизация под сервер/рабочую станцию, накатывается вторым. Хотя они пока не пересекаются с base, всмысле не содержат файлов с одинаковыми именами.

Да, с моими конфигами нужно осторожнее, а то можно огрести проблем если бездумно накатить всё что есть.

 

8 часов назад, vlad11 сказал:

Не делайте так, как он в /etc/src.conf.

Для этого есть свой конфиг ядра, если чем-то не устраивает GENERIC.

Ну подумаешь не будет openssh, ntp, telnet, sendmail, unbound и ещё кучи ненужного после пересборки системы :)))

Заодно и пачка ненужных дров уйдёт и ядро полегчает :)

Конфиги ядра я тоже подумываю сюда приложить, а то пока валяются в исходниках.

Share this post


Link to post
Share on other sites

Вытащили один проц. На 800 мбит загрузка 60%.

 

uname -na

 

FreeBSD GW_1 11.2-RC1 FreeBSD 11.2-RC1 #0 r334470:

 

top -SCHIP

 

164 processes: 10 running, 122 sleeping, 32 waiting
CPU 0:  0.0% user,  0.0% nice,  2.3% system, 39.5% interrupt, 58.1% idle
CPU 1:  0.0% user,  0.0% nice,  2.3% system, 51.2% interrupt, 46.5% idle
CPU 2:  0.0% user,  0.0% nice,  2.3% system, 62.8% interrupt, 34.9% idle
CPU 3:  2.3% user,  0.0% nice,  4.7% system, 46.5% interrupt, 46.5% idle
Mem: 438M Active, 303M Inact, 2113M Wired, 1159M Buf, 13G Free
Swap: 4096M Total, 4096M Free

  PID USERNAME   PRI NICE   SIZE    RES STATE   C   TIME     CPU COMMAND
   11 root       155 ki31     0K    64K RUN     1 660:00  53.04% idle{idle: cpu1}
   11 root       155 ki31     0K    64K RUN     0 662:32  52.36% idle{idle: cpu0}
   11 root       155 ki31     0K    64K RUN     3 663:58  49.69% idle{idle: cpu3}
   11 root       155 ki31     0K    64K RUN     2 654:38  49.38% idle{idle: cpu2}
   12 root       -92    -     0K   560K WAIT    3  23:40  37.04% intr{irq259: ix0:q3}
   12 root       -92    -     0K   560K WAIT    2  24:00  32.73% intr{irq258: ix0:q2}
   12 root       -92    -     0K   560K CPU0    0  23:27  31.79% intr{irq256: ix0:q0}
   12 root       -92    -     0K   560K WAIT    1  24:50  23.33% intr{irq257: ix0:q1}
   12 root       -92    -     0K   560K CPU1    1  17:31  20.06% intr{irq262: ix1:q1}
   12 root       -92    -     0K   560K WAIT    2  15:20  15.48% intr{irq263: ix1:q2}
   12 root       -92    -     0K   560K RUN     0  13:50  13.74% intr{irq261: ix1:q0}
   12 root       -92    -     0K   560K WAIT    3  13:32  11.57% intr{irq264: ix1:q3}
 4277 root        20    0  7916K  4328K CPU1    1   0:00   2.70% top
   12 root       -72    -     0K   560K WAIT    1   3:35   2.47% intr{swi1: pfsync}
  663 root       -16    -     0K    16K pftm    1   4:59   1.98% pf purge
   12 root       -92    -     0K   560K WAIT    0  12:22   1.32% intr{irq267: bce0}
 

sysctl.conf

 

net.inet.carp.preempt=1
net.inet.ip.redirect=0
hw.ix.enable_aim=1
kern.ipc.nmbclusters=5242880
kern.ipc.maxsockbuf=83886080
 

loader.conf

 

carp_load="YES"

net.isr.defaultqlimit=4096 # (default 256)
hw.ix.max_interrupt_rate=16000 # (default 8000)
hw.ix.rx_process_limit=-1
hw.ix.tx_process_limit=-1
hw.ix.num_queues=4
hw.ix.rxd=4096
hw.ix.txd=4096
net.isr.bindthreads=1
net.isr.maxthreads=4
net.isr.numthreads=4
 

 vmstat -i


interrupt                          total       rate
irq1: atkbd0                           6          0
irq14: ata0                        28447          1
irq20: hpet0                    18878914        440
irq22: uhci4                        1708          0
irq256: ix0:q0                  82997235       1935
irq257: ix0:q1                  84871725       1979
irq258: ix0:q2                  88312220       2059
irq259: ix0:q3                  82268600       1918
irq260: ix0:link                      53          0
irq261: ix1:q0                  57475063       1340
irq262: ix1:q1                  60558888       1412
irq263: ix1:q2                  54806017       1278
irq264: ix1:q3                  51703498       1205
irq265: ix1:link                       2          0
irq266: ciss0                      92935          2
irq267: bce0                    62646697       1460
Total                          644642008      15028
 

sysctl -a kern.eventtimer

 

kern.eventtimer.periodic: 0
kern.eventtimer.timer: HPET
kern.eventtimer.idletick: 0
kern.eventtimer.singlemul: 2
kern.eventtimer.choice: HPET(450) HPET1(440) HPET2(440) LAPIC(100) i8254(100) RTC(0)
kern.eventtimer.et.RTC.quality: 0
kern.eventtimer.et.RTC.frequency: 32768
kern.eventtimer.et.RTC.flags: 17
kern.eventtimer.et.HPET2.quality: 440
kern.eventtimer.et.HPET2.frequency: 14318180
kern.eventtimer.et.HPET2.flags: 3
kern.eventtimer.et.HPET1.quality: 440
kern.eventtimer.et.HPET1.frequency: 14318180
kern.eventtimer.et.HPET1.flags: 3
kern.eventtimer.et.HPET.quality: 450
kern.eventtimer.et.HPET.frequency: 14318180
kern.eventtimer.et.HPET.flags: 3
kern.eventtimer.et.i8254.quality: 100
kern.eventtimer.et.i8254.frequency: 1193182
kern.eventtimer.et.i8254.flags: 1
kern.eventtimer.et.LAPIC.quality: 100
kern.eventtimer.et.LAPIC.frequency: 0
kern.eventtimer.et.LAPIC.flags: 15
 

netstat -m

 

35400/11925/47325 mbufs in use (current/cache/total)
34861/8159/43020/5242880 mbuf clusters in use (current/cache/total/max)
34861/8149 mbuf+clusters out of packet secondary zone in use (current/cache)
0/12/12/509479 4k (page size) jumbo clusters in use (current/cache/total/max)
0/0/0/150956 9k jumbo clusters in use (current/cache/total/max)
0/0/0/84913 16k jumbo clusters in use (current/cache/total/max)
78572K/19347K/97919K bytes allocated to network (current/cache/total)
 

harvest_mask - по умолчанию оставил.

Share this post


Link to post
Share on other sites
pmcstat -TS instructions -w1

 

%SAMP IMAGE      FUNCTION             CALLERS
 49.7 kernel     sched_idletd         fork_exit
  2.6 kernel     cpu_search_highest   cpu_search_highest:1.6 sched_idletd:0.5
  2.2 libc.so.7  bsearch              0x64db
  2.0 pf.ko      pf_test              pf_check_in:1.1 pf_check_out:1.0
  1.9 kernel     lock_delay           __mtx_lock_sleep:1.1 _mtx_lock_spin_cookie:0.8
  1.7 kernel     cpu_search_lowest    cpu_search_lowest
  1.7 kernel     rn_match             fib4_lookup_nh_basic
  1.6 pf.ko      pf_test_rule         pf_test
  1.4 kernel     _rm_rlock            pfil_run_hooks:0.5 in_localip:0.5
  1.1 kernel     bzero
  1.1 kernel     murmur3_32_hash32    pf_find_state
  1.1 kernel     ixgbe_rxeof          ixgbe_msix_que
  1.0 kernel     sched_switch         mi_switch
  0.9 pf.ko      pf_test_state_tcp    pf_test
  0.8 pf.ko      pf_normalize_ip      pf_test
  0.7 kernel     ip_tryforward        ip_input
  0.7 pf.ko      pf_match_translation pf_get_translation
  0.6 kernel     bcopy
  0.6 pf.ko      pf_normalize_tcp     pf_test
  0.6 kernel     critical_exit
 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now