From: Martin Schwenke Date: Fri, 1 May 2020 06:44:22 +0000 (+1000) Subject: ctdb-daemon: Add extra logging of hot keys X-Git-Tag: ldb-2.2.0~357 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5c8dfbbf9bea05c35fe1ce454ee47dbee5172722;p=thirdparty%2Fsamba.git 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 Reviewed-by: Amitay Isaacs --- 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);