diff options
author | Martin Schwenke <martin@meltin.net> | 2020-05-01 16:44:22 +1000 |
---|---|---|
committer | Amitay Isaacs <amitay@samba.org> | 2020-05-22 06:41:45 +0000 |
commit | 5c8dfbbf9bea05c35fe1ce454ee47dbee5172722 (patch) | |
tree | 9bac5c62a8786dc7bcafe10e0179116638a36f4c /ctdb | |
parent | baf058dcf72e4072ecc2f4bf775f04c271a6e10b (diff) | |
download | samba-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.h | 1 | ||||
-rw-r--r-- | ctdb/server/ctdb_call.c | 12 | ||||
-rw-r--r-- | ctdb/server/ctdb_ltdb_server.c | 1 |
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); |