The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Не меняется net.isr.maxthreads."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Маршрутизация, NAT)
Изначальное сообщение [ Отслеживать ]

"Не меняется net.isr.maxthreads."  +/
Сообщение от 4el email(ok) on 01-Окт-11, 16:04 
Заметили что наш IPNAT в связке с IPFW шейпером(+ пару других утилиток) напрягает восновном 2 ядра из 8 при больших нагрузках. Нашли такое решение как параметр net.isr.maxthreads – собственно, количество потоков, разгребающих очередь пакетов. Добавили в файл /boot/loader.conf --> net.isr.maxthreads=8. но после перезагрузки значение всё равно 1.
ОС FreeBSD 8.1-RELEASE amd64. Что делаем не так, помогите.
Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Не меняется net.isr.maxthreads."  +/
Сообщение от DeadLoco (ok) on 01-Окт-11, 16:20 
> Что делаем не так, помогите.

Все так, это фича. Если хотите параллелить нат - используйте нг_нат, создавайте отдельные номерные ноды под отдельные правила, и будет вам щясье. Из ипфв обращение к нетграфу даже логичней выглядит, чем к ипфв_нату. Плюс есть масса плюшек, связанных с таблеаргами.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Не меняется net.isr.maxthreads."  +/
Сообщение от 4el email(ok) on 01-Окт-11, 16:27 
>> Что делаем не так, помогите.
> Все так, это фича. Если хотите параллелить нат - используйте нг_нат, создавайте
> отдельные номерные ноды под отдельные правила, и будет вам щясье. Из
> ипфв обращение к нетграфу даже логичней выглядит, чем к ипфв_нату. Плюс
> есть масса плюшек, связанных с таблеаргами.

А можно по сути вопроса. Почему фича не применяется?

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Не меняется net.isr.maxthreads."  +/
Сообщение от DeadLoco (ok) on 01-Окт-11, 16:50 
> А можно по сути вопроса. Почему фича не применяется?

Потому что ипнат - однопоточен архитектурно. Из-за одной общей таблицы трансляции. В случае сопряжения с нетграфом ипфв работает брокером пакетов, сбрасывая их на отдельные ноды нг_ната, каждая из которых имеет свою таблицу преобразования адресов. Нужно только аккуратно разруливать входящие пакеты, чтобы обратка попадала на ту же ноду, через которую шел исходящий траффик.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

5. "Не меняется net.isr.maxthreads."  +/
Сообщение от 4el email(ok) on 01-Окт-11, 17:09 
>> А можно по сути вопроса. Почему фича не применяется?
> Потому что ипнат - однопоточен архитектурно. Из-за одной общей таблицы трансляции. В
> случае сопряжения с нетграфом ипфв работает брокером пакетов, сбрасывая их на
> отдельные ноды нг_ната, каждая из которых имеет свою таблицу преобразования адресов.
> Нужно только аккуратно разруливать входящие пакеты, чтобы обратка попадала на ту
> же ноду, через которую шел исходящий траффик.

т.е. получается, что тормоза всего сервера при > 100к активных сессий ("ipnat -s | grep inuse") как раз и есть результат этого ограничения однопоточности? 2 ядра постоянно загружены на 100%, и пропадают сразу после очистки таблиц (ipnat -CF).. а то тормоза как-то не совпадают по логике с наличием 2х 4-ядерных xeon-ов

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

4. "Не меняется net.isr.maxthreads."  –1 +/
Сообщение от DeadLoco (ok) on 01-Окт-11, 16:55 
> Добавили в файл /boot/loader.conf --> net.isr.maxthreads=8. но после
> перезагрузки значение всё равно 1.
> ОС FreeBSD 8.1-RELEASE amd64. Что делаем не так, помогите.

А, да. Переменные ядра рулятся не из /бут/лоадер.конф, а из /етц/сисцтл.конф

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

6. "Не меняется net.isr.maxthreads."  +/
Сообщение от 4el email(ok) on 01-Окт-11, 17:35 
>> Добавили в файл /boot/loader.conf --> net.isr.maxthreads=8. но после
>> перезагрузки значение всё равно 1.
>> ОС FreeBSD 8.1-RELEASE amd64. Что делаем не так, помогите.
> А, да. Переменные ядра рулятся не из /бут/лоадер.конф, а из /етц/сисцтл.коF

А ничего что:
# sysctl net.isr.maxthreads=8
sysctl: oid 'net.isr.maxthreads' is read only

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

11. "Не меняется net.isr.maxthreads."  +/
Сообщение от 4el email(ok) on 03-Окт-11, 08:28 
>>> Добавили в файл /boot/loader.conf --> net.isr.maxthreads=8. но после
>>> перезагрузки значение всё равно 1.
>>> ОС FreeBSD 8.1-RELEASE amd64. Что делаем не так, помогите.
>> А, да. Переменные ядра рулятся не из /бут/лоадер.конф, а из /етц/сисцтл.коF
> А ничего что:
> # sysctl net.isr.maxthreads=8
> sysctl: oid 'net.isr.maxthreads' is read only

Кстати из /etc/sysctl.conf, тоже ничего не поменяло.

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

12. "Не меняется net.isr.maxthreads."  +/
Сообщение от KES (ok) on 18-Ноя-11, 12:15 
>> Добавили в файл /boot/loader.conf --> net.isr.maxthreads=8. но после
>> перезагрузки значение всё равно 1.
>> ОС FreeBSD 8.1-RELEASE amd64. Что делаем не так, помогите.
> А, да. Переменные ядра рулятся не из /бут/лоадер.конф, а из /етц/сисцтл.конф

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

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

7. "Не меняется net.isr.maxthreads."  –3 +/
Сообщение от pavlinux (ok) on 01-Окт-11, 20:29 
>  Что делаем не так, помогите.

Linux - для умных, Cisco - для богатых, FreeBSD - для тупых жмотов. :)


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

8. "Не меняется net.isr.maxthreads."  +/
Сообщение от mr_gfd on 02-Окт-11, 01:28 
>>  Что делаем не так, помогите.
> Linux - для умных, Cisco - для богатых, FreeBSD - для тупых
> жмотов. :)

толсто.

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

13. "Не меняется net.isr.maxthreads."  +/
Сообщение от KES (ok) on 18-Ноя-11, 12:16 
>>  Что делаем не так, помогите.
> Linux - для умных, Cisco - для богатых, FreeBSD - для тупых
> жмотов. :)

вы наверное сильно умный ))

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

15. "Не меняется net.isr.maxthreads."  +/
Сообщение от павлинах on 18-Ноя-11, 22:24 
>>>  Что делаем не так, помогите.
>> Linux - для умных, Cisco - для богатых, FreeBSD - для тупых
>> жмотов. :)
> вы наверное сильно умный ))

Да, спасибо.

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

9. "Не меняется net.isr.maxthreads."  +/
Сообщение от _sirius_ (ok) on 02-Окт-11, 15:21 
А у вас ядро собрано с DEVICE POLLING?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

10. "Не меняется net.isr.maxthreads."  +/
Сообщение от 4el email(ok) on 03-Окт-11, 08:25 
> А у вас ядро собрано с DEVICE POLLING?

Нет

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

14. "Не меняется net.isr.maxthreads."  +/
Сообщение от nix email(??) on 18-Ноя-11, 14:59 
> Заметили что наш IPNAT в связке с IPFW шейпером(+ пару других утилиток)
> напрягает восновном 2 ядра из 8 при больших нагрузках. Нашли такое
> решение как параметр net.isr.maxthreads – собственно, количество потоков, разгребающих
> очередь пакетов. Добавили в файл /boot/loader.conf --> net.isr.maxthreads=8. но после
> перезагрузки значение всё равно 1.
> ОС FreeBSD 8.1-RELEASE amd64. Что делаем не так, помогите.

Я заметил, что не меняеются параметры
net.isr.direct=0                      # interrupt handling via multiple CPU
net.isr.direct_force=0
их нужно установить в 1, что бы работала система обработки прерываний разными корами\процессорами. Я их установил в 1 в лоадер.конф, но после ребута - все по нолям.
А у вас как?

---
net.isr.bindthreads=0                 # do not bind threads to CPUs
net.isr.direct=1                      # interrupt handling via multiple CPU
net.isr.direct_force=1                # "
net.isr.maxthreads=3                  # Max number of threads for NIC IRQ balancing

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

16. "Не меняется net.isr.maxthreads."  +/
Сообщение от KES (ok) on 19-Ноя-11, 00:35 
# sysctl -a | grep net.isr
net.isr.numthreads: 3
net.isr.maxprot: 16
net.isr.defaultqlimit: 256
net.isr.maxqlimit: 10240
net.isr.bindthreads: 0
net.isr.maxthreads: 3
net.isr.direct: 0
net.isr.direct_force: 0


last pid: 46125;  load averages:  1.26,  1.30,  1.33     up 0+12:43:57  22:16:07
222 processes: 6 running, 198 sleeping, 18 waiting
CPU 0:  3.7% user,  0.0% nice, 11.1% system,  9.9% interrupt, 75.3% idle
CPU 1:  0.0% user,  0.0% nice,  2.5% system, 37.0% interrupt, 60.5% idle
CPU 2:  2.5% user,  0.0% nice,  1.2% system, 34.6% interrupt, 61.7% idle
CPU 3:  1.2% user,  0.0% nice,  6.2% system, 27.2% interrupt, 65.4% idle
Mem: 258M Active, 1662M Inact, 201M Wired, 316K Cache, 112M Buf, 1777M Free
Swap: 4096M Total, 4096M Free

  PID USERNAME   PRI NICE   SIZE    RES STATE   C   TIME   WCPU COMMAND
   11 root       155 ki31     0K    32K CPU3    3 525:10 76.61% {idle: cpu3}
   11 root       155 ki31     0K    32K RUN     2 520:14 76.37% {idle: cpu2}
   11 root       155 ki31     0K    32K CPU0    0 509:33 75.68% {idle: cpu0}
   11 root       155 ki31     0K    32K RUN     1 518:15 71.14% {idle: cpu1}
   12 root       -72    -     0K   152K CPU1    1 269:13 35.25% {swi1: netisr 0}
   12 root       -72    -     0K   152K WAIT    3 174:30 19.97% {swi1: netisr 2}
   12 root       -92    -     0K   152K WAIT    0 108:13 12.55% {irq256: re0}
   12 root       -72    -     0K   152K WAIT    2  84:00 12.55% {swi1: netisr 3}
   13 root       -16    -     0K    32K sleep   3  48:04  4.10% {ng_queue0}
   13 root       -16    -     0K    32K sleep   0  48:04  4.05% {ng_queue2}
   13 root       -16    -     0K    32K sleep   3  48:06  4.00% {ng_queue3}
   13 root       -16    -     0K    32K sleep   0  48:02  4.00% {ng_queue1}
46124 cacti       26    0 11960K  3480K select  0   0:00  0.83% snmpget
46078 cacti       45    0 23716K 16432K piperd  1   0:00  0.73% php
46089 cacti       46    0 11116K  2836K piperd  2   0:00  0.73% perl5.10.1
46090 root        46    0  9728K  1952K select  3   0:00  0.73% sudo
46116 cacti       27    0 11960K  3592K select  0   0:00  0.63% snmpwalk
46123 cacti       52    0 11116K  2824K piperd  0   0:00  0.63% perl5.10.1
6989 root        21    0 13408K  5576K select  3  16:51  0.54% snmpd
46073 cacti       52    0 23716K 16440K piperd  2   0:00  0.54% php
46091 root        21    0  9672K  1512K select  0   0:00  0.44% ping

Как видно, работают все ядра, но вот в этой ситуации:

net.isr.bindthreads=0                
net.isr.direct=1                      
net.isr.direct_force=1                
net.isr.maxthreads=3  

#top -SIHP
last pid: 14902;  load averages:  1.92,  2.12,  1.96    up 0+17:47:31  19:59:04
226 processes: 12 running, 197 sleeping, 17 waiting
CPU 0:  0.6% user,  0.0% nice,  1.2% system, 88.3% interrupt,  9.8% idle
CPU 1:  1.8% user,  0.0% nice, 29.4% system,  0.0% interrupt, 68.7% idle
CPU 2:  3.7% user,  0.0% nice, 30.7% system,  0.0% interrupt, 65.6% idle
CPU 3:  3.1% user,  0.0% nice, 25.8% system,  0.0% interrupt, 71.2% idle
Mem: 264M Active, 1641M Inact, 272M Wired, 832K Cache, 112M Buf, 1721M Free
Swap: 4096M Total, 4096M Free

  PID USERNAME   PRI NICE   SIZE    RES STATE   C   TIME   WCPU COMMAND
   12 root       -92    -     0K   152K CPU0    0 354:30 96.78% {irq256: re0}
   11 root       155 ki31     0K    32K RUN     1 929:16 77.83% {idle: cpu1}
   11 root       155 ki31     0K    32K RUN     3 922:41 72.95% {idle: cpu3}
   11 root       155 ki31     0K    32K RUN     2 904:02 71.63% {idle: cpu2}
   13 root       -16    -     0K    32K CPU3    1  71:11 18.65% {ng_queue1}
   13 root       -16    -     0K    32K RUN     1  71:10 18.36% {ng_queue3}
   13 root       -16    -     0K    32K RUN     3  71:18 17.63% {ng_queue0}
   13 root       -16    -     0K    32K RUN     1  71:11 17.14% {ng_queue2}
   11 root       155 ki31     0K    32K RUN     0 682:25 10.55% {idle: cpu0}
55709 root        20    0 13408K  5840K select  2  15:50  1.71% snmpd
14902 cacti       33    0 11960K  3480K select  1   0:00  1.12% snmpget
14864 cacti       46    0 11116K  2836K piperd  3   0:00  1.12% perl5.10.1
14867 root        46    0  9728K  1956K select  3   0:00  1.12% sudo

Работает только одно ядро. т.е. выходит, что одно ядро привязывается к одной сетевухе
через время будет вторая сетевуха, попробую провести тесты.
В вашей ситуации вы можете попробовать установить
net.isr.direct_force=0

тогда, опять же из постов на форумах, вроде как, будет передаваться обработка в другие ядра, если это первое загружено. Я это не тестировал.

в моём же случае я только оттюнил net.isr.maxthreads: 3. Как работает вы видите. Будет ли превышен лимит, который был достигнут при direct and force =1 посмотрим.

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

17. "Не меняется net.isr.maxthreads."  +/
Сообщение от nix email(??) on 19-Ноя-11, 01:11 
>[оверквотинг удален]
> Работает только одно ядро. т.е. выходит, что одно ядро привязывается к одной
> сетевухе
> через время будет вторая сетевуха, попробую провести тесты.
> В вашей ситуации вы можете попробовать установить
> net.isr.direct_force=0
> тогда, опять же из постов на форумах, вроде как, будет передаваться обработка
> в другие ядра, если это первое загружено. Я это не тестировал.
> в моём же случае я только оттюнил net.isr.maxthreads: 3. Как работает вы
> видите. Будет ли превышен лимит, который был достигнут при direct and
> force =1 посмотрим.

  Отпишитесь. ОК?

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

19. "Не меняется net.isr.maxthreads."  +/
Сообщение от KES (ok) on 07-Дек-11, 23:51 
>[оверквотинг удален]
>> сетевухе
>> через время будет вторая сетевуха, попробую провести тесты.
>> В вашей ситуации вы можете попробовать установить
>> net.isr.direct_force=0
>> тогда, опять же из постов на форумах, вроде как, будет передаваться обработка
>> в другие ядра, если это первое загружено. Я это не тестировал.
>> в моём же случае я только оттюнил net.isr.maxthreads: 3. Как работает вы
>> видите. Будет ли превышен лимит, который был достигнут при direct and
>> force =1 посмотрим.
>   Отпишитесь. ОК?

А что же вы не отписываетесь???

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

20. "Не меняется net.isr.maxthreads."  +/
Сообщение от nix email(??) on 08-Дек-11, 15:48 
>[оверквотинг удален]
>>> через время будет вторая сетевуха, попробую провести тесты.
>>> В вашей ситуации вы можете попробовать установить
>>> net.isr.direct_force=0
>>> тогда, опять же из постов на форумах, вроде как, будет передаваться обработка
>>> в другие ядра, если это первое загружено. Я это не тестировал.
>>> в моём же случае я только оттюнил net.isr.maxthreads: 3. Как работает вы
>>> видите. Будет ли превышен лимит, который был достигнут при direct and
>>> force =1 посмотрим.
>>   Отпишитесь. ОК?
> А что же вы не отписываетесь???

А у меня все по-старому))
net.isr.direct: 0
net.isr.direct_force: 0
так в 1 выставить и не удалось. я так понимаю в 9-кe по-умолчанию новый механизм включен и выключить его нельзя. С net.isr.maxthreads все ясно, с этим разобрался. Можно выставить =#CPU's

Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

21. "Не меняется net.isr.maxthreads."  +/
Сообщение от shamanu4 email on 07-Фев-12, 11:48 
>>[оверквотинг удален]
> А у меня все по-старому))
> net.isr.direct: 0
> net.isr.direct_force: 0
> так в 1 выставить и не удалось. я так понимаю в 9-кe
> по-умолчанию новый механизм включен и выключить его нельзя. С net.isr.maxthreads все
> ясно, с этим разобрался. Можно выставить =#CPU's

net.isr.direct и net.isr.direct_force меняется параметром net.isr.dispatch.
Если net.isr.dispatch=direct то:
net.isr.direct: 1
net.isr.direct_force: 1
Если net.isr.dispatch=hybrid то:
net.isr.direct: 1
net.isr.direct_force: 0
И наконец если net.isr.dispatch=deferred то:
net.isr.direct: 0
net.isr.direct_force: 0

А как решили проблему с net.isr.maxthreads? Никак не хочет меняться. в loader.conf:
net.isr.dispatch=deferred
net.isr.numthreads=4
net.isr.maxthreads=4
но в результате получаю 1.

Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

22. "Не меняется net.isr.maxthreads."  +1 +/
Сообщение от nix (??) on 07-Фев-12, 17:10 
>[оверквотинг удален]
> net.isr.direct: 1
> net.isr.direct_force: 0
> И наконец если net.isr.dispatch=deferred то:
> net.isr.direct: 0
> net.isr.direct_force: 0
> А как решили проблему с net.isr.maxthreads? Никак не хочет меняться. в loader.conf:
> net.isr.dispatch=deferred
> net.isr.numthreads=4
> net.isr.maxthreads=4
> но в результате получаю 1.

Только что специально проверил. Стоит в /boot/loader.conf

net.isr.maxthreads=2
net.isr.dispatch=deferred
Только эти две записи. (касательно очереди)
После ребута все как положено.

Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

23. "Не меняется net.isr.maxthreads."  +/
Сообщение от SergeyKa email(??) on 24-Мрт-13, 18:19 
> А как решили проблему с net.isr.maxthreads? Никак не хочет меняться. в loader.conf:
> net.isr.dispatch=deferred
> net.isr.numthreads=4
> net.isr.maxthreads=4
> но в результате получаю 1.

Смотрю по дате 2012, но все-же для следующий поколений.
Если net.isr.numthreads=1 и не меняется черех loader.conf - уберите polling из ядра.

Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

18. "Не меняется net.isr.maxthreads."  +/
Сообщение от KES (ok) on 20-Ноя-11, 16:13 
> # sysctl -a | grep net.isr
> net.isr.numthreads: 3
> net.isr.maxprot: 16
> net.isr.defaultqlimit: 256
> net.isr.maxqlimit: 10240
> net.isr.bindthreads: 0
> net.isr.maxthreads: 3
> net.isr.direct: 0
> net.isr.direct_force: 0

last pid: 25228;  load averages:  2.39,  2.33,  2.15    up 2+04:33:34  14:05:44
203 processes: 7 running, 179 sleeping, 17 waiting
CPU 0:  0.8% user,  0.0% nice, 14.2% system, 22.4% interrupt, 62.6% idle
CPU 1:  0.4% user,  0.0% nice,  6.3% system, 43.7% interrupt, 49.6% idle
CPU 2:  0.0% user,  0.0% nice,  9.1% system, 41.7% interrupt, 49.2% idle
CPU 3:  0.0% user,  0.0% nice,  5.1% system, 49.6% interrupt, 45.3% idle
Mem: 252M Active, 2374M Inact, 283M Wired, 244K Cache, 112M Buf, 990M Free
Swap: 4096M Total, 4096M Free

  PID USERNAME   PRI NICE   SIZE    RES STATE   C   TIME   WCPU COMMAND
   11 root       155 ki31     0K    32K RUN     0  38.6H 68.65% {idle: cpu0}
   12 root       -72    -     0K   152K CPU3    3 922:39 59.62% {swi1: netisr 0
   12 root       -72    -     0K   152K CPU1    1 607:43 53.76% {swi1: netisr 2
   11 root       155 ki31     0K    32K CPU1    1  38.3H 53.61% {idle: cpu1}
   11 root       155 ki31     0K    32K RUN     3  38.6H 52.25% {idle: cpu3}
   11 root       155 ki31     0K    32K RUN     2  38.2H 50.39% {idle: cpu2}
   12 root       -72    -     0K   152K WAIT    2 324:22 25.78% {swi1: netisr 3
   12 root       -92    -     0K   152K WAIT    0 346:24 16.70% {irq256: re0}
   13 root       -16    -     0K    32K sleep   2 141:52  6.69% {ng_queue3}
   13 root       -16    -     0K    32K sleep   1 141:40  6.54% {ng_queue1}
   13 root       -16    -     0K    32K sleep   1 141:45  6.20% {ng_queue0}
   13 root       -16    -     0K    32K sleep   1 141:43  6.15% {ng_queue2}
32549 root        20    0 13408K  5808K select  0  43:26  0.73% snmpd
5523 root        21    0 91472K 75760K select  2  37:14  0.34% {mpd5}

Думаю можно net.isr.maxthreads: установить и в 4, никаких проблем на данный момент не наблюдаю, одни плюсы =)

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Слёрм
Inferno Solutions
Hosting by Ihor
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2019 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру