Skip to content

Commit d91459c

Browse files
snapshots: lthash
1 parent fd74c6d commit d91459c

39 files changed

+1868
-177
lines changed

book/api/metrics-generated.md

Lines changed: 35 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -916,6 +916,41 @@
916916

917917
</div>
918918

919+
## Snapwr Tile
920+
921+
<div class="metrics">
922+
923+
| Metric | Type | Description |
924+
|--------|------|-------------|
925+
| <span class="metrics-name">snapwr_&#8203;state</span> | gauge | State of the tile. 0=IDLE, 1=PROCESSING, 4=SHUTDOWN |
926+
| <span class="metrics-name">snapwr_&#8203;vinyl_&#8203;bytes_&#8203;written</span> | gauge | Number of bytes written so far to the vinyl snapshot file. Might decrease if snapshot creation is aborted and restarted |
927+
928+
</div>
929+
930+
## Snaplta Tile
931+
932+
<div class="metrics">
933+
934+
| Metric | Type | Description |
935+
|--------|------|-------------|
936+
| <span class="metrics-name">snaplta_&#8203;state</span> | gauge | State of the tile. 0=hashing, 1=done, 2=shutdown |
937+
| <span class="metrics-name">snaplta_&#8203;full_&#8203;accounts_&#8203;hashed</span> | gauge | Number of accounts hashed for the full snapshot during snapshot loading. Might decrease if snapshot load is aborted and restarted |
938+
| <span class="metrics-name">snaplta_&#8203;incremental_&#8203;accounts_&#8203;hashed</span> | gauge | Number of accounts hashed for the incremental snapshot during snapshot loading. Might decrease if snapshot load is aborted and restarted |
939+
940+
</div>
941+
942+
## Snaplts Tile
943+
944+
<div class="metrics">
945+
946+
| Metric | Type | Description |
947+
|--------|------|-------------|
948+
| <span class="metrics-name">snaplts_&#8203;state</span> | gauge | State of the tile. 0=hashing, 1=done, 2=shutdown |
949+
| <span class="metrics-name">snaplts_&#8203;full_&#8203;accounts_&#8203;hashed</span> | gauge | Number of accounts hashed for the full snapshot during snapshot loading. Might decrease if snapshot load is aborted and restarted |
950+
| <span class="metrics-name">snaplts_&#8203;incremental_&#8203;accounts_&#8203;hashed</span> | gauge | Number of accounts hashed for the incremental snapshot during snapshot loading. Might decrease if snapshot load is aborted and restarted |
951+
952+
</div>
953+
919954
## Ipecho Tile
920955

921956
<div class="metrics">
@@ -1093,14 +1128,3 @@
10931128
| <span class="metrics-name">exec_&#8203;progcache_&#8203;invalidations</span> | counter | Number of program cache invalidations |
10941129

10951130
</div>
1096-
1097-
## Snapwr Tile
1098-
1099-
<div class="metrics">
1100-
1101-
| Metric | Type | Description |
1102-
|--------|------|-------------|
1103-
| <span class="metrics-name">snapwr_&#8203;state</span> | gauge | State of the tile. 0=IDLE, 1=PROCESSING, 4=SHUTDOWN |
1104-
| <span class="metrics-name">snapwr_&#8203;vinyl_&#8203;bytes_&#8203;written</span> | gauge | Number of bytes written so far to the vinyl snapshot file. Might decrease if snapshot creation is aborted and restarted |
1105-
1106-
</div>

src/app/firedancer-dev/commands/backtest.c

Lines changed: 54 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,12 @@ backtest_topo( config_t * config ) {
4747
config->development.no_clone = 1;
4848

4949
ulong exec_tile_cnt = config->firedancer.layout.exec_tile_count;
50+
ulong lta_tile_cnt = config->firedancer.layout.snaplta_tile_count;
5051

51-
int disable_snap_loader = !config->gossip.entrypoints_cnt;
52-
int snap_vinyl = !!config->firedancer.vinyl.enabled;
53-
int solcap_enabled = strlen( config->capture.solcap_capture )>0;
52+
int disable_snap_loader = !config->gossip.entrypoints_cnt;
53+
int snap_vinyl = !!config->firedancer.vinyl.enabled;
54+
int solcap_enabled = strlen( config->capture.solcap_capture )>0;
55+
int snapshot_lthash_disabled = config->development.snapshots.disable_lthash_verification;
5456

5557
fd_topo_t * topo = { fd_topob_new( &config->topo, config->name ) };
5658
topo->max_page_size = fd_cstr_to_shmem_page_sz( config->hugetlbfs.max_page_size );
@@ -109,10 +111,20 @@ backtest_topo( config_t * config ) {
109111
fd_topob_wksp( topo, "snapld" );
110112
fd_topob_wksp( topo, "snapdc" );
111113
fd_topob_wksp( topo, "snapin" );
114+
115+
if( FD_LIKELY( !snapshot_lthash_disabled ) ) {
116+
fd_topob_wksp( topo, "snaplta" );
117+
fd_topob_wksp( topo, "snaplts" );
118+
}
119+
112120
fd_topo_tile_t * snapct_tile = fd_topob_tile( topo, "snapct", "snapct", "metric_in", cpu_idx++, 0, 0 );
113121
fd_topo_tile_t * snapld_tile = fd_topob_tile( topo, "snapld", "snapld", "metric_in", cpu_idx++, 0, 0 );
114122
fd_topo_tile_t * snapdc_tile = fd_topob_tile( topo, "snapdc", "snapdc", "metric_in", cpu_idx++, 0, 0 );
115123
snapin_tile = fd_topob_tile( topo, "snapin", "snapin", "metric_in", cpu_idx++, 0, 0 );
124+
if( FD_LIKELY( !snapshot_lthash_disabled ) ) {
125+
FOR(lta_tile_cnt) fd_topob_tile( topo, "snaplta", "snaplta", "metric_in", cpu_idx++, 0, 0 )->allow_shutdown = 1;
126+
/**/ fd_topob_tile( topo, "snaplts", "snaplts", "metric_in", cpu_idx++, 0, 0 )->allow_shutdown = 1;
127+
}
116128
snapct_tile->allow_shutdown = 1;
117129
snapld_tile->allow_shutdown = 1;
118130
snapdc_tile->allow_shutdown = 1;
@@ -143,18 +155,40 @@ backtest_topo( config_t * config ) {
143155
fd_topob_wksp( topo, "snapct_ld" );
144156
fd_topob_wksp( topo, "snapld_dc" );
145157
fd_topob_wksp( topo, "snapdc_in" );
146-
fd_topob_wksp( topo, "snapin_ct" );
158+
if( FD_UNLIKELY( snapshot_lthash_disabled ) ) {
159+
fd_topob_wksp( topo, "snapin_ct" );
160+
} else {
161+
fd_topob_wksp( topo, "snaplts_ct" );
162+
}
163+
147164
fd_topob_wksp( topo, "snapin_manif" );
148165
fd_topob_wksp( topo, "snapct_repr" );
149166

167+
if( FD_LIKELY( !snapshot_lthash_disabled ) ) {
168+
fd_topob_wksp( topo, "snaplta_lts" );
169+
fd_topob_wksp( topo, "snapin_lts" );
170+
}
171+
150172
fd_topob_link( topo, "snapct_ld", "snapct_ld", 128UL, sizeof(fd_ssctrl_init_t), 1UL );
151173
fd_topob_link( topo, "snapld_dc", "snapld_dc", 16384UL, USHORT_MAX, 1UL );
152174
fd_topob_link( topo, "snapdc_in", "snapdc_in", 16384UL, USHORT_MAX, 1UL );
153-
fd_topob_link( topo, "snapin_ct", "snapin_ct", 128UL, 0UL, 1UL );
175+
if( FD_UNLIKELY( snapshot_lthash_disabled ) ) {
176+
fd_topob_link( topo, "snapin_ct", "snapin_ct", 128UL, 0UL, 1UL );
177+
}
154178
fd_topob_link( topo, "snapin_manif", "snapin_manif", 4UL, sizeof(fd_snapshot_manifest_t), 1UL ); /* TODO: Should be depth 1 or 2 but replay backpressures */
155179
fd_topob_link( topo, "snapct_repr", "snapct_repr", 128UL, 0UL, 1UL )->permit_no_consumers = 1;
156180

157-
fd_topob_tile_in ( topo, "snapct", 0UL, "metric_in", "snapin_ct", 0UL, FD_TOPOB_RELIABLE, FD_TOPOB_POLLED );
181+
if( FD_LIKELY( !snapshot_lthash_disabled ) ) {
182+
FOR(lta_tile_cnt) fd_topob_link( topo, "snaplta_lts", "snaplta_lts", 128UL, sizeof(fd_lthash_value_t), 1UL );
183+
/**/ fd_topob_link( topo, "snapin_lts", "snapin_lts", 1024UL, sizeof(fd_snapshot_existing_account_t), 1UL );
184+
/**/ fd_topob_link( topo, "snaplts_ct", "snaplts_ct", 128UL, 0UL, 1UL );
185+
}
186+
187+
if( FD_UNLIKELY( snapshot_lthash_disabled ) ) {
188+
fd_topob_tile_in ( topo, "snapct", 0UL, "metric_in", "snapin_ct", 0UL, FD_TOPOB_RELIABLE, FD_TOPOB_POLLED );
189+
} else {
190+
fd_topob_tile_in ( topo, "snapct", 0UL, "metric_in", "snaplts_ct", 0UL, FD_TOPOB_RELIABLE, FD_TOPOB_POLLED );
191+
}
158192
fd_topob_tile_in ( topo, "snapct", 0UL, "metric_in", "snapld_dc", 0UL, FD_TOPOB_RELIABLE, FD_TOPOB_POLLED );
159193
fd_topob_tile_out( topo, "snapct", 0UL, "snapct_ld", 0UL );
160194
fd_topob_tile_out( topo, "snapct", 0UL, "snapct_repr", 0UL );
@@ -163,9 +197,22 @@ backtest_topo( config_t * config ) {
163197
fd_topob_tile_in ( topo, "snapdc", 0UL, "metric_in", "snapld_dc", 0UL, FD_TOPOB_RELIABLE, FD_TOPOB_POLLED );
164198
fd_topob_tile_out( topo, "snapdc", 0UL, "snapdc_in", 0UL );
165199
fd_topob_tile_in ( topo, "snapin", 0UL, "metric_in", "snapdc_in", 0UL, FD_TOPOB_RELIABLE, FD_TOPOB_POLLED );
166-
fd_topob_tile_out( topo, "snapin", 0UL, "snapin_ct", 0UL );
200+
if( FD_UNLIKELY( snapshot_lthash_disabled ) ) {
201+
fd_topob_tile_out( topo, "snapin", 0UL, "snapin_ct", 0UL );
202+
} else {
203+
fd_topob_tile_out( topo, "snapin", 0UL, "snapin_lts", 0UL );
204+
}
205+
167206
fd_topob_tile_out( topo, "snapin", 0UL, "snapin_manif", 0UL );
168207
fd_topob_tile_in ( topo, "replay", 0UL, "metric_in", "snapin_manif", 0UL, FD_TOPOB_RELIABLE, FD_TOPOB_POLLED );
208+
209+
if( FD_LIKELY( !snapshot_lthash_disabled ) ) {
210+
FOR(lta_tile_cnt) fd_topob_tile_in( topo, "snaplta", i, "metric_in", "snapdc_in", 0UL, FD_TOPOB_RELIABLE, FD_TOPOB_POLLED );
211+
FOR(lta_tile_cnt) fd_topob_tile_out( topo, "snaplta", i, "snaplta_lts", i );
212+
/**/ fd_topob_tile_in( topo, "snaplts", 0UL, "metric_in", "snapin_lts", 0UL, FD_TOPOB_RELIABLE, FD_TOPOB_POLLED );
213+
FOR(lta_tile_cnt) fd_topob_tile_in( topo, "snaplts", 0UL, "metric_in", "snaplta_lts", i, FD_TOPOB_RELIABLE, FD_TOPOB_POLLED );
214+
/**/ fd_topob_tile_out( topo, "snaplts", 0UL, "snaplts_ct", 0UL );
215+
}
169216
} else {
170217
fd_topob_wksp( topo, "genesi_out" );
171218
fd_topob_link( topo, "genesi_out", "genesi_out", 2UL, 10UL*1024UL*1024UL+32UL+sizeof(fd_lthash_value_t), 1UL );

0 commit comments

Comments
 (0)