8000 Benchmark current storage improvements · Issue #1044 · cometbft/cometbft · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Benchmark current storage improvements #1044

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

Closed
6 tasks done
Tracked by #44
jmalicevic opened this issue Jun 28, 2023 · 0 comments · Fixed by #2596
Closed
6 tasks done
Tracked by #44

Benchmark current storage improvements #1044

jmalicevic opened this issue Jun 28, 2023 · 0 comments · Fixed by #2596
Assignees
Labels
P:storage-optimization Priority: Give operators greater control over storage and storage optimization
Milestone

Comments

@jmalicevic
Copy link
Contributor
jmalicevic commented Jun 28, 2023

We need to create a testing infrastructure focused on storage in order to test and validate the storage optimizations and changes we plan to implement based on the outcome of the issues where we define metrics and understand workloads (#46), create a baseline (#67), and evaluate database engines (#64).

In order to create this testing environment, the following tasks should be performed:

  • Identify a workload that generates enough data on storage for meaningful testing (at least 10s of GB) on a single machine.
  • Containerized (Docker) environment for testing that can be run locally and in a CI environment
  • Support for multiple ComeBFT binaries compiled with all the supported databases (e.g. LevelDB, RocksDB)
  • Allow testing for multiple database configuration options
  • Generate testing output data that can be used to generate reports that can display improvements (or not) against a baseline or any other particular branch/commit.

17.01.2024.

The scope of the issue has been changed and here is the plan on what will be completed during Q1 2024.

  • Identify a workload that generates enough data for meaningful storage.
  • Record the size of the databases during the experiment

Definition of Done (DoD):

Deprioritized - left for later (open issue to continue tracking if needed):

  • Any end user (e.g. developer) can run this testing infrastructure locally without too much local configuration and can generate testing data for validating the database optimizations during the development process
  • The storage testing e2e runs in a CI infrastructure (Github actions) (optional, it is not yet well defined and not clear what it would contain).
  • Generated reports that can be shared with the community that outline the improvements accomplished as a result of optimizations and new implementations
@jmalicevic jmalicevic mentioned this issue Jun 28, 2023
21 tasks
@jmalicevic jmalicevic added the P:storage-optimization Priority: Give operators greater control over storage and storage optimization label Jun 28, 2023
@jmalicevic jmalicevic added this to the 2023-Q3 milestone Jun 28, 2023
@adizere adizere modified the milestones: 2023-Q3, 2024-Q1 Jan 10, 2024
@adizere adizere added this to CometBFT Jan 11, 2024
@github-project-automation github-project-automation bot moved this to Todo in CometBFT Jan 11, 2024
@adizere adizere changed the title Create a testing environment focused on storage Benchmark current storage improvements Jan 11, 2024
@jmalicevic jmalicevic moved this from Todo to In Progress in CometBFT Jan 17, 2024
github-merge-queue bot pushed a commit that referenced this issue Mar 15, 2024
[Rendered](https://github.com/cometbft/cometbft/tree/jasmina/storage_report/docs/references/storage)

Closes #1044 

<!--

Please add a reference to the issue that this PR addresses and indicate
which
files are most critical to review. If it fully addresses a particular
issue,
please include "Closes #XXX" (where "XXX" is the issue number).

If this PR is non-trivial/large/complex, please ensure that you have
either
created an issue that the team's had a chance to respond to, or had some
discussion with the team prior to submitting substantial pull requests.
The team
can be reached via GitHub Discussions or the Cosmos Network Discord
server in
the #cometbft channel. GitHub Discussions is preferred over Discord as
it
allows us to keep track of conversations topically.
https://github.com/cometbft/cometbft/discussions

If the work in this PR is not aligned with the team's current
priorities, please
be advised that it may take some time before it is merged - especially
if it has
not yet been discussed with the team.

See the project board for the team's current priorities:
https://github.com/orgs/cometbft/projects/1

-->

---

#### PR checklist

- [x] Tests written/updated
- [x] Changelog entry added in `.changelog` (we use
[unclog](https://github.com/informalsystems/unclog) to manage our
changelog)
- [x] Updated relevant documentation (`docs/` or `spec/`) and code
comments
- [x] Title follows the [Conventional
Commits](https://www.conventionalcommits.org/en/v1.0.0/) spec

---------

Co-authored-by: Adi Seredinschi <a@seredinschi.net>
Co-authored-by: Adi Seredinschi <adizere@gmail.com>
@github-project-automation github-project-automation bot moved this from In Progress to Done in CometBFT Mar 15, 2024
mergify bot pushed a commit that referenced this issue Mar 15, 2024
[Rendered](https://github.com/cometbft/cometbft/tree/jasmina/storage_report/docs/references/storage)

Closes #1044

<!--

Please add a reference to the issue that this PR addresses and indicate
which
files are most critical to review. If it fully addresses a particular
issue,
please include "Closes #XXX" (where "XXX" is the issue number).

If this PR is non-trivial/large/complex, please ensure that you have
either
created an issue that the team's had a chance to respond to, or had some
discussion with the team prior to submitting substantial pull requests.
The team
can be reached via GitHub Discussions or the Cosmos Network Discord
server in
the #cometbft channel. GitHub Discussions is preferred over Discord as
it
allows us to keep track of conversations topically.
https://github.com/cometbft/cometbft/discussions

If the work in this PR is not aligned with the team's current
priorities, please
be advised that it may take some time before it is merged - especially
if it has
not yet been discussed with the team.

See the project board for the team's current priorities:
https://github.com/orgs/cometbft/projects/1

-->

---

#### PR checklist

- [x] Tests written/updated
- [x] Changelog entry added in `.changelog` (we use
[unclog](https://github.com/informalsystems/unclog) to manage our
changelog)
- [x] Updated relevant documentation (`docs/` or `spec/`) and code
comments
- [x] Title follows the [Conventional
Commits](https://www.conventionalcommits.org/en/v1.0.0/) spec

---------

Co-authored-by: Adi Seredinschi <a@seredinschi.net>
Co-authored-by: Adi Seredinschi <adizere@gmail.com>
(cherry picked from commit 4fc0288)
github-merge-queue bot pushed a commit that referenced this issue Mar 15, 2024
Closes #2057 , #1041

If we keep the current design, we are also closing
#1822

Supersedes #1764 

This PR implements support for an additional DB key representation. The
different key layout sorts the entries by height instead of
lexicographically as in the current version of Comet.

When starting this work, we hoped that the new layout would
significantly outperform the current layout. As we do not have
sufficient real world evidence for this, this PR introduces a DB key
layout interface that would allow Comet to easily integrate a more
preferential key representation without major breaking changes.

The layout using ordercode is introduced as experimental, allowing users
to easily experiment with this.

This layout was thoroughly tested as part of #1044 and all results will
be in a report closing the mentioned PR.
 
Locally tested:
- Empty stores get initialized with v2
- Existing stores without a version key get initialized to v1 and the
key is set
- When a nodes' stores are deleted and we boot it up again that node
uses v2 while the rest of the nodes use v1
<!--

Please add a reference to the issue that this PR addresses and indicate
which
files are most critical to review. If it fully addresses a particular
issue,
please include "Closes #XXX" (where "XXX" is the issue number).

If this PR is non-trivial/large/complex, please ensure that you have
either
created an issue that the team's had a chance to respond to, or had some
discussion with the team prior to submitting substantial pull requests.
The team
can be reached via GitHub Discussions or the Cosmos Network Discord
server in
the #cometbft channel. GitHub Discussions is preferred over Discord as
it
allows us to keep track of conversations topically.
https://github.com/cometbft/cometbft/discussions

If the work in this PR is not aligned with the team's current
priorities, please
be advised that it may take some time before it is merged - especially
if it has
not yet been discussed with the team.

See the project board for the team's current priorities:
https://github.com/orgs/cometbft/projects/1

-->

---

#### PR checklist

- [x] Tests written/updated
- [x] Changelog entry added in `.changelog` (we use
[unclog](https://github.com/informalsystems/unclog) to manage our
changelog)
- [ ] Updated relevant documentation (`docs/` or `spec/`) and code
comments
- [x] Title follows the [Conventional
Commits](https://www.conventionalcommits.org/en/v1.0.0/) spec

---------

Co-authored-by: Anton Kaliaev <anton.kalyaev@gmail.com>
mergify bot pushed a commit that referenced this issue Mar 18, 2024
Closes #2057 , #1041

If we keep the current design, we are also closing
#1822

Supersedes #1764

This PR implements support for an additional DB key representation. The
different key layout sorts the entries by height instead of
lexicographically as in the current version of Comet.

When starting this work, we hoped that the new layout would
significantly outperform the current layout. As we do not have
sufficient real world evidence for this, this PR introduces a DB key
layout interface that would allow Comet to easily integrate a more
preferential key representation without major breaking changes.

The layout using ordercode is introduced as experimental, allowing users
to easily experiment with this.

This layout was thoroughly tested as part of #1044 and all results will
be in a report closing the mentioned PR.

Locally tested:
- Empty stores get initialized with v2
- Existing stores without a version key get initialized to v1 and the
key is set
- When a nodes' stores are deleted and we boot it up again that node
uses v2 while the rest of the nodes use v1
<!--

Please add a reference to the issue that this PR addresses and indicate
which
files are most critical to review. If it fully addresses a particular
issue,
please include "Closes #XXX" (where "XXX" is the issue number).

If this PR is non-trivial/large/complex, please ensure that you have
either
created an issue that the team's had a chance to respond to, or had some
discussion with the team prior to submitting substantial pull requests.
8000

The team
can be reached via GitHub Discussions or the Cosmos Network Discord
server in
the #cometbft channel. GitHub Discussions is preferred over Discord as
it
allows us to keep track of conversations topically.
https://github.com/cometbft/cometbft/discussions

If the work in this PR is not aligned with the team's current
priorities, please
be advised that it may take some time before it is merged - especially
if it has
not yet been discussed with the team.

See the project board for the team's current priorities:
https://github.com/orgs/cometbft/projects/1

-->

---

#### PR checklist

- [x] Tests written/updated
- [x] Changelog entry added in `.changelog` (we use
[unclog](https://github.com/informalsystems/unclog) to manage our
changelog)
- [ ] Updated relevant documentation (`docs/` or `spec/`) and code
comments
- [x] Title follows the [Conventional
Commits](https://www.conventionalcommits.org/en/v1.0.0/) spec

---------

Co-authored-by: Anton Kaliaev <anton.kalyaev@gmail.com>
(cherry picked from commit 55638e8)
melekes pushed a commit that referenced this issue Mar 18, 2024
Closes #2057 , #1041

If we keep the current design, we are also closing
#1822

Supersedes #1764 

This PR implements support for an additional DB key representation. The
different key layout sorts the entries by height instead of
lexicographically as in the current version of Comet.

When starting this work, we hoped that the new layout would
significantly outperform the current layout. As we do not have
sufficient real world evidence for this, this PR introduces a DB key
layout interface that would allow Comet to easily integrate a more
preferential key representation without major breaking changes.

The layout using ordercode is introduced as experimental, allowing users
to easily experiment with this.

This layout was thoroughly tested as part of #1044 and all results will
be in a report closing the mentioned PR.
 
Locally tested:
- Empty stores get initialized with v2
- Existing stores without a version key get initialized to v1 and the
key is set
- When a nodes' stores are deleted and we boot it up again that node
uses v2 while the rest of the nodes use v1


---

#### PR checklist

- [x] Tests written/updated
- [x] Changelog entry added in `.changelog` (we use
[unclog](https://github.com/informalsystems/unclog) to manage our
changelog)
- [ ] Updated relevant documentation (`docs/` or `spec/`) and code
comments
- [x] Title follows the [Conventional
Commits](https://www.conventionalcommits.org/en/v1.0.0/) spec
<hr>This is an automatic backport of pull request #2327 done by
[Mergify](https://mergify.com).

Co-authored-by: Jasmina Malicevic <jasmina.dustinac@gmail.com>
melekes added a commit that referenced this issue Mar 19, 2024
[Rendered](https://github.com/cometbft/cometbft/tree/jasmina/storage_report/docs/references/storage)

Closes #1044 



---

#### PR checklist

- [x] Tests written/updated
- [x] Changelog entry added in `.changelog` (we use
[unclog](https://github.com/informalsystems/unclog) to manage our
changelog)
- [x] Updated relevant documentation (`docs/` or `spec/`) and code
comments
- [x] Title follows the [Conventional
Commits](https://www.conventionalcommits.org/en/v1.0.0/) spec
<hr>This is an automatic backport of pull request #2596 done by
[Mergify](https://mergify.com).

Co-authored-by: Jasmina Malicevic <jasmina.dustinac@gmail.com>
Co-authored-by: Anton Kaliaev <anton.kalyaev@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
P:storage-optimization Priority: Give operators greater control over storage and storage optimization
Projects
No open projects
Status: Done
Status: Todo
Development

Successfully merging a pull request may close this issue.

2 participants
0