[SOLVED] Re: net/asterisk13: memory leak under 12-CURRENT?

From: O. Hartmann <ohartmann_at_walstatt.org>
Date: Fri, 29 Sep 2017 10:59:06 +0200
On Thu, 28 Sep 2017 09:38:58 +0200
Guido Falsi <madpilot_at_FreeBSD.org> wrote:

> On 09/28/2017 08:11, O. Hartmann wrote:
> > On Wed, 27 Sep 2017 09:05:42 +0200
> > Guido Falsi <madpilot_at_FreeBSD.org> wrote:
> >   
> >> On 09/26/2017 15:41, O. Hartmann wrote:  
> >>> On Tue, 26 Sep 2017 15:06:23 +0200
> >>> Guido Falsi <madpilot_at_FreeBSD.org> wrote:    
> >>  
> >>> Since I run net/asterisk with automatic module loading (I'm new to
> >>> asterisk), this is very likely and might cause the problem somehow.
> >>>     
> >>
> >> You can exclude single modules from autoloading via modules.conf.
> >>  
> >>>> Not sure, restarting the daemon should free any leaked memory the daemon 
> >>>> has. If a killed process leaves memory locked at the system level there 
> >>>> should be some other cause.    
> >>>
> >>> Even with no runnidng asterisk, memory level drops after the last shutdown
> >>> of asterisk and keeps that low. Even for weeks! My router never shows that
> >>> high memory consumption, even under load.    
> >>
> >> But while asterisk is running does the memory usage increase unbounded
> >> till filling all available memory or does it stabilize at some point?  
> > 
> > While Asterisk is running, it doesn't consume much memory, but stopping
> > Asterisk, I would expect that the claimed memory is freed again. It isn't,
> > not all memory is freed. Starting Asterisk then again from this reduced
> > memory level, it claims its memory, "stabilzes" at a certain point while
> > running and again, stopping Asterisk leaves the free memory now at a much
> > lower level never been leveld out - as I said.
> > 
> > I played this game last night ~ 20 times until the free memory dropped
> > beneath 3 GB after asterisk has been shut down. This morning, the level was
> > at the same low level as I left it. The router has nothing special to do,
> > the workload is not memory consuming even for weeks! And if there is load,
> > after the load went away, the memory consumption always leveld out and
> > freed memory.  
> >>
> >> Asterisk is relatively memory hungry, especially with all modules
> >> enabled. It also caches and logs various information in RAM, even doing
> >> "nothing" it will cache and log that "nothing" activity. If memory does
> >> stabilize after some point it's not really a leak but it's standard
> >> memory usage. To reduce it you should disable all unused modules.  
> > 
> > I don't understand here. Even if Asterisk is memory hungry - it has ~ 3 GB
> > to use. But after stopping it, it should free the memory. BUT the system is
> > then after the stop with less memory! that is the point. Not the running
> > asterisk's memory consumption bothers me, but the fact, that after 20 start
> > and stops and waiting for days the memory once gone is never put back.  

First of all, my questions weren't ment as an offense, more a question of
interest by asking thing that I whitnessed.

> 
> VM system is not composed only of "free" and "used" ram, there ar3e
> other categories. Depending on how a program allocates and uses memory
> it's not automatically sent to the "free" pool after being reclaimed.
> 
> Allocated memory can be dirty buffers which are reclaimed after time, or
> other types of buffered data which is never reclaimed until there is
> memor7y pressure. How do you know the game you were playing has a
> similar memory usage as asterisk, which, I assure you, has some complex
> memory usage patterns in it's source.
> 
> Also asterisk leverages many parts of the kernel which a game does not
> leverage. I'm quite sure after quitting asterisk you have an higher
> "wired" memory than before starting it. That memory was not allocated by
> asterisk itself, but by the kernel while "serving" asterisk requests.
> The kernel keeps running and does not free that memory right away. in
> fact will not free it until forced by VM pressure AFAIK.

After a couple of other starts and stops yesterday, it seems, 12-Current and
Asterisk 13.17.2 have a barrier at ~ 3 GB of "free" memory - always having in
mind that this is within the very specific parameters of my setup.

Maybe it would be better first to nail down all the modules in Asterisk not
used and switch them off. 

> 
> But this is quite a complicated matter and not being a VM expert I can't
> explain it in detail. What you must understand is that many things are
> going on at a given time in a memory subsystem and looking at it through
> a single value is not indicative.

You are completely right.

> 
> > 
> > At the moment, I have mpg123 suspect doing nasty things, because the
> > vanishing memory is more prominent and indicated when voicemail system has
> > been used and mpg123 started. Not touching VM subsystem seems to free the
> > whole memory claimed by asterisk after stopping asterisk, apart from maybe
> > buffers claimed by the OS released later (I did no thourough investigations
> > on that).  
> 
> Please note that when I use the "VM" Acronym I mean "Virtual Memory".
> 
> there is a new version of mpg123 also, and I'm quite sure that mpg123
> causes caching of the audio data it reads. Adsterisk Voicemail system
> also causes caching. Those cached are not going to be freed after
> program exit because other programs could take advantage of the cached data.
> 
> I'm not understanding what you are expecting us to do based on
> circumstantial and partial data.

I expect "in circumstantial occurences of some phenomena" nothing. But my
observations triggered this explanation - and I'm glad I did and I'm glad you
explained!

And if it would have indicated something seriously "indicative", I'd have
files a PR. 
> 

Many thanks!

Kind regards,
Oliver
Received on Fri Sep 29 2017 - 06:59:21 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:13 UTC