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

use bonsai updater cache to avoid calling database several times for the same account #4897

Merged
merged 11 commits into from Jan 19, 2023

Conversation

matkt
Copy link
Contributor

@matkt matkt commented Jan 9, 2023

Signed-off-by: Karim TAAM karim.t2am@gmail.com
Co-authored-by: Ameziane H ameziane.hamlat@consensys.net

PR description

This PR will use WorldStateBonsaiUpdater accounts' cache each time we try to get an account from storage. Currently, we use this cache only in some code paths.

The profiling before and after this PR shows a real difference in CPU processing, as we use more a Java cache and get less data from RocksDB.

Before this PR

image

After this PR
image

If we zoom in one of the calls, we can see that with this PR, in some cases (and it is the case with this 5 minutes CPU profiling), there is no access to the database to get the account

Before this PR
image

After this PR
image

Block processing time
We notice around 7 % improvement with this PR

image

Fixed Issue(s)

Documentation

  • I thought about documentation and added the doc-change-required label to this PR if
    updates are required.

Changelog

matkt and others added 7 commits January 9, 2023 15:21
…the same value

Signed-off-by: Karim TAAM <karim.t2am@gmail.com>
Signed-off-by: Karim TAAM <karim.t2am@gmail.com>
Signed-off-by: Karim TAAM <karim.t2am@gmail.com>
Signed-off-by: Ameziane H <ameziane.hamlat@consensys.net>
Signed-off-by: Ameziane H <ameziane.hamlat@consensys.net>
Signed-off-by: Ameziane H <ameziane.hamlat@consensys.net>
Signed-off-by: Karim TAAM <karim.t2am@gmail.com>
@matkt matkt force-pushed the avoid-multiple-read-of-account branch from fe9cece to a30d34b Compare January 16, 2023 15:45
Signed-off-by: Karim TAAM <karim.t2am@gmail.com>
@matkt matkt requested a review from ahamlat January 17, 2023 09:35
@ahamlat ahamlat marked this pull request as ready for review January 17, 2023 11:18
Signed-off-by: Ameziane H <ameziane.hamlat@consensys.net>
Copy link
Contributor

@ahamlat ahamlat left a comment

Choose a reason for hiding this comment

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

LGTM.
I added performances metrics that confirms the performance impovement

@matkt matkt merged commit 5627ee0 into hyperledger:main Jan 19, 2023
siladu pushed a commit to jflo/besu that referenced this pull request Feb 7, 2023
…rledger#4897)

Use WorldStateBonsaiUpdater accounts cache each time we try to get an account from storage. Currently, we use this cache only in some code paths.

Signed-off-by: Karim TAAM <karim.t2am@gmail.com>
Co-authored-by: Ameziane H <ameziane.hamlat@consensys.net>
siladu pushed a commit to jflo/besu that referenced this pull request Feb 7, 2023
…rledger#4897)

Use WorldStateBonsaiUpdater accounts cache each time we try to get an account from storage. Currently, we use this cache only in some code paths.

Signed-off-by: Karim TAAM <karim.t2am@gmail.com>
Signed-off-by: Simon Dudley <simon.dudley@consensys.net>
Co-authored-by: Ameziane H <ameziane.hamlat@consensys.net>
@siladu siladu mentioned this pull request Feb 7, 2023
jflo added a commit that referenced this pull request Feb 8, 2023
* Fix transaction pool issue (#4964)
* Cache empty slots (#4874)
* clear after each block and copy during clone
* fix transaction pool issue
* add block replay
* support in-memory snapshots
* Keep Worldstate Storage open for Bonsai archive latest layer (#5039)
* bonsai layered worldstate subscription
* unsubscribe from worldstatestorage on close of BonsaiLayeredWorldState
* minor txpool logging improvements
* Avoid triggering a calculate root hash when empty slot cache is not empty.
* use the updater cache to get an account during block processing (#4897)
* Worldstate-only resync behavior (#4875)
* use debug rpc endpoint to resync worldstate
* Reset transaction pool state every time the initial sync is done
* init heal code



---------

Signed-off-by: Karim TAAM <karim.t2am@gmail.com>
Signed-off-by: garyschulte <garyschulte@gmail.com>
Signed-off-by: Justin Florentine <justin+github@florentine.us>
Signed-off-by: Ameziane H <ameziane.hamlat@consensys.net>
Signed-off-by: ahamlat <ameziane.hamlat@consensys.net>
Signed-off-by: Simon Dudley <simon.dudley@consensys.net>
Co-authored-by: matkt <karim.t2am@gmail.com>
Co-authored-by: garyschulte <garyschulte@gmail.com>
Co-authored-by: ahamlat <ameziane.hamlat@consensys.net>
Co-authored-by: Simon Dudley <simon.dudley@consensys.net>
Co-authored-by: Fabio Di Fabio <fabio.difabio@consensys.net>
elenduuche pushed a commit to elenduuche/besu that referenced this pull request Aug 16, 2023
…rledger#4897)

Use WorldStateBonsaiUpdater accounts cache each time we try to get an account from storage. Currently, we use this cache only in some code paths.

Signed-off-by: Karim TAAM <karim.t2am@gmail.com>
Co-authored-by: Ameziane H <ameziane.hamlat@consensys.net>
eum602 pushed a commit to lacchain/besu that referenced this pull request Nov 3, 2023
…rledger#4897)

Use WorldStateBonsaiUpdater accounts cache each time we try to get an account from storage. Currently, we use this cache only in some code paths.

Signed-off-by: Karim TAAM <karim.t2am@gmail.com>
Co-authored-by: Ameziane H <ameziane.hamlat@consensys.net>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants