summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2016-09-16 10:43:19 +0200
committerantirez <antirez@gmail.com>2016-09-16 10:43:19 +0200
commitd9325ac6c8b0be33b0813f4fa7b886b95690f85e (patch)
tree9e519d98e9f967b9680660efe7ac17b5143b4c98
parent309c2bcd1bf00ac6a224a76aad9c05733d2f4a18 (diff)
downloadredis-d9325ac6c8b0be33b0813f4fa7b886b95690f85e.tar.gz
Provide percentage of memory peak used info.
-rw-r--r--src/object.c10
-rw-r--r--src/server.c2
-rw-r--r--src/server.h2
3 files changed, 13 insertions, 1 deletions
diff --git a/src/object.c b/src/object.c
index bb1a3eb55..110f7d1c6 100644
--- a/src/object.c
+++ b/src/object.c
@@ -810,6 +810,7 @@ struct redisMemOverhead *getMemoryOverheadData(void) {
mh->total_allocated = zmalloc_used;
mh->startup_allocated = server.initial_memory_usage;
+ mh->peak_allocated = server.stat_peak_memory;
mem_total += server.initial_memory_usage;
mem = 0;
@@ -889,6 +890,7 @@ struct redisMemOverhead *getMemoryOverheadData(void) {
if (zmalloc_used > mh->startup_allocated)
net_usage = zmalloc_used - mh->startup_allocated;
mh->dataset_perc = (float)mh->dataset*100/net_usage;
+ mh->peak_perc = (float)zmalloc_used*100/mh->peak_allocated;
return mh;
}
@@ -988,7 +990,10 @@ void memoryCommand(client *c) {
} else if (!strcasecmp(c->argv[1]->ptr,"overhead") && c->argc == 2) {
struct redisMemOverhead *mh = getMemoryOverheadData();
- addReplyMultiBulkLen(c,(9+mh->num_dbs)*2);
+ addReplyMultiBulkLen(c,(11+mh->num_dbs)*2);
+
+ addReplyBulkCString(c,"peak.allocated");
+ addReplyLongLong(c,mh->peak_allocated);
addReplyBulkCString(c,"total.allocated");
addReplyLongLong(c,mh->total_allocated);
@@ -1030,6 +1035,9 @@ void memoryCommand(client *c) {
addReplyBulkCString(c,"dataset.percentage");
addReplyDouble(c,mh->dataset_perc);
+ addReplyBulkCString(c,"peak.percentage");
+ addReplyDouble(c,mh->peak_perc);
+
freeMemoryOverheadData(mh);
} else if (!strcasecmp(c->argv[1]->ptr,"allocator-stats") && c->argc == 2) {
#if defined(USE_JEMALLOC)
diff --git a/src/server.c b/src/server.c
index 556ea965b..2a37e431d 100644
--- a/src/server.c
+++ b/src/server.c
@@ -2837,6 +2837,7 @@ sds genRedisInfoString(char *section) {
"used_memory_rss_human:%s\r\n"
"used_memory_peak:%zu\r\n"
"used_memory_peak_human:%s\r\n"
+ "used_memory_peak_perc:%.2f%%\r\n"
"used_memory_overhead:%zu\r\n"
"used_memory_startup:%zu\r\n"
"used_memory_dataset:%zu\r\n"
@@ -2857,6 +2858,7 @@ sds genRedisInfoString(char *section) {
used_memory_rss_hmem,
server.stat_peak_memory,
peak_hmem,
+ mh->peak_perc,
mh->overhead_total,
mh->startup_allocated,
mh->dataset,
diff --git a/src/server.h b/src/server.h
index 6d5edb5ae..f6d18cd3c 100644
--- a/src/server.h
+++ b/src/server.h
@@ -772,6 +772,7 @@ typedef struct redisOpArray {
/* This structure is returned by the getMemoryOverheadData() function in
* order to return memory overhead information. */
struct redisMemOverhead {
+ size_t peak_allocated;
size_t total_allocated;
size_t startup_allocated;
size_t repl_backlog;
@@ -781,6 +782,7 @@ struct redisMemOverhead {
size_t overhead_total;
size_t dataset;
float dataset_perc;
+ float peak_perc;
size_t num_dbs;
struct {
size_t dbid;