diff --git a/book/api/websocket.md b/book/api/websocket.md index 83d7e941b9..5a6fbe1987 100644 --- a/book/api/websocket.md +++ b/book/api/websocket.md @@ -1619,14 +1619,15 @@ rooted. ::: **`SlotRankings`** -| Field | Type | Description | -|-----------------------------------------------|------------|-------------| -| {slots|vals}_{smallest|largest}_tips | `number[]` | Rankings for the {smallest|largest} tips this epoch | -| {slots|vals}_{smallest|largest}_fees | `number[]` | Rankings for the {smallest|largest} fees this epoch | -| {slots|vals}_{smallest|largest}_rewards | `number[]` | Rankings for the {smallest|largest} rewards this epoch | -| {slots|vals}_{smallest|largest}_duration | `number[]` | Rankings for the {smallest|largest} slot durations this epoch | -| {slots|vals}_{smallest|largest}_compute_units | `number[]` | Rankings for the {smallest|largest} compute units this epoch | -| {slots|vals}_{smallest|largest}_skipped | `number[]` | Rankings for the {earliest|latest} skipped slots this epoch | +| Field | Type | Description | +|------------------------------------------------|------------|-------------| +| {slots|vals}_{smallest|largest}_tips | `number[]` | Rankings for the {smallest|largest} tips this epoch | +| {slots|vals}_{smallest|largest}_fees | `number[]` | Rankings for the {smallest|largest} fees this epoch | +| {slots|vals}_{smallest|largest}_rewards | `number[]` | Rankings for the {smallest|largest} rewards this epoch | +| {slots|vals}_{smallest|largest}_rewards_per_cu | `number[]` | Rankings for the {smallest|largest} rewards/cu ratio this epoch | +| {slots|vals}_{smallest|largest}_duration | `number[]` | Rankings for the {smallest|largest} slot durations this epoch | +| {slots|vals}_{smallest|largest}_compute_units | `number[]` | Rankings for the {smallest|largest} compute units this epoch | +| {slots|vals}_{smallest|largest}_skipped | `number[]` | Rankings for the {earliest|latest} skipped slots this epoch | Each metric in this message will have four associated arrays. diff --git a/src/disco/gui/fd_gui.c b/src/disco/gui/fd_gui.c index 4ba44a0691..59c33c4dfa 100644 --- a/src/disco/gui/fd_gui.c +++ b/src/disco/gui/fd_gui.c @@ -1094,11 +1094,12 @@ fd_gui_try_insert_ranking( fd_gui_t * gui, } ulong dur = fd_gui_slot_duration( gui, slot ); - if( FD_LIKELY( dur!=ULONG_MAX ) ) TRY_INSERT_SLOT( duration, slot->slot, dur ); - TRY_INSERT_SLOT( tips, slot->slot, slot->tips ); - TRY_INSERT_SLOT( fees, slot->slot, slot->priority_fee ); - TRY_INSERT_SLOT( rewards, slot->slot, slot->tips + slot->priority_fee ); - TRY_INSERT_SLOT( compute_units, slot->slot, slot->compute_units ); + if( FD_LIKELY( dur!=ULONG_MAX ) ) TRY_INSERT_SLOT( duration, slot->slot, dur ); + TRY_INSERT_SLOT( tips, slot->slot, slot->tips ); + TRY_INSERT_SLOT( fees, slot->slot, slot->priority_fee ); + TRY_INSERT_SLOT( rewards, slot->slot, slot->tips + slot->priority_fee ); + TRY_INSERT_SLOT( rewards_per_cu, slot->slot, (slot->tips + slot->priority_fee) / slot->compute_units ); + TRY_INSERT_SLOT( compute_units, slot->slot, slot->compute_units ); #undef TRY_INSERT_SLOT } diff --git a/src/disco/gui/fd_gui.h b/src/disco/gui/fd_gui.h index fa81b83430..52bc5ebbce 100644 --- a/src/disco/gui/fd_gui.h +++ b/src/disco/gui/fd_gui.h @@ -311,18 +311,20 @@ typedef struct fd_gui_slot_ranking fd_gui_slot_ranking_t; #include "../../util/tmpl/fd_sort.c" struct fd_gui_slot_rankings { - fd_gui_slot_ranking_t largest_tips [ FD_GUI_SLOT_RANKINGS_SZ+1UL ]; - fd_gui_slot_ranking_t largest_fees [ FD_GUI_SLOT_RANKINGS_SZ+1UL ]; - fd_gui_slot_ranking_t largest_rewards [ FD_GUI_SLOT_RANKINGS_SZ+1UL ]; - fd_gui_slot_ranking_t largest_duration [ FD_GUI_SLOT_RANKINGS_SZ+1UL ]; - fd_gui_slot_ranking_t largest_compute_units [ FD_GUI_SLOT_RANKINGS_SZ+1UL ]; - fd_gui_slot_ranking_t largest_skipped [ FD_GUI_SLOT_RANKINGS_SZ+1UL ]; - fd_gui_slot_ranking_t smallest_tips [ FD_GUI_SLOT_RANKINGS_SZ+1UL ]; - fd_gui_slot_ranking_t smallest_fees [ FD_GUI_SLOT_RANKINGS_SZ+1UL ]; - fd_gui_slot_ranking_t smallest_rewards [ FD_GUI_SLOT_RANKINGS_SZ+1UL ]; - fd_gui_slot_ranking_t smallest_duration [ FD_GUI_SLOT_RANKINGS_SZ+1UL ]; - fd_gui_slot_ranking_t smallest_compute_units[ FD_GUI_SLOT_RANKINGS_SZ+1UL ]; - fd_gui_slot_ranking_t smallest_skipped [ FD_GUI_SLOT_RANKINGS_SZ+1UL ]; + fd_gui_slot_ranking_t largest_tips [ FD_GUI_SLOT_RANKINGS_SZ+1UL ]; + fd_gui_slot_ranking_t largest_fees [ FD_GUI_SLOT_RANKINGS_SZ+1UL ]; + fd_gui_slot_ranking_t largest_rewards [ FD_GUI_SLOT_RANKINGS_SZ+1UL ]; + fd_gui_slot_ranking_t largest_duration [ FD_GUI_SLOT_RANKINGS_SZ+1UL ]; + fd_gui_slot_ranking_t largest_compute_units [ FD_GUI_SLOT_RANKINGS_SZ+1UL ]; + fd_gui_slot_ranking_t largest_skipped [ FD_GUI_SLOT_RANKINGS_SZ+1UL ]; + fd_gui_slot_ranking_t largest_rewards_per_cu [ FD_GUI_SLOT_RANKINGS_SZ+1UL ]; + fd_gui_slot_ranking_t smallest_tips [ FD_GUI_SLOT_RANKINGS_SZ+1UL ]; + fd_gui_slot_ranking_t smallest_fees [ FD_GUI_SLOT_RANKINGS_SZ+1UL ]; + fd_gui_slot_ranking_t smallest_rewards [ FD_GUI_SLOT_RANKINGS_SZ+1UL ]; + fd_gui_slot_ranking_t smallest_rewards_per_cu[ FD_GUI_SLOT_RANKINGS_SZ+1UL ]; + fd_gui_slot_ranking_t smallest_duration [ FD_GUI_SLOT_RANKINGS_SZ+1UL ]; + fd_gui_slot_ranking_t smallest_compute_units [ FD_GUI_SLOT_RANKINGS_SZ+1UL ]; + fd_gui_slot_ranking_t smallest_skipped [ FD_GUI_SLOT_RANKINGS_SZ+1UL ]; }; typedef struct fd_gui_slot_rankings fd_gui_slot_rankings_t; diff --git a/src/disco/gui/fd_gui_printf.c b/src/disco/gui/fd_gui_printf.c index 7bd7918b96..42478ea65e 100644 --- a/src/disco/gui/fd_gui_printf.c +++ b/src/disco/gui/fd_gui_printf.c @@ -1185,12 +1185,14 @@ fd_gui_printf_slot_rankings_request( fd_gui_t * gui, OUTPUT_RANKING_ARRAY( largest_tips ); OUTPUT_RANKING_ARRAY( largest_fees ); OUTPUT_RANKING_ARRAY( largest_rewards ); + OUTPUT_RANKING_ARRAY( largest_rewards_per_cu ); OUTPUT_RANKING_ARRAY( largest_duration ); OUTPUT_RANKING_ARRAY( largest_compute_units ); OUTPUT_RANKING_ARRAY( largest_skipped ); OUTPUT_RANKING_ARRAY( smallest_tips ); OUTPUT_RANKING_ARRAY( smallest_fees ); OUTPUT_RANKING_ARRAY( smallest_rewards ); + OUTPUT_RANKING_ARRAY( smallest_rewards_per_cu ); OUTPUT_RANKING_ARRAY( smallest_duration ); OUTPUT_RANKING_ARRAY( smallest_compute_units ); OUTPUT_RANKING_ARRAY( smallest_skipped );