-
Notifications
You must be signed in to change notification settings - Fork 769
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
Benchmarking end to end transaction throughput performance #396
Comments
@imlvts awesome write up! The original benchmark test we did was about 1.5 years ago, and done by @NikVolf. I also am not 100% positive of exactly the setup that was used, but I don't think you were that far off. One thing that I don't see you have noted was that this benchmarking network used a 3 second blocktime versus the 6 second block time you find on average across Substrate and Polkadot. There also was some tuning done to the transaction pool, things like increasing the memory allocated to the tx pool or something like that, since we also saw that without it, tx throughput started going down as we got past a "sweet spot". Also, did you run your throughput test using wasm or native execution?
What does this mean? Are you saying that a client is simply able to sign up to 3000 tranactions per second? Not exactly sure how this is relevant? We recently hired @ggwpez into Parity, with the singular focus on benchmarking and optimization within FRAME and runtime development. We too were about to go through the process of rebenchmarking all of Substrate, and do so in a reproducible well documented way, so your message comes at perfect timing. |
Also, @imlvts what team do you work on, or what is prompting you to look at Substrate in this way? Would be very happy to include you into our efforts here more closely if you are open to that. |
@shawntabrizi thank you for your swift response.
Not on the target machines. I'll be sure to do that and get back with the results.
This means that the client was able to send 3000 extrinsics per second to multiple nodes in total over HTTP RPC. Retrospectively, it may be more efficient to use P2P protocol instead. This is relevant because was a bottleneck at some point. |
If you have a way to reproduce this easily, please share your scripts. Then I can take a look and fix this. |
Is there a sensible strategy for measuring how much the memepool consumes? |
Consumes what? |
Benchmarking end to end transaction throughput performance
It would be nice for substrate to have a setup/demonstration/documentation for of E2E benchmarks.
There are plenty of benchmarks in the codebase and a runtime benchmarking framework,
however we were not able to find E2E benchmarks demonstrating throughput of the network.
Furthermore, our benchmarks show peak throughput at around 800 transactions per second,
which is a bit lower than claimed 1000 TPS.
We would like to know where the discrepancy comes from, how to achieve higher throughput
and learn how to analyze Substrate's performance.
Setup
Since we haven't been able to find the setup for E2E benchmarks, we've implemented the following setup:
* t3.xlarge were used because they supposedly meet the server requirements
Possible limits
Substrate has built-in limits that we suppose ensure a smooth operation of substrate nodes.
However, to find the limits we would like to disable those limits.
We have found the following limits:
They were increased with this change to substrate-node-template.
Observations
We would like to know if we're missing anything from this approach, whether these results are reasonable and if you have any suggestions on how to evaluate end to end substrate performance.
The text was updated successfully, but these errors were encountered: