diff options
author | dormando <dormando@rydia.net> | 2016-08-08 12:11:27 -0700 |
---|---|---|
committer | dormando <dormando@rydia.net> | 2016-08-11 14:35:39 -0700 |
commit | c6f7593f83435193a98cff23a6c469b4588cb282 (patch) | |
tree | a36e7307232b9080132614bacb41573523d7ffbe /slabs.c | |
parent | 917110af97fa1e1b8605629f5abe0b9f64349d2f (diff) | |
download | memcached-c6f7593f83435193a98cff23a6c469b4588cb282.tar.gz |
fix over-allocating with large item support
-I 2m would still allocate 2mb pages, then only use 1mb of it, halving memory
capacity.
Diffstat (limited to 'slabs.c')
-rw-r--r-- | slabs.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -217,7 +217,8 @@ static void *get_page_from_global_pool(void) { static int do_slabs_newslab(const unsigned int id) { slabclass_t *p = &slabclass[id]; slabclass_t *g = &slabclass[SLAB_GLOBAL_PAGE_POOL]; - int len = settings.slab_reassign ? settings.item_size_max + int len = (settings.slab_reassign || settings.slab_chunk_size_max != settings.slab_page_size) + ? settings.slab_page_size : p->size * p->perslab; char *ptr; |