diff --git a/book/api/metrics-generated.md b/book/api/metrics-generated.md index e1879e231e..dfc52cb310 100644 --- a/book/api/metrics-generated.md +++ b/book/api/metrics-generated.md @@ -484,17 +484,6 @@ -## Storei Tile - -
- -| Metric | Type | Description | -|--------|------|-------------| -| storei_​first_​turbine_​slot | gauge | | -| storei_​current_​turbine_​slot | gauge | | - -
- ## Gossip Tile
@@ -720,6 +709,9 @@ | Metric | Type | Description | |--------|------|-------------| +| repair_​first_​turbine_​slot | gauge | | +| repair_​latest_​turbine_​slot | gauge | | +| repair_​latest_​repair_​slot | gauge | | | repair_​recv_​clnt_​pkt | counter | Now many client packets have we received | | repair_​recv_​serv_​pkt | counter | How many server packets have we received | | repair_​recv_​serv_​corrupt_​pkt | counter | How many corrupt server packets have we received | diff --git a/src/app/firedancer/topology.c b/src/app/firedancer/topology.c index a9fe7a0bd0..7dc1773222 100644 --- a/src/app/firedancer/topology.c +++ b/src/app/firedancer/topology.c @@ -788,22 +788,19 @@ fd_topo_initialize( config_t * config ) { fd_topob_wksp( topo, "plugin_out" ); fd_topob_wksp( topo, "plugin" ); - /**/ fd_topob_link( topo, "plugin_out", "plugin_out", 128UL, 8UL+40200UL*(58UL+12UL*34UL), 1UL ); - /**/ fd_topob_link( topo, "replay_plugi", "plugin_in", 128UL, 4098*8UL, 1UL ); - /**/ fd_topob_link( topo, "gossip_plugi", "plugin_in", 128UL, 8UL+40200UL*(58UL+12UL*34UL), 1UL ); - /**/ fd_topob_link( topo, "votes_plugin", "plugin_in", 128UL, 8UL+40200UL*(58UL+12UL*34UL), 1UL ); + /**/ fd_topob_link( topo, "plugin_out", "plugin_out", 128UL, 8UL+40200UL*(58UL+12UL*34UL), 1UL ); + /**/ fd_topob_link( topo, "replay_plugi", "plugin_in", 128UL, 4098*8UL, 1UL ); + /**/ fd_topob_link( topo, "gossip_plugi", "plugin_in", 128UL, 8UL+40200UL*(58UL+12UL*34UL), 1UL ); /**/ fd_topob_tile( topo, "plugin", "plugin", "metric_in", tile_to_cpu[ topo->tile_cnt ], 0, 0 ); /**/ fd_topob_tile_out( topo, "replay", 0UL, "replay_plugi", 0UL ); - /**/ fd_topob_tile_out( topo, "replay", 0UL, "votes_plugin", 0UL ); /**/ fd_topob_tile_out( topo, "gossip", 0UL, "gossip_plugi", 0UL ); - /**/ fd_topob_tile_out( topo, "plugin", 0UL, "plugin_out", 0UL ); + /**/ fd_topob_tile_out( topo, "plugin", 0UL, "plugin_out", 0UL ); /**/ fd_topob_tile_in( topo, "plugin", 0UL, "metric_in", "replay_plugi", 0UL, FD_TOPOB_RELIABLE, FD_TOPOB_POLLED ); /**/ fd_topob_tile_in( topo, "plugin", 0UL, "metric_in", "gossip_plugi", 0UL, FD_TOPOB_RELIABLE, FD_TOPOB_POLLED ); /**/ fd_topob_tile_in( topo, "plugin", 0UL, "metric_in", "stake_out", 0UL, FD_TOPOB_RELIABLE, FD_TOPOB_POLLED ); - /**/ fd_topob_tile_in( topo, "plugin", 0UL, "metric_in", "votes_plugin", 0UL, FD_TOPOB_RELIABLE, FD_TOPOB_POLLED ); } /* Link from writer tile to replay tile, to send solcap account updates so that they are serialized. diff --git a/src/disco/metrics/generated/fd_metrics_all.c b/src/disco/metrics/generated/fd_metrics_all.c index 739137b449..4aacf24aa1 100644 --- a/src/disco/metrics/generated/fd_metrics_all.c +++ b/src/disco/metrics/generated/fd_metrics_all.c @@ -49,7 +49,6 @@ const char * FD_METRICS_TILE_KIND_NAMES[FD_METRICS_TILE_KIND_CNT] = { "store", "metric", "replay", - "storei", "gossip", "netlnk", "sock", @@ -74,7 +73,6 @@ const ulong FD_METRICS_TILE_KIND_SIZES[FD_METRICS_TILE_KIND_CNT] = { FD_METRICS_STORE_TOTAL, FD_METRICS_METRIC_TOTAL, FD_METRICS_REPLAY_TOTAL, - FD_METRICS_STOREI_TOTAL, FD_METRICS_GOSSIP_TOTAL, FD_METRICS_NETLNK_TOTAL, FD_METRICS_SOCK_TOTAL, @@ -98,7 +96,6 @@ const fd_metrics_meta_t * FD_METRICS_TILE_KIND_METRICS[FD_METRICS_TILE_KIND_CNT] FD_METRICS_STORE, FD_METRICS_METRIC, FD_METRICS_REPLAY, - FD_METRICS_STOREI, FD_METRICS_GOSSIP, FD_METRICS_NETLNK, FD_METRICS_SOCK, diff --git a/src/disco/metrics/generated/fd_metrics_all.h b/src/disco/metrics/generated/fd_metrics_all.h index c51d94ed88..ec89d9b8f6 100644 --- a/src/disco/metrics/generated/fd_metrics_all.h +++ b/src/disco/metrics/generated/fd_metrics_all.h @@ -16,7 +16,6 @@ #include "fd_metrics_shred.h" #include "fd_metrics_store.h" #include "fd_metrics_replay.h" -#include "fd_metrics_storei.h" #include "fd_metrics_repair.h" #include "fd_metrics_gossip.h" #include "fd_metrics_netlnk.h" @@ -160,7 +159,7 @@ extern const fd_metrics_meta_t FD_METRICS_ALL_LINK_OUT[FD_METRICS_ALL_LINK_OUT_T #define FD_METRICS_TOTAL_SZ (8UL*253UL) -#define FD_METRICS_TILE_KIND_CNT 22 +#define FD_METRICS_TILE_KIND_CNT 21 extern const char * FD_METRICS_TILE_KIND_NAMES[FD_METRICS_TILE_KIND_CNT]; extern const ulong FD_METRICS_TILE_KIND_SIZES[FD_METRICS_TILE_KIND_CNT]; extern const fd_metrics_meta_t * FD_METRICS_TILE_KIND_METRICS[FD_METRICS_TILE_KIND_CNT]; diff --git a/src/disco/metrics/generated/fd_metrics_repair.c b/src/disco/metrics/generated/fd_metrics_repair.c index 640ea7f104..ea69b3f65d 100644 --- a/src/disco/metrics/generated/fd_metrics_repair.c +++ b/src/disco/metrics/generated/fd_metrics_repair.c @@ -2,6 +2,9 @@ #include "fd_metrics_repair.h" const fd_metrics_meta_t FD_METRICS_REPAIR[FD_METRICS_REPAIR_TOTAL] = { + DECLARE_METRIC( REPAIR_FIRST_TURBINE_SLOT, GAUGE ), + DECLARE_METRIC( REPAIR_LATEST_TURBINE_SLOT, GAUGE ), + DECLARE_METRIC( REPAIR_LATEST_REPAIR_SLOT, GAUGE ), DECLARE_METRIC( REPAIR_RECV_CLNT_PKT, COUNTER ), DECLARE_METRIC( REPAIR_RECV_SERV_PKT, COUNTER ), DECLARE_METRIC( REPAIR_RECV_SERV_CORRUPT_PKT, COUNTER ), diff --git a/src/disco/metrics/generated/fd_metrics_repair.h b/src/disco/metrics/generated/fd_metrics_repair.h index f8df3c9c36..daa8b77853 100644 --- a/src/disco/metrics/generated/fd_metrics_repair.h +++ b/src/disco/metrics/generated/fd_metrics_repair.h @@ -3,87 +3,105 @@ #include "../fd_metrics_base.h" #include "fd_metrics_enums.h" -#define FD_METRICS_COUNTER_REPAIR_RECV_CLNT_PKT_OFF (16UL) +#define FD_METRICS_GAUGE_REPAIR_FIRST_TURBINE_SLOT_OFF (16UL) +#define FD_METRICS_GAUGE_REPAIR_FIRST_TURBINE_SLOT_NAME "repair_first_turbine_slot" +#define FD_METRICS_GAUGE_REPAIR_FIRST_TURBINE_SLOT_TYPE (FD_METRICS_TYPE_GAUGE) +#define FD_METRICS_GAUGE_REPAIR_FIRST_TURBINE_SLOT_DESC "" +#define FD_METRICS_GAUGE_REPAIR_FIRST_TURBINE_SLOT_CVT (FD_METRICS_CONVERTER_NONE) + +#define FD_METRICS_GAUGE_REPAIR_LATEST_TURBINE_SLOT_OFF (17UL) +#define FD_METRICS_GAUGE_REPAIR_LATEST_TURBINE_SLOT_NAME "repair_latest_turbine_slot" +#define FD_METRICS_GAUGE_REPAIR_LATEST_TURBINE_SLOT_TYPE (FD_METRICS_TYPE_GAUGE) +#define FD_METRICS_GAUGE_REPAIR_LATEST_TURBINE_SLOT_DESC "" +#define FD_METRICS_GAUGE_REPAIR_LATEST_TURBINE_SLOT_CVT (FD_METRICS_CONVERTER_NONE) + +#define FD_METRICS_GAUGE_REPAIR_LATEST_REPAIR_SLOT_OFF (18UL) +#define FD_METRICS_GAUGE_REPAIR_LATEST_REPAIR_SLOT_NAME "repair_latest_repair_slot" +#define FD_METRICS_GAUGE_REPAIR_LATEST_REPAIR_SLOT_TYPE (FD_METRICS_TYPE_GAUGE) +#define FD_METRICS_GAUGE_REPAIR_LATEST_REPAIR_SLOT_DESC "" +#define FD_METRICS_GAUGE_REPAIR_LATEST_REPAIR_SLOT_CVT (FD_METRICS_CONVERTER_NONE) + +#define FD_METRICS_COUNTER_REPAIR_RECV_CLNT_PKT_OFF (19UL) #define FD_METRICS_COUNTER_REPAIR_RECV_CLNT_PKT_NAME "repair_recv_clnt_pkt" #define FD_METRICS_COUNTER_REPAIR_RECV_CLNT_PKT_TYPE (FD_METRICS_TYPE_COUNTER) #define FD_METRICS_COUNTER_REPAIR_RECV_CLNT_PKT_DESC "Now many client packets have we received" #define FD_METRICS_COUNTER_REPAIR_RECV_CLNT_PKT_CVT (FD_METRICS_CONVERTER_NONE) -#define FD_METRICS_COUNTER_REPAIR_RECV_SERV_PKT_OFF (17UL) +#define FD_METRICS_COUNTER_REPAIR_RECV_SERV_PKT_OFF (20UL) #define FD_METRICS_COUNTER_REPAIR_RECV_SERV_PKT_NAME "repair_recv_serv_pkt" #define FD_METRICS_COUNTER_REPAIR_RECV_SERV_PKT_TYPE (FD_METRICS_TYPE_COUNTER) #define FD_METRICS_COUNTER_REPAIR_RECV_SERV_PKT_DESC "How many server packets have we received" #define FD_METRICS_COUNTER_REPAIR_RECV_SERV_PKT_CVT (FD_METRICS_CONVERTER_NONE) -#define FD_METRICS_COUNTER_REPAIR_RECV_SERV_CORRUPT_PKT_OFF (18UL) +#define FD_METRICS_COUNTER_REPAIR_RECV_SERV_CORRUPT_PKT_OFF (21UL) #define FD_METRICS_COUNTER_REPAIR_RECV_SERV_CORRUPT_PKT_NAME "repair_recv_serv_corrupt_pkt" #define FD_METRICS_COUNTER_REPAIR_RECV_SERV_CORRUPT_PKT_TYPE (FD_METRICS_TYPE_COUNTER) #define FD_METRICS_COUNTER_REPAIR_RECV_SERV_CORRUPT_PKT_DESC "How many corrupt server packets have we received" #define FD_METRICS_COUNTER_REPAIR_RECV_SERV_CORRUPT_PKT_CVT (FD_METRICS_CONVERTER_NONE) -#define FD_METRICS_COUNTER_REPAIR_RECV_SERV_INVALID_SIGNATURE_OFF (19UL) +#define FD_METRICS_COUNTER_REPAIR_RECV_SERV_INVALID_SIGNATURE_OFF (22UL) #define FD_METRICS_COUNTER_REPAIR_RECV_SERV_INVALID_SIGNATURE_NAME "repair_recv_serv_invalid_signature" #define FD_METRICS_COUNTER_REPAIR_RECV_SERV_INVALID_SIGNATURE_TYPE (FD_METRICS_TYPE_COUNTER) #define FD_METRICS_COUNTER_REPAIR_RECV_SERV_INVALID_SIGNATURE_DESC "How many invalid signatures have we received" #define FD_METRICS_COUNTER_REPAIR_RECV_SERV_INVALID_SIGNATURE_CVT (FD_METRICS_CONVERTER_NONE) -#define FD_METRICS_COUNTER_REPAIR_RECV_SERV_FULL_PING_TABLE_OFF (20UL) +#define FD_METRICS_COUNTER_REPAIR_RECV_SERV_FULL_PING_TABLE_OFF (23UL) #define FD_METRICS_COUNTER_REPAIR_RECV_SERV_FULL_PING_TABLE_NAME "repair_recv_serv_full_ping_table" #define FD_METRICS_COUNTER_REPAIR_RECV_SERV_FULL_PING_TABLE_TYPE (FD_METRICS_TYPE_COUNTER) #define FD_METRICS_COUNTER_REPAIR_RECV_SERV_FULL_PING_TABLE_DESC "Is our ping table full and causing packet drops" #define FD_METRICS_COUNTER_REPAIR_RECV_SERV_FULL_PING_TABLE_CVT (FD_METRICS_CONVERTER_NONE) -#define FD_METRICS_COUNTER_REPAIR_RECV_SERV_PKT_TYPES_OFF (21UL) +#define FD_METRICS_COUNTER_REPAIR_RECV_SERV_PKT_TYPES_OFF (24UL) #define FD_METRICS_COUNTER_REPAIR_RECV_SERV_PKT_TYPES_NAME "repair_recv_serv_pkt_types" #define FD_METRICS_COUNTER_REPAIR_RECV_SERV_PKT_TYPES_TYPE (FD_METRICS_TYPE_COUNTER) #define FD_METRICS_COUNTER_REPAIR_RECV_SERV_PKT_TYPES_DESC "Server messages received" #define FD_METRICS_COUNTER_REPAIR_RECV_SERV_PKT_TYPES_CVT (FD_METRICS_CONVERTER_NONE) #define FD_METRICS_COUNTER_REPAIR_RECV_SERV_PKT_TYPES_CNT (5UL) -#define FD_METRICS_COUNTER_REPAIR_RECV_SERV_PKT_TYPES_PONG_OFF (21UL) -#define FD_METRICS_COUNTER_REPAIR_RECV_SERV_PKT_TYPES_WINDOW_OFF (22UL) -#define FD_METRICS_COUNTER_REPAIR_RECV_SERV_PKT_TYPES_HIGHEST_WINDOW_OFF (23UL) -#define FD_METRICS_COUNTER_REPAIR_RECV_SERV_PKT_TYPES_ORPHAN_OFF (24UL) -#define FD_METRICS_COUNTER_REPAIR_RECV_SERV_PKT_TYPES_UNKNOWN_OFF (25UL) +#define FD_METRICS_COUNTER_REPAIR_RECV_SERV_PKT_TYPES_PONG_OFF (24UL) +#define FD_METRICS_COUNTER_REPAIR_RECV_SERV_PKT_TYPES_WINDOW_OFF (25UL) +#define FD_METRICS_COUNTER_REPAIR_RECV_SERV_PKT_TYPES_HIGHEST_WINDOW_OFF (26UL) +#define FD_METRICS_COUNTER_REPAIR_RECV_SERV_PKT_TYPES_ORPHAN_OFF (27UL) +#define FD_METRICS_COUNTER_REPAIR_RECV_SERV_PKT_TYPES_UNKNOWN_OFF (28UL) -#define FD_METRICS_COUNTER_REPAIR_RECV_PKT_CORRUPTED_MSG_OFF (26UL) +#define FD_METRICS_COUNTER_REPAIR_RECV_PKT_CORRUPTED_MSG_OFF (29UL) #define FD_METRICS_COUNTER_REPAIR_RECV_PKT_CORRUPTED_MSG_NAME "repair_recv_pkt_corrupted_msg" #define FD_METRICS_COUNTER_REPAIR_RECV_PKT_CORRUPTED_MSG_TYPE (FD_METRICS_TYPE_COUNTER) #define FD_METRICS_COUNTER_REPAIR_RECV_PKT_CORRUPTED_MSG_DESC "How many corrupt messages have we received" #define FD_METRICS_COUNTER_REPAIR_RECV_PKT_CORRUPTED_MSG_CVT (FD_METRICS_CONVERTER_NONE) -#define FD_METRICS_COUNTER_REPAIR_SEND_PKT_CNT_OFF (27UL) +#define FD_METRICS_COUNTER_REPAIR_SEND_PKT_CNT_OFF (30UL) #define FD_METRICS_COUNTER_REPAIR_SEND_PKT_CNT_NAME "repair_send_pkt_cnt" #define FD_METRICS_COUNTER_REPAIR_SEND_PKT_CNT_TYPE (FD_METRICS_TYPE_COUNTER) #define FD_METRICS_COUNTER_REPAIR_SEND_PKT_CNT_DESC "How many packets have sent" #define FD_METRICS_COUNTER_REPAIR_SEND_PKT_CNT_CVT (FD_METRICS_CONVERTER_NONE) -#define FD_METRICS_COUNTER_REPAIR_SENT_PKT_TYPES_OFF (28UL) +#define FD_METRICS_COUNTER_REPAIR_SENT_PKT_TYPES_OFF (31UL) #define FD_METRICS_COUNTER_REPAIR_SENT_PKT_TYPES_NAME "repair_sent_pkt_types" #define FD_METRICS_COUNTER_REPAIR_SENT_PKT_TYPES_TYPE (FD_METRICS_TYPE_COUNTER) #define FD_METRICS_COUNTER_REPAIR_SENT_PKT_TYPES_DESC "What types of client messages are we sending" #define FD_METRICS_COUNTER_REPAIR_SENT_PKT_TYPES_CVT (FD_METRICS_CONVERTER_NONE) #define FD_METRICS_COUNTER_REPAIR_SENT_PKT_TYPES_CNT (3UL) -#define FD_METRICS_COUNTER_REPAIR_SENT_PKT_TYPES_NEEDED_WINDOW_OFF (28UL) -#define FD_METRICS_COUNTER_REPAIR_SENT_PKT_TYPES_NEEDED_HIGHEST_WINDOW_OFF (29UL) -#define FD_METRICS_COUNTER_REPAIR_SENT_PKT_TYPES_NEEDED_ORPHAN_OFF (30UL) +#define FD_METRICS_COUNTER_REPAIR_SENT_PKT_TYPES_NEEDED_WINDOW_OFF (31UL) +#define FD_METRICS_COUNTER_REPAIR_SENT_PKT_TYPES_NEEDED_HIGHEST_WINDOW_OFF (32UL) +#define FD_METRICS_COUNTER_REPAIR_SENT_PKT_TYPES_NEEDED_ORPHAN_OFF (33UL) -#define FD_METRICS_HISTOGRAM_REPAIR_STORE_LINK_WAIT_OFF (31UL) +#define FD_METRICS_HISTOGRAM_REPAIR_STORE_LINK_WAIT_OFF (34UL) #define FD_METRICS_HISTOGRAM_REPAIR_STORE_LINK_WAIT_NAME "repair_store_link_wait" #define FD_METRICS_HISTOGRAM_REPAIR_STORE_LINK_WAIT_TYPE (FD_METRICS_TYPE_HISTOGRAM) #define FD_METRICS_HISTOGRAM_REPAIR_STORE_LINK_WAIT_DESC "Time in seconds spent waiting for the store to link a new FEC set" #define FD_METRICS_HISTOGRAM_REPAIR_STORE_LINK_WAIT_CVT (FD_METRICS_CONVERTER_SECONDS) #define FD_METRICS_HISTOGRAM_REPAIR_STORE_LINK_WAIT_MIN (1e-08) -#define FD_METRICS_HISTOGRAM_REPAIR_STORE_LINK_WAIT_MAX (0.001) +#define FD_METRICS_HISTOGRAM_REPAIR_STORE_LINK_WAIT_MAX (0.0005) -#define FD_METRICS_HISTOGRAM_REPAIR_STORE_LINK_WORK_OFF (48UL) +#define FD_METRICS_HISTOGRAM_REPAIR_STORE_LINK_WORK_OFF (51UL) #define FD_METRICS_HISTOGRAM_REPAIR_STORE_LINK_WORK_NAME "repair_store_link_work" #define FD_METRICS_HISTOGRAM_REPAIR_STORE_LINK_WORK_TYPE (FD_METRICS_TYPE_HISTOGRAM) #define FD_METRICS_HISTOGRAM_REPAIR_STORE_LINK_WORK_DESC "Time in seconds spent on linking a new FEC set" #define FD_METRICS_HISTOGRAM_REPAIR_STORE_LINK_WORK_CVT (FD_METRICS_CONVERTER_SECONDS) #define FD_METRICS_HISTOGRAM_REPAIR_STORE_LINK_WORK_MIN (1e-08) -#define FD_METRICS_HISTOGRAM_REPAIR_STORE_LINK_WORK_MAX (0.001) +#define FD_METRICS_HISTOGRAM_REPAIR_STORE_LINK_WORK_MAX (0.0005) -#define FD_METRICS_REPAIR_TOTAL (17UL) +#define FD_METRICS_REPAIR_TOTAL (20UL) extern const fd_metrics_meta_t FD_METRICS_REPAIR[FD_METRICS_REPAIR_TOTAL]; diff --git a/src/disco/metrics/generated/fd_metrics_shred.h b/src/disco/metrics/generated/fd_metrics_shred.h index 4f87b52937..006f62142d 100644 --- a/src/disco/metrics/generated/fd_metrics_shred.h +++ b/src/disco/metrics/generated/fd_metrics_shred.h @@ -117,7 +117,7 @@ #define FD_METRICS_HISTOGRAM_SHRED_STORE_INSERT_WAIT_DESC "Time in seconds spent waiting for the store to insert a new FEC set" #define FD_METRICS_HISTOGRAM_SHRED_STORE_INSERT_WAIT_CVT (FD_METRICS_CONVERTER_SECONDS) #define FD_METRICS_HISTOGRAM_SHRED_STORE_INSERT_WAIT_MIN (1e-08) -#define FD_METRICS_HISTOGRAM_SHRED_STORE_INSERT_WAIT_MAX (0.001) +#define FD_METRICS_HISTOGRAM_SHRED_STORE_INSERT_WAIT_MAX (0.0005) #define FD_METRICS_HISTOGRAM_SHRED_STORE_INSERT_WORK_OFF (133UL) #define FD_METRICS_HISTOGRAM_SHRED_STORE_INSERT_WORK_NAME "shred_store_insert_work" @@ -125,7 +125,7 @@ #define FD_METRICS_HISTOGRAM_SHRED_STORE_INSERT_WORK_DESC "Time in seconds spent on inserting a new FEC set" #define FD_METRICS_HISTOGRAM_SHRED_STORE_INSERT_WORK_CVT (FD_METRICS_CONVERTER_SECONDS) #define FD_METRICS_HISTOGRAM_SHRED_STORE_INSERT_WORK_MIN (1e-08) -#define FD_METRICS_HISTOGRAM_SHRED_STORE_INSERT_WORK_MAX (0.001) +#define FD_METRICS_HISTOGRAM_SHRED_STORE_INSERT_WORK_MAX (0.0005) #define FD_METRICS_SHRED_TOTAL (22UL) extern const fd_metrics_meta_t FD_METRICS_SHRED[FD_METRICS_SHRED_TOTAL]; diff --git a/src/disco/metrics/metrics.xml b/src/disco/metrics/metrics.xml index f5a22103bb..c07241a0a2 100644 --- a/src/disco/metrics/metrics.xml +++ b/src/disco/metrics/metrics.xml @@ -680,10 +680,6 @@ metric introduced. Time in seconds spent on publishing a new FEC set - - - - @@ -791,6 +787,9 @@ metric introduced. + + + diff --git a/src/discof/repair/fd_repair_tile.c b/src/discof/repair/fd_repair_tile.c index 31642c4a26..5ef7211fa6 100644 --- a/src/discof/repair/fd_repair_tile.c +++ b/src/discof/repair/fd_repair_tile.c @@ -104,6 +104,7 @@ struct fd_repair_tile_ctx { ulong * turbine_slot0; ulong * turbine_slot; + ulong latest_repair_slot; /* slot of most recent repair request, used as a gauge metric */ uchar identity_private_key[ 32 ]; fd_pubkey_t identity_public_key; @@ -412,6 +413,7 @@ fd_repair_send_requests( fd_repair_tile_ctx_t * ctx, fd_repair_send_request( ctx, stem, glob, type, slot, shred_index, id, now ); if( FD_UNLIKELY( glob->peer_idx >= glob->peer_cnt ) ) glob->peer_idx = 0; /* wrap around */ } + ctx->latest_repair_slot = slot; } @@ -1060,6 +1062,10 @@ static inline void metrics_write( fd_repair_tile_ctx_t * ctx ) { /* Repair-protocol-specific metrics */ fd_repair_metrics_t * metrics = fd_repair_get_metrics( ctx->repair ); + FD_MGAUGE_SET( REPAIR, FIRST_TURBINE_SLOT, fd_fseq_query( ctx->turbine_slot0 ) ); + FD_MGAUGE_SET( REPAIR, LATEST_TURBINE_SLOT, fd_fseq_query( ctx->turbine_slot ) ); + FD_MGAUGE_SET( REPAIR, LATEST_REPAIR_SLOT, ctx->latest_repair_slot ); + FD_MCNT_SET( REPAIR, RECV_CLNT_PKT, metrics->recv_clnt_pkt ); FD_MCNT_SET( REPAIR, RECV_SERV_PKT, metrics->recv_serv_pkt ); FD_MCNT_SET( REPAIR, RECV_SERV_CORRUPT_PKT, metrics->recv_serv_corrupt_pkt ); diff --git a/src/discof/replay/fd_replay_tile.c b/src/discof/replay/fd_replay_tile.c index 282c92253f..2f50054130 100644 --- a/src/discof/replay/fd_replay_tile.c +++ b/src/discof/replay/fd_replay_tile.c @@ -192,7 +192,6 @@ struct fd_replay_tile_ctx { // Inputs to plugin/gui fd_replay_out_link_t plugin_out[1]; - fd_replay_out_link_t votes_plugin_out[1]; long last_plugin_push_time; int tx_metadata_storage; @@ -1071,103 +1070,6 @@ init_poh( fd_replay_tile_ctx_t * ctx ) { ctx->poh_init_done = 1; } -static void -publish_votes_to_plugin( fd_replay_tile_ctx_t * ctx, - fd_stem_context_t * stem ) { - uchar * dst = (uchar *)fd_chunk_to_laddr( ctx->votes_plugin_out->mem, ctx->votes_plugin_out->chunk ); - - ulong bank_slot = fd_bank_slot_get( ctx->slot_ctx->bank ); - fd_fork_t * fork = fd_fork_frontier_ele_query( ctx->forks->frontier, &bank_slot, NULL, ctx->forks->pool ); - if( FD_UNLIKELY ( !fork ) ) return; - - fd_vote_accounts_global_t const * epoch_stakes = fd_bank_epoch_stakes_locking_query( ctx->slot_ctx->bank ); - fd_vote_accounts_pair_global_t_mapnode_t * epoch_stakes_pool = fd_vote_accounts_vote_accounts_pool_join( epoch_stakes ); - fd_vote_accounts_pair_global_t_mapnode_t * epoch_stakes_root = fd_vote_accounts_vote_accounts_root_join( epoch_stakes ); - - ulong i = 0; - FD_SPAD_FRAME_BEGIN( ctx->runtime_spad ) { - for( fd_vote_accounts_pair_global_t_mapnode_t const * n = fd_vote_accounts_pair_global_t_map_minimum_const( epoch_stakes_pool, epoch_stakes_root ); - n && i < FD_CLUSTER_NODE_CNT; - n = fd_vote_accounts_pair_global_t_map_successor_const( epoch_stakes_pool, n ) ) { - if( n->elem.stake == 0 ) continue; - - uchar * data = (uchar *)&n->elem.value + n->elem.value.data_offset; - ulong data_len = n->elem.value.data_len; - - int err; - fd_vote_state_versioned_t * vsv = fd_bincode_decode_spad( - vote_state_versioned, ctx->runtime_spad, - data, - data_len, - &err ); - if( FD_UNLIKELY( err ) ) { - FD_LOG_ERR(( "Unexpected failure in decoding vote state %d", err )); - } - - fd_pubkey_t node_pubkey; - ulong commission; - ulong epoch_credits; - fd_vote_epoch_credits_t const * _epoch_credits; - ulong root_slot; - - switch( vsv->discriminant ) { - case fd_vote_state_versioned_enum_v0_23_5: - node_pubkey = vsv->inner.v0_23_5.node_pubkey; - commission = vsv->inner.v0_23_5.commission; - _epoch_credits = deq_fd_vote_epoch_credits_t_cnt( vsv->inner.v0_23_5.epoch_credits ) == 0 ? NULL : deq_fd_vote_epoch_credits_t_peek_tail_const( vsv->inner.v0_23_5.epoch_credits ); - epoch_credits = _epoch_credits==NULL ? 0UL : _epoch_credits->credits - _epoch_credits->prev_credits; - root_slot = vsv->inner.v0_23_5.root_slot; - break; - case fd_vote_state_versioned_enum_v1_14_11: - node_pubkey = vsv->inner.v1_14_11.node_pubkey; - commission = vsv->inner.v1_14_11.commission; - _epoch_credits = deq_fd_vote_epoch_credits_t_cnt( vsv->inner.v1_14_11.epoch_credits ) == 0 ? NULL : deq_fd_vote_epoch_credits_t_peek_tail_const( vsv->inner.v1_14_11.epoch_credits ); - epoch_credits = _epoch_credits==NULL ? 0UL : _epoch_credits->credits - _epoch_credits->prev_credits; - root_slot = vsv->inner.v1_14_11.root_slot; - break; - case fd_vote_state_versioned_enum_current: - node_pubkey = vsv->inner.current.node_pubkey; - commission = vsv->inner.current.commission; - _epoch_credits = deq_fd_vote_epoch_credits_t_cnt( vsv->inner.current.epoch_credits ) == 0 ? NULL : deq_fd_vote_epoch_credits_t_peek_tail_const( vsv->inner.current.epoch_credits ); - epoch_credits = _epoch_credits==NULL ? 0UL : _epoch_credits->credits - _epoch_credits->prev_credits; - root_slot = vsv->inner.v0_23_5.root_slot; - break; - default: - __builtin_unreachable(); - } - - fd_clock_timestamp_vote_t_mapnode_t query; - memcpy( query.elem.pubkey.uc, n->elem.key.uc, 32UL ); - fd_clock_timestamp_votes_global_t const * clock_timestamp_votes = fd_bank_clock_timestamp_votes_locking_query( ctx->slot_ctx->bank ); - fd_clock_timestamp_vote_t_mapnode_t * timestamp_votes_root = fd_clock_timestamp_votes_votes_root_join( clock_timestamp_votes ); - fd_clock_timestamp_vote_t_mapnode_t * timestamp_votes_pool = fd_clock_timestamp_votes_votes_pool_join( clock_timestamp_votes ); - - fd_clock_timestamp_vote_t_mapnode_t * res = fd_clock_timestamp_vote_t_map_find( timestamp_votes_pool, timestamp_votes_root, &query ); - - fd_vote_update_msg_t * msg = (fd_vote_update_msg_t *)(dst + sizeof(ulong) + i*112U); - memset( msg, 0, 112U ); - memcpy( msg->vote_pubkey, n->elem.key.uc, sizeof(fd_pubkey_t) ); - memcpy( msg->node_pubkey, node_pubkey.uc, sizeof(fd_pubkey_t) ); - msg->activated_stake = n->elem.stake; - msg->last_vote = res == NULL ? 0UL : res->elem.slot; - msg->root_slot = root_slot; - msg->epoch_credits = epoch_credits; - msg->commission = (uchar)commission; - msg->is_delinquent = (uchar)fd_int_if(fd_bank_slot_get( ctx->slot_ctx->bank ) >= 128UL, msg->last_vote <= fd_bank_slot_get( ctx->slot_ctx->bank ) - 128UL, msg->last_vote == 0); - ++i; - fd_bank_clock_timestamp_votes_end_locking_query( ctx->slot_ctx->bank ); - } - } FD_SPAD_FRAME_END; - - fd_bank_epoch_stakes_end_locking_query( ctx->slot_ctx->bank ); - - *(ulong *)dst = i; - - ulong tspub = (ulong)fd_frag_meta_ts_comp( fd_tickcount() ); - fd_stem_publish( stem, ctx->votes_plugin_out->idx, FD_PLUGIN_MSG_VOTE_ACCOUNT_UPDATE, ctx->votes_plugin_out->chunk, 0, 0UL, 0UL, tspub ); - ctx->votes_plugin_out->chunk = fd_dcache_compact_next( ctx->votes_plugin_out->chunk, 8UL + 40200UL*(58UL+12UL*34UL), ctx->votes_plugin_out->chunk0, ctx->votes_plugin_out->wmark ); -} - static void handle_writer_state_updates( fd_replay_tile_ctx_t * ctx ) { @@ -1395,6 +1297,7 @@ handle_slot_change( fd_replay_tile_ctx_t * ctx, } ulong turbine_slot = fd_fseq_query( ctx->turbine_slot ); + ctx->metrics.slot = slot; FD_LOG_NOTICE(( "\n\n[Distance]\n" "slot: %lu\n" "current turbine: %lu\n" @@ -1682,19 +1585,11 @@ after_credit( fd_replay_tile_ctx_t * ctx, int * opt_poll_in FD_PARAM_UNUSED, int * charge_busy FD_PARAM_UNUSED ) { - if( !ctx->snapshot_init_done ) { - if( ctx->plugin_out->mem ) { - uchar msg[56]; - fd_memset( msg, 0, sizeof(msg) ); - msg[ 0 ] = 0; // ValidatorStartProgress::Initializing - replay_plugin_publish( ctx, stem, FD_PLUGIN_MSG_START_PROGRESS, msg, sizeof(msg) ); - } - - if( strlen( ctx->genesis )>0 ) { + if( FD_UNLIKELY( !ctx->snapshot_init_done ) ) { + if( FD_LIKELY( strlen( ctx->genesis )>0 ) ) { init_from_genesis( ctx, stem ); ctx->snapshot_init_done = 1; } - return; } @@ -1705,12 +1600,6 @@ after_credit( fd_replay_tile_ctx_t * ctx, exec_and_handle_slice( ctx, stem ); - long now = fd_log_wallclock(); - if( ctx->votes_plugin_out->mem && FD_UNLIKELY( ( now - ctx->last_plugin_push_time )>PLUGIN_PUBLISH_TIME_NS ) ) { - ctx->last_plugin_push_time = now; - publish_votes_to_plugin( ctx, stem ); - } - } static void @@ -2181,16 +2070,6 @@ unprivileged_init( fd_topo_t * topo, ctx->plugin_out->chunk0 = fd_dcache_compact_chunk0( ctx->plugin_out->mem, replay_plugin_out->dcache ); ctx->plugin_out->wmark = fd_dcache_compact_wmark ( ctx->plugin_out->mem, replay_plugin_out->dcache, replay_plugin_out->mtu ); ctx->plugin_out->chunk = ctx->plugin_out->chunk0; - - ctx->votes_plugin_out->idx = fd_topo_find_tile_out_link( topo, tile, "votes_plugin", 0 ); - fd_topo_link_t const * votes_plugin_out = &topo->links[ tile->out_link_id[ ctx->votes_plugin_out->idx] ]; - if( strcmp( votes_plugin_out->name, "votes_plugin" ) ) { - FD_LOG_ERR(("output link confusion for output %lu", ctx->votes_plugin_out->idx)); - } - ctx->votes_plugin_out->mem = topo->workspaces[ topo->objs[ votes_plugin_out->dcache_obj_id ].wksp_id ].wksp; - ctx->votes_plugin_out->chunk0 = fd_dcache_compact_chunk0( ctx->votes_plugin_out->mem, votes_plugin_out->dcache ); - ctx->votes_plugin_out->wmark = fd_dcache_compact_wmark ( ctx->votes_plugin_out->mem, votes_plugin_out->dcache, votes_plugin_out->mtu ); - ctx->votes_plugin_out->chunk = ctx->votes_plugin_out->chunk0; } if( strnlen( tile->replay.slots_replayed, sizeof(tile->replay.slots_replayed) )>0UL ) {