From f1c9a203b2eda46c2980582d3bdb12b6e66f4aaf Mon Sep 17 00:00:00 2001 From: Matt Stancliff Date: Fri, 28 Feb 2014 17:47:41 -0500 Subject: [PATCH] Force INFO used_memory_peak to match peak memory used_memory_peak only updates in serverCron every server.hz, but Redis can use more memory and a user can request memory INFO before used_memory_peak gets updated in the next cron run. This patch updates used_memory_peak to the current memory usage if the current memory usage is higher than the recorded used_memory_peak value. (And it only calls zmalloc_used_memory() once instead of twice as it was doing before.) --- src/redis.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/redis.c b/src/redis.c index f132bb56..fe32c8de 100644 --- a/src/redis.c +++ b/src/redis.c @@ -2407,8 +2407,13 @@ sds genRedisInfoString(char *section) { if (allsections || defsections || !strcasecmp(section,"memory")) { char hmem[64]; char peak_hmem[64]; + size_t zmalloc_used = zmalloc_used_memory(); - bytesToHuman(hmem,zmalloc_used_memory()); + if (zmalloc_used > server.stat_peak_memory) { + server.stat_peak_memory = zmalloc_used; + } + + bytesToHuman(hmem,zmalloc_used); bytesToHuman(peak_hmem,server.stat_peak_memory); if (sections++) info = sdscat(info,"\r\n"); info = sdscatprintf(info, @@ -2421,7 +2426,7 @@ sds genRedisInfoString(char *section) { "used_memory_lua:%lld\r\n" "mem_fragmentation_ratio:%.2f\r\n" "mem_allocator:%s\r\n", - zmalloc_used_memory(), + zmalloc_used, hmem, zmalloc_get_rss(), server.stat_peak_memory,