vacuum: Track time for vacuuming in database statistics
authorAmitay Isaacs <amitay@gmail.com>
Tue, 11 Feb 2014 03:23:28 +0000 (14:23 +1100)
committerAmitay Isaacs <amitay@gmail.com>
Mon, 8 Dec 2014 01:24:20 +0000 (12:24 +1100)
Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Reviewed-by: Martin Schwenke <martin@meltin.net>
(Imported from commit a0628e317df76c7c38a7cca9c3090077fa352899)

include/ctdb_protocol.h
server/ctdb_vacuum.c
tools/ctdb.c

index 629c91c0cd307222f1fe7990c4929c15ed0b8f5b..10681322ba88d9240c34549b018716bb539e5e05 100644 (file)
@@ -717,6 +717,9 @@ struct ctdb_db_statistics {
                struct latency_counter latency;
                uint32_t buckets[MAX_COUNT_BUCKETS];
        } locks;
+       struct {
+               struct latency_counter latency;
+       } vacuum;
        uint32_t db_ro_delegations;
        uint32_t db_ro_revokes;
        uint32_t hop_count_bucket[MAX_COUNT_BUCKETS];
index 5013339c23f570ef0417fa6667934cc52c68b81d..cca2f2a41eecbefb37e8cfb1286581eddac70172 100644 (file)
@@ -1364,6 +1364,7 @@ static int vacuum_child_destructor(struct ctdb_vacuum_child_context *child_ctx)
        struct ctdb_db_context *ctdb_db = child_ctx->vacuum_handle->ctdb_db;
        struct ctdb_context *ctdb = ctdb_db->ctdb;
 
+       CTDB_UPDATE_DB_LATENCY(ctdb_db, "vacuum", vacuum.latency, l);
        DEBUG(DEBUG_INFO,("Vacuuming took %.3f seconds for database %s\n", l, ctdb_db->db_name));
 
        if (child_ctx->child_pid != -1) {
index dcb893b3230b2f81c58cb03d17539b3488151186..e4b23b60c90f82bf3939b132ed9a74f420526dab 100644 (file)
@@ -719,6 +719,14 @@ static int control_dbstatistics(struct ctdb_context *ctdb, int argc, const char
                 0.0),
                dbstat->locks.latency.max,
                dbstat->locks.latency.num);
+       printf(" %-30s     %.6f/%.6f/%.6f sec out of %d\n",
+               "vacuum_latency     MIN/AVG/MAX",
+               dbstat->vacuum.latency.min,
+               (dbstat->vacuum.latency.num ?
+                dbstat->vacuum.latency.total /dbstat->vacuum.latency.num :
+                0.0),
+               dbstat->vacuum.latency.max,
+               dbstat->vacuum.latency.num);
        num_hot_keys = 0;
        for (i=0; i<dbstat->num_hot_keys; i++) {
                if (dbstat->hot_keys[i].count > 0) {