-
Notifications
You must be signed in to change notification settings - Fork 1k
statement-store performance benchmarks #9763
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
base: master
Are you sure you want to change the base?
Conversation
1e1b037 to
aa77e39
Compare
8c809f4 to
ad32b75
Compare
Update Update bench
ad32b75 to
d6438c6
Compare
|
All GitHub workflows were cancelled due to failure one of the required jobs. |
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.
The tests are fine, but if gossiping is the bottleneck we should also have some results where we don't run all the nodes on the same machine.
| } | ||
|
|
||
| async fn wait_for_retry(&mut self) -> Result<(), anyhow::Error> { | ||
| if self.retry_count >= MAX_RETRIES { |
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.
Why is this needed ?
| env_logger::Env::default().filter_or(env_logger::DEFAULT_FILTER_ENV, "info"), | ||
| ); | ||
|
|
||
| let collator_names = ["alice", "bob", "charlie", "dave", "eve", "ferdie"]; |
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.
I do think that for a high number of collators, the performance starts to get negatively impacted by the fact that you are running on the same machine so many node.
Another thing that probably impacts things is that gossip times will be probably smaller when you have nodes running on the same machine.
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.
Why can't we use an existing spec how is this different ?
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.
if this is the binary George sent, I think we can just modify people-rococo to just have validate-statement implementation as needed for the benchmark, anyway rococo is not live AFAIK.
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.
Got it, so we need it because it is a rococo with statement-store pallet, let's just document the somewhere, so we don't forget what is in there.
| const TIMEOUT_MS: u64 = 3000; | ||
|
|
||
| #[tokio::test(flavor = "multi_thread")] | ||
| async fn statement_store_one_node_bench() -> Result<(), anyhow::Error> { |
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.
Let's add some documentation to each of the tests what scenario is running and what is outputting.
Description
Adds benchmarks to measure the performance of the statement-store:
Results
Key improvements made to improve the performance:
Hardware
All benchmarks were run on a MacBook Pro M2
1. Message Exchange Scenario
Test Configuration
Network Topologies
We tested two distribution patterns:
Participant Flow
Results
Observations
2. Memory Stress Test Scenario
Test Configuration
We prepared one more scenario to check how much memory nodes use with a full store after we increased the limits. To maximize memory usage for index usage, we submitted statements with all unique topics; other fields (e.g., proofs) were not used.
Test Flow
Results
During the tests, each node used up to 4.5GB of memory.