nginx memory management algorithm?

naquad naquad at
Sat Jun 30 16:00:21 UTC 2012

Thank you, Vladimir.

You've made things clear. Now I've got it.

2012/6/30 Vladimir Shebordaev <vshebordaev at>

> Hi!
> 2012/6/30 naquad <naquad at>:
> >
> > I'm trying to figure out how does nginx manage its memory per request.
> From
> > what I understand it uses region-based memory management (implemented in
> > src/core/ngx_palloc.{h,c}).
> > But is there any documentation on details of its implementation and
> > algorithm itself?
> Basically, the pool memory allocator in nginx is not that complicated,
> so I guess there is no dedicated document.
> > I've tried to just read through sources, but I can't get figure algorithm
> > out of them :(
> > Could somebody please sched some light on this?
> >
> As per core/ngx_palloc.h, the pool is nothing but a list of memory
> chunks named as blocks described by embedded ngx_pool_data_t .
> Regular allocations get the memory from the current chunk.
> When the requested amount of memory does fit neither into current
> chunk nor into other partially full chunks but still has a modest size
> - the one specified at pool creation time either the system page size,
> whichever is smaller, -  new memory block is requested from the
> system, put on the list of chunks and installed as the current chunk
> for regular allocations.
> When the amount of memory is requested that is larger than p->max,
> i.e. the one specified at pool creation time either the system page
> size, whichever is smaller, it is allocated directly from the system
> with ngx_alloc and put on p->large list.
> Please notice, the pool allocator in nginx is specifically designed
> for speed and efficiency, it doesn't store the information about
> particular allocations neither allocated objects bear such
> information. So, the only mean to reclaim memory is to destroy the
> pool.
> When you allocate from  pool the objects having accotiated system
> resources that are to be released along with the object itself, e.g.
> file buffers, you can install a cleanup handler that is to be invoked
> at pool destruction time.
> > Thank you.
> >
> In the hope it helps.
> Regards,
> Vladimir
> _______________________________________________
> nginx-devel mailing list
> nginx-devel at
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the nginx-devel mailing list