From afb4aafc6e42781068ce3f23d22fd6e2012787c7 Mon Sep 17 00:00:00 2001 From: Maxim Dounin Date: Tue, 3 Jun 2014 17:53:03 +0400 Subject: 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.h | 1 + 1 file changed, 1 insertion(+) (limited to 'src/core/ngx_slab.h') diff --git a/src/core/ngx_slab.h b/src/core/ngx_slab.h index 5735e3bb3..1ee65d531 100644 --- a/src/core/ngx_slab.h +++ b/src/core/ngx_slab.h @@ -29,6 +29,7 @@ typedef struct { size_t min_shift; ngx_slab_page_t *pages; + ngx_slab_page_t *last; ngx_slab_page_t free; u_char *start; -- cgit