Skip to content
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

core/state: move metrics out of state objects #29665

Merged
merged 1 commit into from Apr 26, 2024

Conversation

karalabe
Copy link
Member

@karalabe karalabe commented Apr 26, 2024

This PR is more of a prep thing and maaaaybe (?) a very light performance optimization.

Currently we're trying to measure things very accurately when it comes to state object updates, hashes and commits. The only problem is that there are a lot of these, and many will have insignificant runtimes (maybe update 1 slot?). The overhead of retriving system timers and updating metrics might be more than teh actual computation of 1 slot. Due to that, this PR moves the metering a bit to the outside. It does mean we lose the ability to differentiate between storage update and storage hash, but I doubt it's really relevant given that we can only change so many slots in a block.

On the other hand, moving these metrics out does a few useful cleanups: state objects don't start poking at statedb fields directly. It was a fairly bad design (yeah, there's plenty left). The other cleanup is that if we want to make any of the above operations (update, hash, commit) concurrent across state objects, then measuring them individually becomes noise; we want the real time across all of them, not the sum of times elapsed concurrently. This PR also does the prep work for that.

Copy link
Contributor

@holiman holiman left a comment

Choose a reason for hiding this comment

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

LGTM

@karalabe karalabe merged commit 4253030 into ethereum:master Apr 26, 2024
3 checks passed
@karalabe
Copy link
Member Author

Ran a benchmark for 1+ hours, seemed mostly the same, ever so slight difference which is probably due to machine specs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants