Commit Graph

26 Commits

Author SHA1 Message Date
Maxim Dounin
afb4aafc6e 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.
2014-06-03 17:53:03 +04:00
Maxim Dounin
23f6689846 Core: slab log_nomem flag.
The flag allows to suppress "ngx_slab_alloc() failed: no memory" messages
from a slab allocator, e.g., if an LRU expiration is used by a consumer
and allocation failures aren't fatal.

The flag is now used in the SSL session cache code, and in the limit_req
module.
2014-03-31 21:38:30 +04:00
Maxim Dounin
2b0dba578f Handling of ngx_int_t != intptr_t case.
Casts between pointers and integers produce warnings on size mismatch.  To
silence them, cast to (u)intptr_t should be used.  Prevoiusly, casts to
ngx_(u)int_t were used in some cases, and several ngx_int_t expressions had
no casts.

As of now it's mostly style as ngx_int_t is defined as intptr_t.
2013-09-04 21:16:59 +04:00
Ruslan Ermilov
9d6d33a561 Fixed overflow if ngx_slab_alloc() is called with very big "size" argument. 2012-08-30 15:09:21 +00:00
Ruslan Ermilov
01f07bde7e Reduced the number of preprocessor directives. 2012-07-26 14:47:42 +00:00
Maxim Konovalov
f8d59e33f3 Copyright updated. 2012-01-18 15:07:43 +00:00
Igor Sysoev
ba71972b21 Using of junk value in slab allocator similar to modern FreeBSD values. 2011-10-24 15:50:19 +00:00
Igor Sysoev
efc6ecab82 malloc() debugging on MacOSX. 2011-10-24 15:46:48 +00:00
Igor Sysoev
5234b9c6a8 fix building by BCC without NGX_DEBUG_MALLOC 2009-04-15 19:44:41 +00:00
Igor Sysoev
a2c8d9a0a8 improve ngx_slab_alloc() error logging 2009-03-27 17:00:42 +00:00
Igor Sysoev
04fe40023a delete old debugging and info 2009-03-27 16:37:39 +00:00
Igor Sysoev
4b2844b8a0 fix slab page or more sized allocations if nginx was build without debug 2009-01-25 10:39:59 +00:00
Igor Sysoev
19961d20ce style fix 2009-01-12 15:36:30 +00:00
Igor Sysoev
5e593aa34e take MALLOC_OPTIONS=J into account in slab allocator 2007-12-22 11:06:53 +00:00
Igor Sysoev
499c05a87b the simple expression has the same precision without overflow 2007-11-16 18:15:04 +00:00
Igor Sysoev
295b94de9a fix slab allocator on 64-bit platfroms 2007-01-11 19:13:46 +00:00
Igor Sysoev
7431938b90 fix slab allocator on 64-bit platfroms 2007-01-11 18:58:40 +00:00
Igor Sysoev
5096bd9a92 style fix 2007-01-02 23:12:24 +00:00
Igor Sysoev
c33efcd10a many bug fixes and ngx_slab_alloc_locked()/ngx_slab_free_locked() 2007-01-02 23:10:42 +00:00
Igor Sysoev
2f899aa56c fix building on 64-bit platforms 2006-11-27 20:47:55 +00:00
Igor Sysoev
67cd336d88 slab allocator in shared memory 2006-11-20 08:51:45 +00:00
Igor Sysoev
0593b63c6a undo the previous wrong commit 2006-10-28 14:32:39 +00:00
Igor Sysoev
e6d99d831c bad commit 2006-10-28 14:20:13 +00:00
Igor Sysoev
ff8da91784 nginx-0.1.0-2004-09-29-20:00:49 import; remove years from copyright 2004-09-29 16:00:49 +00:00
Igor Sysoev
d90282d8ba nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files 2004-09-28 08:34:51 +00:00
Igor Sysoev
f924e6b694 nginx-0.0.7-2004-06-16-23:36:07 import 2004-06-16 19:36:07 +00:00