Hello, Vadim Goncharov!
On Tue, Apr 05, 2011 at 07:12:17PM +0700
[email protected] wrote about "Re: [freebsd] ngctl: send msg: No buffer
space available":
> 05.04.11 @ 18:16 Lystopad Aleksandr wrote:
>
> >>>>>При попытке сделать ngctl list получаю subj. В утреннее время, когда
> >>>>>на mpd меньше нагрузка -- ngctl list работает. В пики примерно 500
> >>>>>интерфейсов у mpd. Утром 200-300. При этом даже в пики телнет в mpd
> >>>>>админ-консоль пускает. Можно смотреть инфу, которую предоставляет
> >>>>>mpd. Юзера работают даже в пики, но subj пугает.
> >>>>
> >>>>Смахивает на нехватку mbuf. Попробовать поднять kern.ipc.nmbclusters
^^^ - вот в этой строке прозвучала идея поднять kern.ipc.nmbclusters
> >>>
> >>>Это которые в netstat -m? Дык там валом, похоже.
> >>
> >>Ну, отдельной крутилки для самих mbuf нет. В контексте прерывания
> >>доступно
> >>не всё из свободного количества. Возможно, дело в этом, надо проверять.
> >
> >Было kern.ipc.nmbclusters=128000, поднял в 2 раза. Это значит у меня
> >будет выделятся до 512Мб памяти для этих целей? Верно, же?
>
> До 576, если точнее. Хотя судя по выясненному ниже, это был другой code
> path, дело не в кластерах, и можно вернуть nmbclusters обратно (память
> тоже не резиновая).
А что выяснилось ниже?
> >>>>>Добавил в sysctl
> >>>>>
> >>>>>net.graph.maxdgram=128000
> >>>>>net.graph.recvspace=128000
> >>>>>
> >>>>>не помогло. При больших значениях вообще mpd не запускается.
> >>>>
> >>>>При больших значениях надо еще проверять, чтобы kern.ipc.maxsockbuf
> >>был
> >>>>соответствующим.
> >>>
> >>>Вадим, спасибо за ответ!!!!
> >>
> >>А помогло?
> >
> >Ну С kern.ipc.nmbclusters=256000 получилось поставить
> >net.graph.maxdgram и net.graph.recvspace в значение 196000.
> >
> >mpd не перестартовывал, но ngctl list стал выводить результат, хотя
> >за минуту до ввода этих крутилок выдавался сабж.
>
> Гм, не опечатка? Может таки maxsockbuf, а не nmbclusters?
Ну вы предложили, Вадим, поднять kern.ipc.nmbclusters.
Я готов крутить все что нужно, лишь бы помогло. Но четкого понимания
пока нету. :(
> >А как бы без прерывания пользовательских сессий узнать поднимится ли
> >mpd в следующий раз при таких настройках? Или если работает сейчас,
> >то и поднимется?
>
> В код mpd не смотрел. Думаю, поднимется.
>
> >>>А как самому мониторить это? Где посмотреть текущее потребление?
> >>Потребление чего именно?
> >
> >Ну потребление процессом mpd буферов. Потребление вообще netgraph-ом
> >памяти, буферов и тд. Я хочу знать хватает или нет, может надо
> >добавить. Хочу это знать и мониторить.
>
> Сам процесс mpd их почти не потребляет (можно смотреть в netstat, с
> разными -f), а отдельной статистики в ядре, насколько мне известно, кроме
> vmstat -m / vmstat -z не ведется (из соображений производительности).
Вот мои результаты:
# vmstat -m:
Type InUse MemUse HighUse Requests Size(s)
....
netgraph_msg 0 0K - 1836290 64,128,256,512,1024
netgraph_node 2726 682K - 20208 256
netgraph_hook 9288 1161K - 84544 128
netgraph 1946 3235K - 15454 64,256,4096
netgraph_sock 5 1K - 40 128
netgraph_path 0 0K - 978589 16,32
netgraph_mppc 0 0K - 1 1024
netgraph_pppoe 391 37K - 6035 64,512
netgraph_iface 388 49K - 2364 128
netgraph_ppp 388 4656K - 2364
netgraph_bpf 7720 1641K - 60970 128,1024
#
При таких значениях использования памяти переменные
net.graph.maxdgram и net.graph.recvspace задранные в 128000 и выше
похоже ничего не меняют? Верно?
Вот еще:
# vmstat -z|grep -E "(ITEM|NetG)"
ITEM SIZE LIMIT USED FREE REQUESTS FAILURES
NetGraph items: 72, 8207, 1, 376, 1052612, 0
NetGraph data items: 72, 2059, 0, 319, 1550143610, 0
#
--
Lystopad Olexandr