summaryrefslogtreecommitdiff
path: root/slabs.c
diff options
context:
space:
mode:
authordormando <dormando@rydia.net>2016-08-08 12:11:27 -0700
committerdormando <dormando@rydia.net>2016-08-11 14:35:39 -0700
commitc6f7593f83435193a98cff23a6c469b4588cb282 (patch)
treea36e7307232b9080132614bacb41573523d7ffbe /slabs.c
parent917110af97fa1e1b8605629f5abe0b9f64349d2f (diff)
downloadmemcached-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.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/slabs.c b/slabs.c
index efa4880..c54ae60 100644
--- a/slabs.c
+++ b/slabs.c
@@ -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;