mirror of https://mirror.osredm.com/root/redis.git
missing per-skiplist overheads in MEMORY USAGE
these had severe impact for small zsets, for instance ones with just one element that is longer than 64 (causing it not to be ziplist encoded)
This commit is contained in:
parent
0cabe0cfa7
commit
41c5ebcab6
|
@ -834,7 +834,9 @@ size_t objectComputeSize(robj *o, size_t sample_size) {
|
|||
d = ((zset*)o->ptr)->dict;
|
||||
zskiplist *zsl = ((zset*)o->ptr)->zsl;
|
||||
zskiplistNode *znode = zsl->header->level[0].forward;
|
||||
asize = sizeof(*o)+sizeof(zset)+(sizeof(struct dictEntry*)*dictSlots(d));
|
||||
asize = sizeof(*o)+sizeof(zset)+sizeof(zskiplist)+sizeof(dict)+
|
||||
(sizeof(struct dictEntry*)*dictSlots(d))+
|
||||
zmalloc_size(zsl->header);
|
||||
while(znode != NULL && samples < sample_size) {
|
||||
elesize += sdsAllocSize(znode->ele);
|
||||
elesize += sizeof(struct dictEntry) + zmalloc_size(znode);
|
||||
|
|
Loading…
Reference in New Issue