-
Notifications
You must be signed in to change notification settings - Fork 901
Add Electra forks to basic sim tests #7199
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Electra forks to basic sim tests #7199
Conversation
On my laptop, a fulu block takes up to 5s to import, and currently we run with 2s slot time ( |
I have tried slowing down the tests, and getting better results but still not perfect:
I think we'll have to wait until #7117 is merged (offload proof computation from BN). |
Squashed commit of the following: commit 008ad45 Author: Jimmy Chen <[email protected]> Date: Thu Apr 10 14:18:16 2025 +1000 Rewrite to avoid lock contention during computation. commit 5fa537b Author: Jimmy Chen <[email protected]> Date: Thu Apr 10 13:38:22 2025 +1000 Simplify beacon proposer cache API. commit 1106419 Author: Jimmy Chen <[email protected]> Date: Thu Apr 10 12:55:10 2025 +1000 Compute proposer shuffling only once in gossip verification.
44ae671
to
03d4866
Compare
After merging #7117, this seems to be doing a lot better, however it's still missing a few slots. |
Looks like we're really close after merging the above mentioned 2 PRs, only missing 1 slot now.
|
Note: we don't have getBlobsV2 in the EL version being used, which may improve things but i think it would be good to make sure this works without it. |
03d4866
to
7a0a25a
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
…chine with 2 second slot time is not realistic.
So I pushed one more change to reduce the likelihood of miss blocks:
If this still doesn't work, then we'd need to limit the number of blobs we produce. The current set up with 12 blobs, 6 supernodes and 2s slots isn't feasible on a CI runner. |
…x wrong chain spec in sim tests.
…sim-test-support # Conflicts: # beacon_node/beacon_chain/src/data_column_verification.rs
86ffe8b
to
cc87b22
Compare
cc87b22
to
87a2c3a
Compare
7e0d76c
to
dc7b310
Compare
I've noticed that only after Fulu fork we get delayed head block:
and notice the differences for
I wanted to be sure we're not slow down because of locks - but this is likely an issue on local setup with limited resources
It does perform better under kurtosis though - I don't see the same issue using a similar setup under kurtosis - 2 supernodes 2 fullnodes, 6s slot, and no missed slots for many epochs. I'm guessing the kurtosis setup potentially:
I think this test would work if we set slot time to > 6 seconds, however it would take a lot longer - 6s slot takes ~30min, and it doesn't feel like it's worth it. We should consider writing a Kurtosis test for this. For now it probably make sense to get the Electra fork and the bug fixes in. I'll remove the Fulu changes from the sim tests and we can move on from this . |
92b9153
to
d485a77
Compare
d485a77
to
75b4b52
Compare
@@ -589,19 +588,19 @@ fn verify_proposer_and_signature<T: BeaconChainTypes>( | |||
chain: &BeaconChain<T>, | |||
) -> Result<(), GossipDataColumnError> { | |||
let column_slot = data_column.slot(); | |||
let column_epoch = column_slot.epoch(E::slots_per_epoch()); | |||
let slots_per_epoch = T::EthSpec::slots_per_epoch(); | |||
let column_epoch = column_slot.epoch(slots_per_epoch); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a bug in minimal preset - causing proposer shuffling miss for every gossip column.
This PR relates to: - #7199 - -> workspace_filter has been enabled (dependency logging has been disabled) - #7394 - -> file logging has been optionally enabled Building on these, this PR enables dependency logging for the simulators. The logs are written to separate files. The libp2p/discv5 logs: - are saved to the directory specified with `--log-dir` - respects the `RUST_LOG` environment variable for log level configuration
Our basic sim test has been [flaky](https://github.com/sigp/lighthouse/actions/runs/15458818777/job/43515966229) for some time, and seems like it has gotten worse since electra fork was added to it in #7199. It looks like the github runner is struggling with the load, currently it runs 7 nodes on a 4 CPU runner, which is definitely too much. We could consider moving this to run on our self hosted runner - but I think running 7 nodes is unnecessary and we can probably trim test this down. Reduce number of basic sim test nodes from 7 (3 BN + 3 Proposer BN + 1 extra) to 4 (2 BN + 1 Proposer BN + 1 extra). If we want to run more nodes, we'd have to consider running on self hosted runners.
Issue Addressed
This PR adds transitions to Electra
and Fulufork epochs in the simulator tests.It also covers blob inclusion verification and data column syncing on a full node in Fulu.UPDATE: Remove fulu fork from sim tests due to #7199 (comment)