@@ -173,6 +173,8 @@ total_regime( ulong const * metrics ) {
173173 return sum ;
174174}
175175
176+ static ulong tps_sent_samples_idx = 0UL ;
177+ static ulong tps_sent_samples [ 200UL ];
176178static ulong sps_samples_idx = 0UL ;
177179static ulong sps_samples [ 200UL ];
178180static ulong tps_samples_idx = 0UL ;
@@ -213,6 +215,45 @@ static ulong snapshot_acc_samples[ 100UL ];
213215 fmt_countf( fd_alloca_check( 1UL, 64UL ), 64UL, count ); \
214216 }))
215217
218+ static int
219+ write_bench ( config_t const * config ,
220+ ulong const * cur_tile ,
221+ ulong const * prev_tile ) {
222+ if ( FD_UNLIKELY ( fd_topo_find_tile ( & config -> topo , "benchs" , 0UL )== ULONG_MAX ) ) return 0 ;
223+
224+ ulong tps_sum = 0UL ;
225+ ulong num_tps_samples = fd_ulong_min ( tps_sent_samples_idx , sizeof (tps_sent_samples )/sizeof (tps_sent_samples [0 ]));
226+ for ( ulong i = 0UL ; i < num_tps_samples ; i ++ ) tps_sum += tps_sent_samples [ i ];
227+ char * tps_str = COUNTF ( 100.0 * (double )tps_sum /(double )num_tps_samples );
228+
229+ PRINT ( "🌶 \033[1m\033[92mBENCH.......\033[0m\033[22m \033[1mGENERATED TPS\033[22m %s \033[1mBENCHG BUSY\033[22m" , tps_str );
230+ for ( ulong i = 0UL ; i < config -> topo .tile_cnt ; i ++ ) {
231+ if ( FD_LIKELY ( strcmp ( config -> topo .tiles [ i ].name , "benchg" ) ) ) continue ;
232+
233+ ulong total_ticks = total_regime ( & cur_tile [ i * FD_METRICS_TOTAL_SZ ] )- total_regime ( & prev_tile [ i * FD_METRICS_TOTAL_SZ ] );
234+ double backp_pct = 100.0 * (double )( diff_tile ( config , "benchg" , prev_tile , cur_tile , MIDX ( COUNTER , TILE , REGIME_DURATION_NANOS_BACKPRESSURE_PREFRAG ) ) )/(double )total_ticks ;
235+ double idle_pct = 100.0 * (double )( diff_tile ( config , "benchg" , prev_tile , cur_tile , MIDX ( COUNTER , TILE , REGIME_DURATION_NANOS_CAUGHT_UP_POSTFRAG ) ) )/(double )total_ticks ;
236+ double busy_pct = 100.0 - idle_pct - backp_pct ;
237+
238+ PRINT ( " %.1f %%" , busy_pct );
239+ }
240+
241+ PRINT ( " \033[1mBENCHS BUSY\033[22m" );
242+ for ( ulong i = 0UL ; i < config -> topo .tile_cnt ; i ++ ) {
243+ if ( FD_LIKELY ( strcmp ( config -> topo .tiles [ i ].name , "benchs" ) ) ) continue ;
244+
245+ ulong total_ticks = total_regime ( & cur_tile [ i * FD_METRICS_TOTAL_SZ ] )- total_regime ( & prev_tile [ i * FD_METRICS_TOTAL_SZ ] );
246+ double backp_pct = 100.0 * (double )( diff_tile ( config , "benchs" , prev_tile , cur_tile , MIDX ( COUNTER , TILE , REGIME_DURATION_NANOS_BACKPRESSURE_PREFRAG ) ) )/(double )total_ticks ;
247+ double idle_pct = 100.0 * (double )( diff_tile ( config , "benchs" , prev_tile , cur_tile , MIDX ( COUNTER , TILE , REGIME_DURATION_NANOS_CAUGHT_UP_POSTFRAG ) ) )/(double )total_ticks ;
248+ double busy_pct = 100.0 - idle_pct - backp_pct ;
249+
250+ PRINT ( " %.1f %%" , busy_pct );
251+ }
252+
253+ PRINT ( "\033[K\n" );
254+ return 1 ;
255+ }
256+
216257static void
217258write_backtest ( config_t const * config ,
218259 ulong const * cur_tile ) {
@@ -397,7 +438,7 @@ write_replay( config_t const * config,
397438 for ( ulong i = 0UL ; i < num_tps_samples ; i ++ ) tps_sum += tps_samples [ i ];
398439 char * tps_str = COUNTF ( 100.0 * (double )tps_sum /(double )num_tps_samples );
399440
400- PRINT ( "💥 \033[1m\033[35mREPLAY......\033[0m\033[22m \033[1mSLOT\033[22m %lu (%ld ) \033[1mTPS\033[22m %s \033[1mSPS\033[22m %s \033[1mLEADER IN\033[22m %s \033[1mROOT DIST\033[22m %lu \033[1mBANKS\033[22m %lu\033[K\n" ,
441+ PRINT ( "💥 \033[1m\033[35mREPLAY......\033[0m\033[22m \033[1mSLOT\033[22m %lu (%02ld ) \033[1mTPS\033[22m %s \033[1mSPS\033[22m %s \033[1mLEADER IN\033[22m %s \033[1mROOT DIST\033[22m %lu \033[1mBANKS\033[22m %lu\033[K\n" ,
401442 reset_slot ,
402443 (long )reset_slot - (long )turbine_slot ,
403444 tps_str ,
@@ -433,6 +474,8 @@ write_summary( config_t const * config,
433474
434475 lines_printed = 1UL ;
435476
477+ if ( FD_UNLIKELY ( write_bench ( config , cur_tile , prev_tile ) ) ) lines_printed ++ ;
478+
436479 ulong backt_idx = fd_topo_find_tile ( & config -> topo , "backt" , 0UL );
437480 if ( FD_UNLIKELY ( backt_idx != ULONG_MAX ) ) {
438481 lines_printed ++ ;
@@ -527,6 +570,9 @@ run( config_t const * config,
527570 snap_tiles ( & config -> topo , tiles + last_snap * tile_cnt * FD_METRICS_TOTAL_SZ );
528571 snap_links ( & config -> topo , links + last_snap * (cons_cnt * 8UL * FD_METRICS_ALL_LINK_IN_TOTAL ) );
529572
573+ tps_sent_samples [ tps_sent_samples_idx %(sizeof (tps_sent_samples )/sizeof (tps_sent_samples [0 ])) ] = (ulong )diff_tile ( config , "benchs" , tiles + (1UL - last_snap )* tile_cnt * FD_METRICS_TOTAL_SZ , tiles + last_snap * tile_cnt * FD_METRICS_TOTAL_SZ , MIDX ( COUNTER , BENCHS , TRANSACTIONS_SENT ) );
574+ tps_sent_samples_idx ++ ;
575+
530576 sps_samples [ sps_samples_idx %(sizeof (sps_samples )/sizeof (sps_samples [0 ])) ] = (ulong )diff_tile ( config , "replay" , tiles + (1UL - last_snap )* tile_cnt * FD_METRICS_TOTAL_SZ , tiles + last_snap * tile_cnt * FD_METRICS_TOTAL_SZ , MIDX ( COUNTER , REPLAY , SLOTS_TOTAL ) );
531577 sps_samples_idx ++ ;
532578 tps_samples [ tps_samples_idx %(sizeof (tps_samples )/sizeof (tps_samples [0 ])) ] = (ulong )diff_tile ( config , "replay" , tiles + (1UL - last_snap )* tile_cnt * FD_METRICS_TOTAL_SZ , tiles + last_snap * tile_cnt * FD_METRICS_TOTAL_SZ , MIDX ( COUNTER , REPLAY , TRANSACTIONS_TOTAL ) );
0 commit comments