flamenco, runtime, vm: clean up bounds on the number of instruction accounts
Corrects the value of FD_INSTR_ACCT_MAX to a larger bound derived from the transaction MTU. Without this, it is possible to cause a conformance divergence.
Credit to @nick0ve for reporting this in https://github.com/firedancer-io/auditor-internal/issues/348.
We were also using FD_INSTR_ACCT_MAX in several places where we shouldn't have been. This PR corrects that, so that we only use this larger bound where it's actually necessary.
Thankfully, https://github.com/solana-foundation/solana-improvement-documents/pull/406 fixes this by limiting the number of instruction accounts to 255 at the transaction sanitization level. Once that SIMD is implemented and activated we can use the same 255 limit everywhere.
Increases the size of fd_runtime_t by 470KB.
Performance Measurements ⏳
| Suite | Baseline | New | Change |
|---|---|---|---|
backtest mainnet-368528500-perf per slot |
0.050966 s |
0.050701 s |
-0.520% ✅ |
backtest mainnet-368528500-perf snapshot load |
1.626 s |
1.64 s |
0.861% ✅ |
backtest mainnet-368528500-perf total elapsed |
50.9661 s |
50.701451 s |
-0.519% ✅ |
firedancer mem usage with mainnet.toml |
1023.23 GiB |
1023.23 GiB |
0.000% ✅ |
Performance Measurements ⏳
| Suite | Baseline | New | Change |
|---|---|---|---|
backtest mainnet-368528500-perf per slot |
0.083272 s |
0.076843 s |
-7.720% ✅ |
backtest mainnet-368528500-perf snapshot load |
3.068 s |
3.066 s |
-0.065% ✅ |
backtest mainnet-368528500-perf total elapsed |
83.271952 s |
76.842749 s |
-7.721% ✅ |
firedancer mem usage with mainnet.toml |
1023.23 GiB |
1023.23 GiB |
0.000% ✅ |
Performance Measurements ⏳
| Suite | Baseline | New | Change |
|---|---|---|---|
backtest mainnet-368528500-perf per slot |
0.073861 s |
0.073771 s |
-0.122% ✅ |
backtest mainnet-368528500-perf snapshot load |
3.18 s |
3.144 s |
-1.132% ✅ |
backtest mainnet-368528500-perf total elapsed |
73.861388 s |
73.770658 s |
-0.123% ✅ |
firedancer mem usage with mainnet.toml |
1023.23 GiB |
1023.23 GiB |
0.000% ✅ |
Performance Measurements ⏳
| Suite | Baseline | New | Change |
|---|---|---|---|
backtest mainnet-368528500-perf per slot |
0.062897 s |
0.063242 s |
0.549% ✅ |
backtest mainnet-368528500-perf snapshot load |
2.345 s |
2.343 s |
-0.085% ✅ |
backtest mainnet-368528500-perf total elapsed |
62.897126 s |
63.242102 s |
0.548% ✅ |
firedancer mem usage with mainnet.toml |
1023.23 GiB |
1023.23 GiB |
0.000% ✅ |
Performance Measurements ⏳
| Suite | Baseline | New | Change |
|---|---|---|---|
backtest mainnet-368528500-perf per slot |
0.073589 s |
0.074041 s |
0.614% ✅ |
backtest mainnet-368528500-perf snapshot load |
3.208 s |
3.155 s |
-1.652% ✅ |
backtest mainnet-368528500-perf total elapsed |
73.589184 s |
74.041384 s |
0.614% ✅ |
firedancer mem usage with mainnet.toml |
1023.23 GiB |
1023.23 GiB |
0.000% ✅ |
Performance Measurements ⏳
| Suite | Baseline | New | Change |
|---|---|---|---|
backtest mainnet-368528500-perf per slot |
0.050908 s |
0.050993 s |
0.167% ✅ |
backtest mainnet-368528500-perf snapshot load |
1.612 s |
1.609 s |
-0.186% ✅ |
backtest mainnet-368528500-perf total elapsed |
50.90766 s |
50.992866 s |
0.167% ✅ |
firedancer mem usage with mainnet.toml |
1023.23 GiB |
1023.23 GiB |
0.000% ✅ |
Performance Measurements ⏳
| Suite | Baseline | New | Change |
|---|---|---|---|
backtest mainnet-368528500-perf per slot |
0.073527 s |
0.07412 s |
0.807% ✅ |
backtest mainnet-368528500-perf snapshot load |
3.194 s |
3.206 s |
0.376% ✅ |
backtest mainnet-368528500-perf total elapsed |
73.527075 s |
74.12003 s |
0.806% ✅ |
firedancer mem usage with mainnet.toml |
1023.23 GiB |
1023.23 GiB |
0.000% ✅ |