summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2015-09-28 10:51:25 +0200
committerantirez <antirez@gmail.com>2015-10-01 13:02:26 +0200
commit1f26a9468ff3e61ee9ae4225628647d4054fe20c (patch)
tree6c89addf6afed3b05c58f93ab28f647e4ded5764
parentc69c6c80fb5376a30e8cda34443a55b6326c9aa7 (diff)
downloadredis-1f26a9468ff3e61ee9ae4225628647d4054fe20c.tar.gz
Lazyfree: pending objects count in INFO output.
-rw-r--r--src/lazyfree.c5
-rw-r--r--src/server.c6
-rw-r--r--src/server.h1
3 files changed, 10 insertions, 2 deletions
diff --git a/src/lazyfree.c b/src/lazyfree.c
index 321bd5411..e471ba004 100644
--- a/src/lazyfree.c
+++ b/src/lazyfree.c
@@ -6,6 +6,11 @@
static size_t lazyfree_objects = 0;
pthread_mutex_t lazyfree_objects_mutex = PTHREAD_MUTEX_INITIALIZER;
+/* Return the number of currently pending objects to free. */
+size_t lazyfreeGetPendingObjectsCount(void) {
+ return lazyfree_objects;
+}
+
/* Return the amount of work needed in order to free an object.
* The return value is not always the actual number of allocations the
* object is compoesd of, but a number proportional to it.
diff --git a/src/server.c b/src/server.c
index d9470f6d7..6fe42a745 100644
--- a/src/server.c
+++ b/src/server.c
@@ -2803,7 +2803,8 @@ sds genRedisInfoString(char *section) {
"maxmemory_human:%s\r\n"
"maxmemory_policy:%s\r\n"
"mem_fragmentation_ratio:%.2f\r\n"
- "mem_allocator:%s\r\n",
+ "mem_allocator:%s\r\n"
+ "lazyfree_pending_objects:%zu\r\n",
zmalloc_used,
hmem,
server.resident_set_size,
@@ -2818,7 +2819,8 @@ sds genRedisInfoString(char *section) {
maxmemory_hmem,
evict_policy,
zmalloc_get_fragmentation_ratio(server.resident_set_size),
- ZMALLOC_LIB
+ ZMALLOC_LIB,
+ lazyfreeGetPendingObjectsCount()
);
}
diff --git a/src/server.h b/src/server.h
index 7ba9a4325..d9633e460 100644
--- a/src/server.h
+++ b/src/server.h
@@ -1414,6 +1414,7 @@ void slotToKeyFlush(void);
int dbAsyncDelete(redisDb *db, robj *key);
void emptyDbAsync(redisDb *db);
void slotToKeyFlushAsync(void);
+size_t lazyfreeGetPendingObjectsCount(void);
/* API to get key arguments from commands */
int *getKeysFromCommand(struct redisCommand *cmd, robj **argv, int argc, int *numkeys);