Monitoring Samba's memory usage: A cautionary tale

Andreas Schneider asn at samba.org
Thu Feb 4 08:20:17 UTC 2016


On Wednesday 03 February 2016 12:13:33 Richard Sharpe wrote:
> On Wed, Feb 3, 2016 at 11:53 AM, Christof Schmitt <cs at samba.org> wrote:
> > On Wed, Feb 03, 2016 at 10:22:06AM -0800, Richard Sharpe wrote:
> > > Hi folks,
> > > 
> > > We spent a lot of time recently trying to understand Samba's memory
> > > usage
> > > and the incremental cost of an additional smbd. This was sparked by the
> > > fact that we had a couple of memory leaks in our VFS module.
> > > 
> > > After we fixed the memory leaks we then spent an enormous amount of time
> > > down in the weeds because top and ps are not actually good tools for
> > > this.
> > > Specifically, they overstate the RSS size by including the text segments
> > > of
> > > all the shared libraries used.
> > > 
> > > See, for example, this page:
> > > http://virtualthreads.blogspot.com/2006/02/understanding-memory-usage-on
> > > -linux.html
> > > 
> > > I still have not found the best tool for this, but you can use pmap and
> > > process the output to exclude all TDBs (because there will only be one
> > > copy
> > > of them in memory and thus they should count once) and the text regions
> > > of
> > > all shared libraries (all RO memory segments.)
> > > 
> > > I hope this saves some people some time and also dispels the view held
> > > by
> > > some that Samba is a memory hog.
> > > 
> > > Also, you can check for heap growth by looking at the size of the memory
> > > segment just before the stack. If that is constantly growing, you
> > > probably
> > > have a problem.
> > 
> > There is a feature in Linux to display the "Proportional Segment Size":
> > 
> > https://www.kernel.org/doc/Documentation/filesystems/proc.txt
> > 
> >   The "proportional set size" (PSS) of a process is the count of pages it
> >   has
> >   in memory, where each page is divided by the number of processes sharing
> >   it. So if a process has 1000 pages all to itself, and 1000 shared with
> >   one other process, its PSS will be 1500.
> > 
> > A web search also finds a tool that uses this information:
> > https://www.selenic.com/smem/
> > 
> > In theory, this should give accurate memory usage information, but i
> > have not checked it extensively.
> 
> That looks like an awesome tool. Thanks.

There is also /proc/<pid>/smaps

Which gives detailed memory information about a process ...


	-- andreas

-- 
Andreas Schneider                   GPG-ID: CC014E3D
Samba Team                             asn at samba.org
www.samba.org



More information about the samba-technical mailing list