Skip to content

Optimisations relating to get_expected_withdrawals#9314

Merged
mergify[bot] merged 7 commits into
sigp:unstablefrom
michaelsproul:get-expected-withdrawals-optimisation
Jul 2, 2026
Merged

Optimisations relating to get_expected_withdrawals#9314
mergify[bot] merged 7 commits into
sigp:unstablefrom
michaelsproul:get-expected-withdrawals-optimisation

Conversation

@michaelsproul

Copy link
Copy Markdown
Member

Issue Addressed

Tweaking/optimising get_expected_withdrawals on the pre-Gloas path, after the removal of some optimisations in:

Proposed Changes

  • Remove prepare_beacon_proposer calls from register_validator. These calls were: heavily duplicated, happening too early (at the start of the slot before the block arrived), expensive on epoch boundaries (forcing an early epoch transition), and unnecessary. They are completely safe to remove because the scheduled proposer preparation routine exists.
  • Instrument get_expected_withdrawals/prepare_beacon_proposer to find more unexpected callers.

Additional Info

K-37

@michaelsproul michaelsproul added the optimization Something to make Lighthouse run more efficiently. label May 18, 2026
@michaelsproul michaelsproul added the v8.3.0 Lighthouse release early Q3 2026 label Jul 1, 2026

@eserilev eserilev left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

prepare_beacon_proposer gets called in proposer_prep_service.rs 4sec before each slot. it also gets called in

  • state_advance_timer.rs once per slot for current slot + 1
  • canonical_head after every fork choice head update

register_validator gets hit once per epoch, so it wasn't a reliable way to ensure prepare_beacon_proposer gets called in the first place.

this change looks good to me and should be a nice optimization esp at epoch boundaries when we are busy doing other epoch transition stuff.

@mergify

mergify Bot commented Jul 2, 2026

Copy link
Copy Markdown

Queued — the merge queue status continues in this comment ↓.

@eserilev eserilev added the ready-for-merge This PR is ready to merge. label Jul 2, 2026
@mergify

mergify Bot commented Jul 2, 2026

Copy link
Copy Markdown

Merge Queue Status

This pull request spent 30 minutes in the queue, including 28 minutes 15 seconds running CI.

Required conditions to merge

@mergify mergify Bot added the queued label Jul 2, 2026
mergify Bot added a commit that referenced this pull request Jul 2, 2026
@mergify mergify Bot merged commit 1587f1e into sigp:unstable Jul 2, 2026
38 checks passed
@mergify mergify Bot removed the queued label Jul 2, 2026
michaelsproul added a commit that referenced this pull request Jul 9, 2026
Tweaking/optimising `get_expected_withdrawals` on the pre-Gloas path, after the removal of some optimisations in:

- #9102


  - Remove `prepare_beacon_proposer` calls from `register_validator`. These calls were: heavily duplicated, happening _too early_ (at the start of the slot before the block arrived), expensive on epoch boundaries (forcing an early epoch transition), _and_ unnecessary. They are completely safe to remove because the scheduled proposer preparation routine exists.
- Instrument `get_expected_withdrawals`/`prepare_beacon_proposer` to find more unexpected callers.


Co-Authored-By: Michael Sproul <michael@sigmaprime.io>

Co-Authored-By: Tan Chee Keong <tanck@sigmaprime.io>

Co-Authored-By: Michael Sproul <michaelsproul@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

HTTP-API optimization Something to make Lighthouse run more efficiently. ready-for-merge This PR is ready to merge. v8.3.0 Lighthouse release early Q3 2026

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants