@@ -76,9 +76,14 @@ snapshot_load_topo( config_t * config ) {
7676
7777 /* "snapwr": Snapshot writer tile */
7878 int vinyl_enabled = config -> firedancer .vinyl .enabled ;
79+ fd_topo_tile_t * snapwr_tile = NULL ;
7980 if ( vinyl_enabled ) {
81+ fd_topob_wksp ( topo , "snapwh" );
82+ fd_topo_tile_t * snapwh_tile = fd_topob_tile ( topo , "snapwh" , "snapwh" , "metric_in" , ULONG_MAX , 0 , 0 );
83+ snapwh_tile -> allow_shutdown = 1 ;
84+
8085 fd_topob_wksp ( topo , "snapwr" );
81- fd_topo_tile_t * snapwr_tile = fd_topob_tile ( topo , "snapwr" , "snapwr" , "metric_in" , ULONG_MAX , 0 , 0 );
86+ snapwr_tile = fd_topob_tile ( topo , "snapwr" , "snapwr" , "metric_in" , ULONG_MAX , 0 , 0 );
8287 snapwr_tile -> allow_shutdown = 1 ;
8388 }
8489
@@ -88,7 +93,9 @@ snapshot_load_topo( config_t * config ) {
8893 fd_topob_wksp ( topo , "snapin_ct" );
8994 fd_topob_wksp ( topo , "snapin_manif" );
9095 fd_topob_wksp ( topo , "snapct_repr" );
91- if ( vinyl_enabled ) fd_topob_wksp ( topo , "snapin_wr" );
96+ if ( vinyl_enabled ) {
97+ fd_topob_wksp ( topo , "snapin_wr" );
98+ }
9299
93100 fd_topob_link ( topo , "snapct_ld" , "snapct_ld" , 128UL , sizeof (fd_ssctrl_init_t ), 1UL );
94101 fd_topob_link ( topo , "snapld_dc" , "snapld_dc" , 16384UL , USHORT_MAX , 1UL );
@@ -97,7 +104,9 @@ snapshot_load_topo( config_t * config ) {
97104 fd_topob_link ( topo , "snapin_manif" , "snapin_manif" , 2UL , sizeof (fd_snapshot_manifest_t ), 1UL )-> permit_no_consumers = 1 ;
98105 fd_topob_link ( topo , "snapct_repr" , "snapct_repr" , 128UL , 0UL , 1UL )-> permit_no_consumers = 1 ;
99106 if ( vinyl_enabled ) {
100- fd_topob_link ( topo , "snapin_wr" , "snapin_wr" , 4UL , 16UL <<20 , 1UL );
107+ fd_topo_link_t * snapin_wh = fd_topob_link ( topo , "snapin_wh" , "snapin_wr" , 4UL , 16UL <<20 , 1UL );
108+ fd_topob_link ( topo , "snapwh_wr" , "snapin_wr" , 4UL , 0UL , 1UL );
109+ fd_pod_insertf_ulong ( topo -> props , 8UL , "obj.%lu.app_sz" , snapin_wh -> dcache_obj_id );
101110 }
102111
103112 fd_topob_tile_in ( topo , "snapct" , 0UL , "metric_in" , "snapin_ct" , 0UL , FD_TOPOB_RELIABLE , FD_TOPOB_POLLED );
@@ -112,8 +121,11 @@ snapshot_load_topo( config_t * config ) {
112121 fd_topob_tile_out ( topo , "snapin" , 0UL , "snapin_ct" , 0UL );
113122 fd_topob_tile_out ( topo , "snapin" , 0UL , "snapin_manif" , 0UL );
114123 if ( vinyl_enabled ) {
115- fd_topob_tile_out ( topo , "snapin" , 0UL , "snapin_wr" , 0UL );
116- fd_topob_tile_in ( topo , "snapwr" , 0UL , "metric_in" , "snapin_wr" , 0UL , FD_TOPOB_RELIABLE , FD_TOPOB_POLLED );
124+ fd_topob_tile_out ( topo , "snapin" , 0UL , "snapin_wh" , 0UL );
125+ fd_topob_tile_in ( topo , "snapwh" , 0UL , "metric_in" , "snapin_wh" , 0UL , FD_TOPOB_RELIABLE , FD_TOPOB_POLLED );
126+ fd_topob_tile_out ( topo , "snapwh" , 0UL , "snapwh_wr" , 0UL );
127+ fd_topob_tile_in ( topo , "snapwr" , 0UL , "metric_in" , "snapwh_wr" , 0UL , FD_TOPOB_RELIABLE , FD_TOPOB_POLLED );
128+ fd_topob_tile_uses ( topo , snapwr_tile , & topo -> objs [ topo -> links [ fd_topo_find_link ( topo , "snapin_wh" , 0UL ) ].dcache_obj_id ], FD_SHMEM_JOIN_MODE_READ_ONLY );
117129 }
118130
119131 /* snapin funk / txncache access */
@@ -246,7 +258,9 @@ snapshot_load_cmd_fn( args_t * args,
246258 fd_topo_tile_t * snapld_tile = & topo -> tiles [ fd_topo_find_tile ( topo , "snapld" , 0UL ) ];
247259 fd_topo_tile_t * snapdc_tile = & topo -> tiles [ fd_topo_find_tile ( topo , "snapdc" , 0UL ) ];
248260 fd_topo_tile_t * snapin_tile = & topo -> tiles [ fd_topo_find_tile ( topo , "snapin" , 0UL ) ];
261+ ulong snapwh_idx = fd_topo_find_tile ( topo , "snapwh" , 0UL );
249262 ulong snapwr_idx = fd_topo_find_tile ( topo , "snapwr" , 0UL );
263+ fd_topo_tile_t * snapwh_tile = snapwh_idx != ULONG_MAX ? & topo -> tiles [ snapwh_idx ] : NULL ;
250264 fd_topo_tile_t * snapwr_tile = snapwr_idx != ULONG_MAX ? & topo -> tiles [ snapwr_idx ] : NULL ;
251265 if ( args -> snapshot_load .snapshot_path [0 ] ) {
252266 strcpy ( snapct_tile -> snapct .snapshots_path , args -> snapshot_load .snapshot_path );
@@ -263,6 +277,7 @@ snapshot_load_cmd_fn( args_t * args,
263277 ulong volatile * const snapld_metrics = fd_metrics_tile ( snapld_tile -> metrics );
264278 ulong volatile * const snapdc_metrics = fd_metrics_tile ( snapdc_tile -> metrics );
265279 ulong volatile * const snapin_metrics = fd_metrics_tile ( snapin_tile -> metrics );
280+ ulong volatile * const snapwh_metrics = snapwh_tile ? fd_metrics_tile ( snapwh_tile -> metrics ) : NULL ;
266281 ulong volatile * const snapwr_metrics = snapwr_tile ? fd_metrics_tile ( snapwr_tile -> metrics ) : NULL ;
267282
268283 ulong total_off_old = 0UL ;
@@ -276,21 +291,23 @@ snapshot_load_cmd_fn( args_t * args,
276291 ulong snapdc_wait_old = 0UL ;
277292 ulong snapin_backp_old = 0UL ;
278293 ulong snapin_wait_old = 0UL ;
294+ ulong snapwh_wait_old = 0UL ;
279295 ulong snapwr_wait_old = 0UL ;
280296 ulong acc_cnt_old = 0UL ;
281297 sleep ( 1 );
282298 puts ( "" );
283299 puts ( "Columns:" );
284300 puts ( "- comp: Compressed bandwidth" );
285- puts ( "- raw: Uncompressed bandwidth" );
301+ puts ( "- snap: Uncompressed bandwidth" );
302+ if ( snapwr_tile ) puts ( "- vinyl: Database write speed" );
286303 puts ( "- backp: Backpressured by downstream tile" );
287- puts ( "- stall: Waiting on upstream tile" );
304+ puts ( "- busy: Tile utilization" );
288305 puts ( "- acc: Number of accounts" );
289306 puts ( "" );
290307 fputs ( "--------------------------------------------" , stdout );
291308 if ( snapwr_tile ) fputs ( "--------------" , stdout );
292309 fputs ( "[ct],[ld],[dc],[in]--------[ct],[ld],[dc],[in]" , stdout );
293- if ( snapwr_tile ) fputs ( ",[wr]" , stdout );
310+ if ( snapwr_tile ) fputs ( ",[wh],[ wr]" , stdout );
294311 puts ( "--------------" );
295312 long next = start + 1000L * 1000L * 1000L ;
296313 for (;;) {
@@ -321,8 +338,11 @@ snapshot_load_cmd_fn( args_t * args,
321338 ulong snapdc_wait = snapdc_metrics [ MIDX ( COUNTER , TILE , REGIME_DURATION_NANOS_CAUGHT_UP_POSTFRAG ) ] + snapdc_backp ;
322339 ulong snapin_backp = snapin_metrics [ MIDX ( COUNTER , TILE , REGIME_DURATION_NANOS_BACKPRESSURE_PREFRAG ) ];
323340 ulong snapin_wait = snapin_metrics [ MIDX ( COUNTER , TILE , REGIME_DURATION_NANOS_CAUGHT_UP_POSTFRAG ) ] + snapin_backp ;
341+ ulong snapwh_wait = 0UL ;
324342 ulong snapwr_wait = 0UL ;
325343 if ( snapwr_tile ) {
344+ snapwh_wait = snapwh_metrics [ MIDX ( COUNTER , TILE , REGIME_DURATION_NANOS_CAUGHT_UP_POSTFRAG ) ] +
345+ snapwh_metrics [ MIDX ( COUNTER , TILE , REGIME_DURATION_NANOS_BACKPRESSURE_PREFRAG ) ];
326346 snapwr_wait = snapwr_metrics [ MIDX ( COUNTER , TILE , REGIME_DURATION_NANOS_CAUGHT_UP_POSTFRAG ) ] +
327347 snapwr_metrics [ MIDX ( COUNTER , TILE , REGIME_DURATION_NANOS_BACKPRESSURE_PREFRAG ) ];
328348 }
@@ -348,7 +368,8 @@ snapshot_load_cmd_fn( args_t * args,
348368 100 - ( ( (double )( snapdc_wait - snapdc_wait_old )* ns_per_tick )/1e7 ),
349369 100 - ( ( (double )( snapin_wait - snapin_wait_old )* ns_per_tick )/1e7 ) );
350370 if ( snapwr_tile ) {
351- printf ( ",%3.0f%%" ,
371+ printf ( ",%3.0f%%,%3.0f%%" ,
372+ 100 - ( ( (double )( snapwh_wait - snapwh_wait_old )* ns_per_tick )/1e7 ),
352373 100 - ( ( (double )( snapwr_wait - snapwr_wait_old )* ns_per_tick )/1e7 ) );
353374 }
354375 printf ( ") acc=%4.1f M/s\n" ,
@@ -365,6 +386,7 @@ snapshot_load_cmd_fn( args_t * args,
365386 snapdc_wait_old = snapdc_wait ;
366387 snapin_backp_old = snapin_backp ;
367388 snapin_wait_old = snapin_wait ;
389+ snapwh_wait_old = snapwh_wait ;
368390 snapwr_wait_old = snapwr_wait ;
369391 acc_cnt_old = acc_cnt ;
370392
0 commit comments