summaryrefslogtreecommitdiff
path: root/ctdb
diff options
context:
space:
mode:
authorMartin Schwenke <martin@meltin.net>2020-05-01 16:44:22 +1000
committerAmitay Isaacs <amitay@samba.org>2020-05-22 06:41:45 +0000
commit5c8dfbbf9bea05c35fe1ce454ee47dbee5172722 (patch)
tree9bac5c62a8786dc7bcafe10e0179116638a36f4c /ctdb
parentbaf058dcf72e4072ecc2f4bf775f04c271a6e10b (diff)
downloadsamba-5c8dfbbf9bea05c35fe1ce454ee47dbee5172722.tar.gz
ctdb-daemon: Add extra logging of hot keys
ctdbd currently only logs when a new hot key is added. If a key gets hotter then nothing new is logged. Log hot key updates when the number of migrations has doubled since the last time that key was logged. Signed-off-by: Martin Schwenke <martin@meltin.net> Reviewed-by: Amitay Isaacs <amitay@gmail.com>
Diffstat (limited to 'ctdb')
-rw-r--r--ctdb/include/ctdb_private.h1
-rw-r--r--ctdb/server/ctdb_call.c12
-rw-r--r--ctdb/server/ctdb_ltdb_server.c1
3 files changed, 14 insertions, 0 deletions
diff --git a/ctdb/include/ctdb_private.h b/ctdb/include/ctdb_private.h
index 3eb536672b2..9ca87332d61 100644
--- a/ctdb/include/ctdb_private.h
+++ b/ctdb/include/ctdb_private.h
@@ -345,6 +345,7 @@ struct ctdb_context {
struct ctdb_db_hot_key {
uint32_t count;
TDB_DATA key;
+ uint32_t last_logged_count;
};
struct ctdb_db_context {
diff --git a/ctdb/server/ctdb_call.c b/ctdb/server/ctdb_call.c
index cb110ebd21d..f833cac04c8 100644
--- a/ctdb/server/ctdb_call.c
+++ b/ctdb/server/ctdb_call.c
@@ -849,6 +849,17 @@ ctdb_update_db_stat_hot_keys(struct ctdb_db_context *ctdb_db, TDB_DATA key,
if (count <= ctdb_db->hot_keys[i].count) {
return;
}
+ if (count >= (2 * ctdb_db->hot_keys[i].last_logged_count)) {
+ keystr = hex_encode_talloc(ctdb_db,
+ (unsigned char *)key.dptr,
+ key.dsize);
+ D_NOTICE("Updated hot key database=%s key=%s count=%d\n",
+ ctdb_db->db_name,
+ keystr ? keystr : "" ,
+ count);
+ TALLOC_FREE(keystr);
+ ctdb_db->hot_keys[i].last_logged_count = count;
+ }
ctdb_db->hot_keys[i].count = count;
goto sort_keys;
}
@@ -876,6 +887,7 @@ ctdb_update_db_stat_hot_keys(struct ctdb_db_context *ctdb_db, TDB_DATA key,
keystr ? keystr : "" ,
count);
talloc_free(keystr);
+ ctdb_db->hot_keys[id].last_logged_count = count;
sort_keys:
for (i = 1; i < MAX_HOT_KEYS; i++) {
diff --git a/ctdb/server/ctdb_ltdb_server.c b/ctdb/server/ctdb_ltdb_server.c
index 331a1ec478d..b6c7630bea3 100644
--- a/ctdb/server/ctdb_ltdb_server.c
+++ b/ctdb/server/ctdb_ltdb_server.c
@@ -1605,6 +1605,7 @@ void ctdb_db_statistics_reset(struct ctdb_db_context *ctdb_db)
ctdb_db->hot_keys[i].key.dsize = 0;
}
ctdb_db->hot_keys[i].count = 0;
+ ctdb_db->hot_keys[i].last_logged_count = 0;
}
ZERO_STRUCT(ctdb_db->statistics);