Varnish memory usage
Michael Lenaghan
michaell at dazzit.com
Thu Jun 10 04:16:10 CEST 2010
Thanks for the reply, Ken.
>> 966403669 . . SMA outstanding bytes
>
> There's your 1GB cache buffer, which is what you're setting.
OK, I see that "SMA bytes allocated" - "SMA bytes free" = "SMA
outstanding bytes". Perhaps, in the process of allocating and freeing,
memory has become fragmented--leaving unusable holes...?
> Linux (including 10.04) sets a default stack size of 8MB:
>
> -s: stack size (kbytes) 8192
>
> With 500 threads, you could in theory see up to 4GB of VIRT.
Varnish sets the stack size to 65K on this system by default:
thread_pool_stack 65536 [bytes]
Default is -1
Worker thread stack size.
That works out to 32 MB for 500 threads. And I force the creation of
all threads up front in order to avoid surprise memory allocations
under load.
> Run "pmap -x PID" on the child process (or grandchildren), and you will see where the memory goes.
> It should reflect the above -- you'll see 500+ 8MB stacks, plus a lot of other 1MB allocations, which
> is the block size used by jemalloc IIRC.
Using pmap I can confirm the 65 KB thread stacks. After pushing
Varnish a little further--it's at 1.6 GB virtual memory now--I also
see one line like this:
52f00000 1432576 - - - rw--- [ anon ]
That's a single 1.4 GB allocation?
The next biggest allocations (in address order) are:
ac3f6000 10240 - - - rw--- [ anon ]
acdf7000 10240 - - - rw--- [ anon ]
ad7f8000 10240 - - - rw--- [ anon ]
ae200000 12288 - - - rw--- [ anon ]
afaf0000 10304 - - - rw--- [ anon ]
b05ed000 10240 - - - rw--- [ anon ]
b0fee000 10240 - - - rw--- [ anon ]
b19ef000 10240 - - - rw--- [ anon ]
b23ef000 81988 - - - rw-s- _.vsl
Those ten allocations account for nearly all of the memory used by
Varnish. (The first line alone is just under 90%.)
> If you really only want to use 1G, specify something like "malloc,800M".
Yes, I can try that. And in production I think I can set things up so
that I guarantee Varnish never fills its cache. But I wanted to see
how Varnish performed at the limit. And I'd like to get as close to
the limit as I safely can.
More information about the varnish-misc
mailing list