Skip to content

Commit 8e324d4

Browse files
snapshots: lthash (#7064)
1 parent 68f00e6 commit 8e324d4

40 files changed

+1835
-130
lines changed

book/api/metrics-generated.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1128,3 +1128,27 @@
11281128
| <span class="metrics-name">snapwh_&#8203;state</span> | gauge | State of the tile. 0=IDLE, 1=PROCESSING, 4=SHUTDOWN |
11291129

11301130
</div>
1131+
1132+
## Snapla Tile
1133+
1134+
<div class="metrics">
1135+
1136+
| Metric | Type | Description |
1137+
|--------|------|-------------|
1138+
| <span class="metrics-name">snapla_&#8203;state</span> | gauge | State of the tile. 0=IDLE, 1=PROCESSING, 2=FINISHING, 3=ERROR, 4=SHUTDOWN |
1139+
| <span class="metrics-name">snapla_&#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 |
1140+
| <span class="metrics-name">snapla_&#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 |
1141+
1142+
</div>
1143+
1144+
## Snapls Tile
1145+
1146+
<div class="metrics">
1147+
1148+
| Metric | Type | Description |
1149+
|--------|------|-------------|
1150+
| <span class="metrics-name">snapls_&#8203;state</span> | gauge | State of the tile. 0=IDLE, 1=PROCESSING, 2=FINISHING, 3=ERROR, 4=SHUTDOWN |
1151+
| <span class="metrics-name">snapls_&#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 |
1152+
| <span class="metrics-name">snapls_&#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 |
1153+
1154+
</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.snapla_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, "snapla" );
117+
fd_topob_wksp( topo, "snapls" );
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, "snapla", "snapla", "metric_in", cpu_idx++, 0, 0 )->allow_shutdown = 1;
126+
/**/ fd_topob_tile( topo, "snapls", "snapls", "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, "snapls_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, "snapla_ls" );
169+
fd_topob_wksp( topo, "snapin_ls" );
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, "snapla_ls", "snapla_ls", 128UL, sizeof(fd_lthash_value_t), 1UL );
183+
/**/ fd_topob_link( topo, "snapin_ls", "snapin_ls", 256UL, sizeof(fd_snapshot_full_account_t), 1UL );
184+
/**/ fd_topob_link( topo, "snapls_ct", "snapls_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", "snapls_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_ls", 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, "snapla", i, "metric_in", "snapdc_in", 0UL, FD_TOPOB_RELIABLE, FD_TOPOB_POLLED );
211+
FOR(lta_tile_cnt) fd_topob_tile_out( topo, "snapla", i, "snapla_ls", i );
212+
/**/ fd_topob_tile_in ( topo, "snapls", 0UL, "metric_in", "snapin_ls", 0UL, FD_TOPOB_RELIABLE, FD_TOPOB_POLLED );
213+
FOR(lta_tile_cnt) fd_topob_tile_in ( topo, "snapls", 0UL, "metric_in", "snapla_ls", i, FD_TOPOB_RELIABLE, FD_TOPOB_POLLED );
214+
/**/ fd_topob_tile_out( topo, "snapls", 0UL, "snapls_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)