Jump to content

Recommended Posts

Posted

Странная проблема на FreeBSD 11.1-RELEASE #0 r321309, mpd5.8, PPPoE - не поднимает более 500 сессий..

kern.ipc.maxpipekva: 267767808

net.graph.maxdgram: 8388608
net.graph.maxdata: 65536
net.graph.maxalloc: 65536

net.graph.recvspace: 8388608

kern.ipc.maxsockbuf: 83886080

В конфиге mpd

set link max-children 5000

Чертовщина какая-то..

На древней машине с FreeBSD 9.0 и mpd5.6 с теми же конфигами без проблем взлетают 800 и более.

 

  • Replies 56
  • Created
  • Last Reply

Top Posters In This Topic

Posted

Это нетграф.
Там  при числе примерно 530 узлов текстовый формат сменяется бинарным.

Я репортил этот баг, только недавно пофиксили.
И, кстати, FreeBSD 9.0 и 11.1 давно EOL
 

Posted

@vlad11, т.е. другого решения, как переход на FreeBSD 12.2 и выше не существует?

Кстати, а на FreeBSD 12.0-RELEASE-p13 сей баг тоже существует?

У меня на ней тоже mpd живет, но там более 450 сессий пока нет. Но в перспективе, возможно и перевалит за 500..

 

Posted

Вы можете попытаться сделать бэкпорт на свою версию.
 

54 минуты назад, AlKov сказал:

Кстати, а на FreeBSD 12.0-RELEASE-p13 сей баг тоже существует? 

Ну, посмотрите версию src. Патч от 8 февраля 2021 года.

Posted

Брэк, господа! :-)

Это

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

Вы можете попытаться сделать бэкпорт на свою версию.

и это

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

Ну, посмотрите версию src. 

и это

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

Ну или банально ручками

увы, не мой уровень..

Если возможно, как-нибудь попроще?

 

В первом случае переустановка ОС на Release 12.2 (October, 2020) решит проблему, или этот баг и там есть?

Во втором случае (с FreeBSD 12.0-RELEASE-p13), переустановка крайне нежелательна (машинка уже в продакшен). freebsd-update поможет?

Или в ней этот баг отсутствует? Как убедиться, подскажите пожалуйста.

Posted

А все-таки, однозначно ли это в netgraph-е проблема?

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

в нетграче редко что то меняется.

Может какую-то системную переменную ОСеписатели  кастрировали? Что-то связанное с количеством интерфейсов, например?

А в самом netgraph-е можно что-либо "покрутить", не залезая в ядро?

 

Posted
13 часов назад, AlKov сказал:

увы, не мой уровень..

Если возможно, как-нибудь попроще?

Пригласите специалиста :)

 

13 часов назад, AlKov сказал:

В первом случае переустановка ОС на Release 12.2 (October, 2020) решит проблему, или этот баг и там есть?

Во втором случае (с FreeBSD 12.0-RELEASE-p13), переустановка крайне нежелательна (машинка уже в продакшен). freebsd-update поможет?

Очевидно что нет, ибо только зафиксили, оно в main и скорее всего в 13 портировали, в 12 - хз, если да, то не сильно вероятно что оно бинарниками уже есть.

 

6 часов назад, AlKov сказал:

Может какую-то системную переменную ОСеписатели  кастрировали? Что-то связанное с количеством интерфейсов, например?

А в самом netgraph-е можно что-либо "покрутить", не залезая в ядро?

Почитайте хотя бы с переводчиком, дали же ссылку на описание проблемы и решения (в виде патча).

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

Пригласите специалиста :)

"Пригласил" (себя любимого), другие не идут.. :-)

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

Почитайте хотя бы с переводчиком, дали же ссылку на описание проблемы и решения (в виде патча).

Почитал. И "с" и "без"..

Дело в том, что еще с самого начала у меня появились сомнения в том, что мы обсуждаем одну и ту же проблему.

Проявление проблемы, описанное в багрепорте, не совпадает с тем, что наблюдается в моем случае.

У меня нет ни kernel panic, нет даже падения mpd, вообще ничего явно криминального нет! Все как бы работает! 

Я бы вообще не заметил проблемы, если бы не знал, что к mpd должно подключиться около 800 клиентов, а в реале подключается только 500.

 

Далее.. Сравниваем блоки в файле ng_base.c, предлагаемые для изменения с двух NAS-ов:

1. с древнего на FreeBSD 9.0 и mpd5.6, который 800 соединений держит и не кашляет.


    case NGM_BINARY2ASCII:
        {
        int bufSize = 20 * 1024;    /* XXX hard coded constant */

.....

 

} else {
            if ((error = ng_unparse(argstype,
                (u_char *)binary->data,
                ascii->data, bufSize)) != 0) {
                NG_FREE_MSG(resp);
                break;
            }

2. со свежепоставленной  FreeBSD 12.2 -... дублировать не имеет смысла - один-в-один (не целиком, конечно же, только то, что предлагается исправить).

Однако, древний не кашляет без этого патча!.

К сожалению, не смог посмотреть на FreeBSD 11.1 (где все началось). К моменту появления желания взглянуть, ее уже не существовало - снес и поставил 12.2.

12.2 еще не тестировал, пока не все готово. Но есть очень сильные подозрения, что грабли будут лежать там же..

 

Вот отсюда и истекают все мои "глупые предположения"..

Или они все же действительно глупые?

Растолкуйте пожалуйста, если не сложно.

 

P.S. Глянул в предлагаемые для патча блоки ng_base.c на FreeBSD 12.0-RELEASE-p13 - аналогично древнему с 9-ки.

 

P.P.S. Решил все-таки пропатчить модуль на свежей системе.

Есть вопрос - я правильно понимаю, что без пересборки ядра не обойтись? 

Давно не занимался подобной "ерундой", забыл уже, что  и как оно делается.. :-)

 

Posted
5 часов назад, AlKov сказал:

P.P.S. Решил все-таки пропатчить модуль на свежей системе.

Есть вопрос - я правильно понимаю, что без пересборки ядра не обойтись? 

 

Надо пересобирать.

Posted
1 час назад, No_name сказал:

Надо пересобирать.

А если так -

#cd /usr/src/sys/modules/netgraph
#patch ...
#make obj && make depend && make && make install

Вроде как все собралось и mpd модуль загрузил

# kldstat


Id Refs Address                Size Name
 1   22 0xffffffff80200000  227ad00 kernel
 2    1 0xffffffff82722000     7268 ioat.ko
 3    1 0xffffffff8272a000     2150 ng_socket.ko
 4    4 0xffffffff8272d000     9bd0 netgraph.ko
 5    1 0xffffffff82737000     3070 ng_mppc.ko
 6    1 0xffffffff8273b000      1e3 rc4.ko
 7    1 0xffffffff8273c000     1770 ng_ether.ko
 8    1 0xffffffff8273e000     4368 ng_pppoe.ko
 9    1 0xffffffff82743000     1860 uhid.ko
10    1 0xffffffff82745000     2908 ums.ko

Единственно пока не пойму, почему не загружен ng_car.ko.. 

Или он потом загрузится, когда авторизуется хотя бы один клиент и получит параметры шейпера?

 

Posted
12 часов назад, AlKov сказал:

Но есть очень сильные подозрения, что грабли будут лежать там же..

vmstat -z

Ещё можно посмотреть, но если будут - будем дальше копать.

 

12 часов назад, AlKov сказал:

P.S. Глянул в предлагаемые для патча блоки ng_base.c на FreeBSD 12.0-RELEASE-p13 - аналогично древнему с 9-ки.

Достаточно было в гит посмотреть чтобы увидеть около нулевую активность в нетграфе за последние годы :)

Максимум пару модулей добавили и мелочь правили.

 

12 часов назад, AlKov сказал:

P.P.S. Решил все-таки пропатчить модуль на свежей системе.

Есть вопрос - я правильно понимаю, что без пересборки ядра не обойтись? 

Давно не занимался подобной "ерундой", забыл уже, что  и как оно делается.. :-)

Прямо подвиг :)

Я обычно http://www.netlab.linkpc.net/download/software/os_cfg/FBSD/13/base/root/bin/fbsd_fast_update.sh

запускаю и оно мне само всё пересобирает и переустанавливает, в зависимости от машины и актуальности содержимого ccache занимает нынче от 4 минут до ...примерно часа, хуже на райзенах не было пока, не считая моментов апгрейда с 12 на 13, когда там кросскомпилятор собирается а ccache грохнут.

Это у меня такая рутинная штука, вот взбрело мне в голову обновить систему, я исходники проапгрейдил и скрипт запустил, пока по инету капашился - уже готово.

http://www.netlab.linkpc.net/download/software/os_cfg/FBSD/13/base/root/bin/clean_system.sh

эта штука вычищает старый мусор после обновления, но её нельзя юзать отдельно от предыдущего скрипта и его зависимостей, потом что оно выставляет время последней модификации на одно и тоже всем файлам перед установкой, а этот скрипт ищет всё что старее, и на обычной системе он снесёт нахрен что попало :)

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

 

5 часов назад, AlKov сказал:

Единственно пока не пойму, почему не загружен ng_car.ko.. 

kldload ng_car

в помощь :)

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

vmstat -z

Ещё можно посмотреть, но если будут - будем дальше копать.

А что конкретно там смотреть? 

 

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

Прямо подвиг :)

Нууу.. Кому и кобыла невеста! (с) дворник Тихон. :-)

 

P.S. Немного оффтопа..

Ну вот объясните, пожалуйста мне тупому, как дальше работать, если с каждым обновлением ОС, предыдущие версии объявляются в EOL с закрытием доступа к дистрибутивам, а в новых версиях ломают все, до чего могут только дотянуться!

Вот небольшой примерчик (Вас, Ivan_83, кстати касается ;-) ).

Беру отсюда пример конфига loader.conf для 12-й фри.. Вбиваю параметр - hw.igb.rx_process_limit="4096" и.. Догадайтесь с трех раз!

Да-да! Именно так - sysctl: unknown oid 'hw.igb.rx_process_limit'

В 11-й фре есть такая буква в этом слове, в 12-й - немА!

И, возвращаясь к теме, после этого начинаем искать пропажу под фонарем, только потому, что там светлее!

 

Posted
3 часа назад, AlKov сказал:

Ну вот объясните, пожалуйста мне тупому, как дальше работать, если с каждым обновлением ОС, предыдущие версии объявляются в EOL с закрытием доступа к дистрибутивам

Они сюда переезжают.

Posted

Ох уж эти порты... Ну онанизм он так и так ручной :)

Ну тут каждый сам для себея решает как быть дальше. 

Я под свою старую версию биллинга мускул с сороцов собрал и норм, дальше работает.

Ну а что еще делать...

Posted
13 часов назад, AlKov сказал:

А что конкретно там смотреть?

Столбик FAIL.

 

13 часов назад, AlKov сказал:

Ну вот объясните, пожалуйста мне тупому, как дальше работать, если с каждым обновлением ОС, предыдущие версии объявляются в EOL с закрытием доступа к дистрибутивам, а в новых версиях ломают все, до чего могут только дотянуться!

Вот небольшой примерчик (Вас, Ivan_83, кстати касается ;-) ).

Беру отсюда пример конфига loader.conf для 12-й фри.. Вбиваю параметр - hw.igb.rx_process_limit="4096" и.. Догадайтесь с трех раз!

Да-да! Именно так - sysctl: unknown oid 'hw.igb.rx_process_limit'

1. Зачем вам дистрибутив старья?

 

2. Изменения происходят потому что есть развитие. В данном случае люди избавлялись от кода который дублируется в куче дров и вынесли его в iflib.

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

 

3. Вы этим пользуетесь на сервере, куда два раза в год заглядываете, а у меня дома всё на фре, и десктопы и коди и сервер - думаете я не знаю про изменения?)

Но в целом ситуация такая: или ты в курсе каждый день/неделю/месяц или раз в 1-2-5 лет тебе нужно капитально всё переучивать/переделывать.

Поймите, это не конечный продукт, это платформа, для более или менее (админов) разработчиков.

Хотите стабильности - вам ближе к PFSence и прочим дистрам для конечных юзеров.

 

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

Заниматься онанизмом с svn, или.. ?

Уже на git.

Порты в ближайшее время официально смигрируют, но зеркало на гитхубе уже очень актуальное.

Сама система на гит переехала как раз перед НГ.

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

А что конкретно там смотреть? 

 

Нууу.. Кому и кобыла невеста! (с) дворник Тихон. :-)

 

P.S. Немного оффтопа..

Ну вот объясните, пожалуйста мне тупому, как дальше работать, если с каждым обновлением ОС, предыдущие версии объявляются в EOL с закрытием доступа к дистрибутивам, а в новых версиях ломают все, до чего могут только дотянуться!

Вот небольшой примерчик (Вас, Ivan_83, кстати касается ;-) ).

Беру отсюда пример конфига loader.conf для 12-й фри.. Вбиваю параметр - hw.igb.rx_process_limit="4096" и.. Догадайтесь с трех раз!

Да-да! Именно так - sysctl: unknown oid 'hw.igb.rx_process_limit'

В 11-й фре есть такая буква в этом слове, в 12-й - немА!

И, возвращаясь к теме, после этого начинаем искать пропажу под фонарем, только потому, что там светлее!

 

Потому, что вы копируете эти советы с древних хаутушек (в основном Евгения Гроссбейна) и не думаете, для чего они нужны.
Например, 11 ветка очень сильно отличается от 12 и 12.2 в плане планировщика, а это очень сильно сказалось на сетевых прерываниях и работу сети под большой нагрузкой.
И тюнинг к вашему (однопоточному) mpd5 вдруг перестает работать.
 

Posted
В 25.03.2021 в 21:28, Ivan_83 сказал:

Много очень спорных вещей.
В /usr/src/Makefile указан порядок обновления.
Не хватает обработок ошибок при сборки мира или ядра.
 

make toolchains

придумали не от хорошей жизни.
Ну, и нет конфига ядра под разные версии ОС.

Из свежих чудес.
Не удавалось напрямую смигрировать с 11 ветки на 12.2-STABLE.
Удалось только через 12.0-Release (без патчей) смигрировать.
 

Posted
2 часа назад, vlad11 сказал:

Много очень спорных вещей.

Оно для покрытия моих личных нужд а не для решения проблем в планетарных масштабах.

Я лет 10 обновлялся копипастя строчки из "памятки", это вот замена моего ручного труда.

Уточню: эта штука решает проблему когда нужно обновить систему в пределах минорного релиза, для 11-12-13 оно не достаточно, мне там вокруг пришлось ещё пачку команд ввводить чтобы обновится, хотя конечно большая часть это моя специфика.

 

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

Не хватает обработок ошибок при сборки мира или ядра.

set -e же везде, ну а то что мусор останется в /tmp - мне не страшно.

 

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

make toolchains

Был нужен мне лишь однажды при мажорном обновлении, кажется 10-11.

 

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

Ну, и нет конфига ядра под разные версии ОС.

http://www.netlab.linkpc.net/download/software/os_cfg/FBSD/13/base/usr/src/sys/amd64/conf/

тут искал?

Для 12 - 13 заменить на 12.0 в URL. Остальные конфиги не сохранились.

 

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

Из свежих чудес.
Не удавалось напрямую смигрировать с 11 ветки на 12.2-STABLE.

Мне по работе надо собирать 12 фрю, у меня после миграции на 13 сборка сломалась, починилось после обновления 12 до более свежей.

А вперёд - я слишком часто пересобираю чтобы были проблемы, для живых систем не более 3-4 месяцев обычно, для тех что в виртуалках валяются и на дисках для тестов - может и пару лет быть, но обычно пофик.

И формально, можно и не мигрировать, это же не венда, можно просто поставить рядом и перетащить конфиги и поставить тот же набор портов.

Posted

Ну что ж.. Вернемся к теме..

 

12.2-RELEASE amd64

mpd5.9

Модуль netgraph (ng_base.c) пропатчен и скомпилирован

#cd /usr/src/sys/modules/netgraph

#make obj && make depend && make && make install

Ядро не трогал. 

 

 

loader.conf

kern.maxusers=512
net.inet6.ip6.auto_linklocal=0
net.graph.maxdata=65536
net.graph.maxalloc=65536
kern.maxfiles=204800
hw.igb.rxd=4096
hw.igb.txd=4096
hw.igb.max_interrupt_rate=32000
hw.igb.enable_msix=1
hw.igb.rx_process_limit=1000
net.isr.defaultqlimit=4096
net.inet.ip.fw.default_to_accept="1"
ipfw_load="YES"

sysctl.conf

net.inet.tcp.delayed_ack=0
net.inet.ip.portrange.last=30000
net.inet.tcp.sendspace=65535
net.inet.tcp.recvspace=65535
net.local.stream.recvspace=65535
net.local.stream.sendspace=65535
net.inet.ip.forwarding=1
net.inet.tcp.always_keepalive=0
kern.corefile="/var/tmp/%U.%N.core"
kern.ipc.shmall=65536
kern.ipc.shmmax=268435456
kern.ipc.nmbclusters=262144
kern.ipc.somaxconn=4096
kern.ipc.maxsockbuf=167772160
kern.maxfiles=204800
kern.maxfilesperproc=200000
kern.ipc.soacceptqueue=16384
net.inet.tcp.maxtcptw=40960
net.inet.tcp.msl=30000
net.inet.tcp.syncookies=1
net.inet.tcp.nolocaltimewait=1
kern.ipc.shm_use_phys=1
net.inet.icmp.icmplim=5000
net.inet.ip.intr_queue_maxlen=5000
hw.pci.enable_msix=1
hw.pci.enable_msi=1
kern.maxfiles=204800
net.graph.maxdgram=1024000
net.graph.recvspace=1024000
hw.pci.enable_msix=1
hw.pci.enable_msi=1
kern.maxfiles=204800
net.graph.maxdgram=8388608
net.graph.recvspace=8388608
net.route.netisr_maxqlen=4096

 

vmstat -z


vmstat -z
ITEM                   SIZE  LIMIT     USED     FREE      REQ FAIL SLEEP

UMA Kegs:               248,      0,     132,       3,     132,   0,   0
UMA Zones:             2512,      0,     149,       0,     149,   0,   0
UMA Slabs:               80,      0,   12307,      43,   13026,   0,   0
UMA Hash:               256,      0,       7,       8,      14,   0,   0
4 Bucket:                32,      0,     181,    4569,  172186,3008,   0
6 Bucket:                48,      0,      42,    4025,    2554,   0,   0
8 Bucket:                64,      0,      85,    4999,  171472,  21,   0
12 Bucket:               96,      0,     113,    3577,  144879,   0,   0
16 Bucket:              128,      0,     238,    2149,  114420,   1,   0
32 Bucket:              256,      0,    1097,    1123,  304171,   9,   0
64 Bucket:              512,      0,     331,    1301,   19754, 395,   0
128 Bucket:            1024,      0,     328,     700,   17229,   1,   0
256 Bucket:            2048,      0,     493,     187,  246768, 997,   0
vmem:                  1856,      0,       5,       1,       5,   0,   0
vmem btag:               56,      0,   58400,    1595,   58659, 427,   0

Далее нигде FAIL нет. Приведенные в дампе не изменялись в процессе подключений клиентов.

 

Итог: ~470 PPPoE соединений max..

 

Возвращаю древний 9.0-RELEASE amd64, mpd5.6 ~795 PPPoE соединений..

 

vmstat -z с 9-ки.  (uptime 9:43  up 24 days, 19:22)


vmstat -z
ITEM                   SIZE  LIMIT     USED     FREE      REQ FAIL SLEEP

UMA Kegs:               208,      0,      88,      14,      88,   0,   0
UMA Zones:             1408,      0,      88,       0,      88,   0,   0
UMA Slabs:              568,      0,    6010,    1249,  188881,   0,   0
UMA RCntSlabs:          568,      0,    8046,    1005,   82081,   0,   0
UMA Hash:               256,      0,       0,       0,       3,   0,   0
16 Bucket:              152,      0,      22,     103,     177,   0,   0
32 Bucket:              280,      0,      56,     126,     289,   5,   0
64 Bucket:              536,      0,      53,      80,     771, 101,   0
128 Bucket:            1048,      0,    1186,       2,   54419,68923,   0

Что я сделал не так? 

 

Posted

Кстати.. 

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

Потому, что вы копируете эти советы с древних хаутушек (в основном Евгения Гроссбейна)

Вообще-то, этой  "древней" хаутушке меньше года от роду..


### Rozhuk Ivan 2009.06 - 2020

### sysctl.conf ### 12.x

# $FreeBSD: stable/12/sbin/sysctl/sysctl.conf 337624 2018-08-11 13:28:03Z brd $

И автор совсем не Гроссбейн, а какой-то очень знакомый. ;-)

Posted
53 минуты назад, AlKov сказал:

Вообще-то, этой  "древней" хаутушке меньше года от роду..

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

 

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

Что я сделал не так? 

нужен вывод

netstat -m 


под нагрузкой

Posted
22 часа назад, vlad11 сказал:

нужен вывод


netstat -m 


под нагрузкой

# netstat -m

8585/11920/20505 mbufs in use (current/cache/total)
8471/7233/15704/1017858 mbuf clusters in use (current/cache/total/max)
177/5136 mbuf+clusters out of packet secondary zone in use (current/cache)
0/22/22/508929 4k (page size) jumbo clusters in use (current/cache/total/max)
0/0/0/150793 9k jumbo clusters in use (current/cache/total/max)
0/0/0/84821 16k jumbo clusters in use (current/cache/total/max)
19091K/17534K/36625K bytes allocated to network (current/cache/total)
0/0/0 requests for mbufs denied (mbufs/clusters/mbuf+clusters)
0/0/0 requests for mbufs delayed (mbufs/clusters/mbuf+clusters)
0/0/0 requests for jumbo clusters delayed (4k/9k/16k)
0/0/0 requests for jumbo clusters denied (4k/9k/16k)
0 sendfile syscalls
0 sendfile syscalls completed without I/O request
0 requests for I/O initiated by sendfile
0 pages read by sendfile as part of a request
0 pages were valid at time of a sendfile request
0 pages were valid and substituted to bogus page
0 pages were requested for read ahead by applications
0 pages were read ahead by sendfile
0 times sendfile encountered an already busy page
0 requests for sfbufs denied
0 requests for sfbufs delayed

 

# netstat -nr | grep ng | wc -l
     465

Трафика около 400 Мбит/с.

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 и с Политикой конфиденциальности.