]> git.kaiwu.me - nginx.git/commit
Core: slab allocator free pages defragmentation.
authorMaxim Dounin <mdounin@mdounin.ru>
Tue, 3 Jun 2014 13:53:03 +0000 (17:53 +0400)
committerMaxim Dounin <mdounin@mdounin.ru>
Tue, 3 Jun 2014 13:53:03 +0000 (17:53 +0400)
commitafb4aafc6e42781068ce3f23d22fd6e2012787c7
tree6e24e4615508e24778460240cdb850499ebd6315
parent9b5a17b5e23e8e7c94d84eb85044370e38887849
Core: slab allocator free pages defragmentation.

Large allocations from a slab pool result in free page blocks being fragmented,
eventually leading to a situation when no further allocation larger than a page
size are possible from the pool.  While this isn't a problem for nginx itself,
it is known to be bad for various 3rd party modules.  Fix is to merge adjacent
blocks of free pages in the ngx_slab_free_pages() function.

Prodded by Wandenberg Peixoto and Yichun Zhang.
src/core/ngx_slab.c
src/core/ngx_slab.h