ctdb-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@samba.org>
Fri, 5 Dec 2014 13:43:07 +0000 (14:43 +0100)
Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Reviewed-by: Martin Schwenke <martin@meltin.net>
ctdb/include/ctdb_protocol.h
ctdb/server/ctdb_vacuum.c
ctdb/tools/ctdb.c

index 725e42623006120b9bed19a0aa78416a6b7b625c..15d9fc5f658798b273fc19a9258afb6d00497959 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 35f1fe1bfb0f8e786bdcf0e3fc0d8cfc6c811dff..8cd37aa8315e08322ee7f04c9539f659863814da 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 5d5ce3cc9ea7653790f0d4b2d4a113a410699b22..f0c87d91e5b6b7a163e4f60b92bc15a5c48c1971 100644 (file)
@@ -725,6 +725,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) {