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

Performance testing of PoA networks #11

Open
rstormsf opened this issue Mar 26, 2018 · 4 comments
Open

Performance testing of PoA networks #11

rstormsf opened this issue Mar 26, 2018 · 4 comments

Comments

@rstormsf
Copy link

rstormsf commented Mar 26, 2018

Abstract

In searching of a perfect PoA setup, we, as software engineers, would need to benchmark different configurations of AuRa setup. One of the few examples would be to find the maximum number of validators under which the AuRa can still perform well. Another example, is decreasing block times to find the optimal balance between a secure network and a fast network.

Rationale

Cases that we need to perform the tests:

  • Deploy and install a PoA network to find a maximum boundary number of validators managed by consensus smart contracts having the same 5 second block times
  • Find the minimum possible block time that AuRa can provide, preserving the same security rules(double spending, time sync attack, etc..)

Specification

As a result of such tests, the community would need to look at a detailed report with different configuration tests and benchmarks.

Implementation

Only one Parity node is allowed per cloud instance node.

Tests with heavy loads of DDoS transactions needs to be implemented and executed against this network.

@phahulin
Copy link
Contributor

Few more things

  • max possible block gas limit => max number of txs/block that nodes will still be able to process
  • maybe simulate network issues (what will happen in a network with many validators if new blocks are not propagating fast enough)
  • for AuRa maybe test time-sync issues

Network tests need to be performed for different consensus algorithms, if they are available.

Also I think it's important that these tests be performed while network is under constant load of newly established & dropped external connections. As an illustration, on sokol, there are approx. 5-10 new connections to a node per second. Most of them are "spam" (incorrect genesis, incorrect clients like geth, mist, ..), so they are dropped quickly. However, I think they influence stability of connection between real nodes (reason have to use reserved_peers over bootnodes)

@vbaranov
Copy link

Also, we have a helpful tool for deployment of POA Network: https://github.com/poanetwork/poa-test-setup. It might be helpful, for those, who will be making performance testing. POA Network can be deployed with a couple of NPM scripts on a local machine. Basic scenarios of deployment are listed in README.

@igorbarinov
Copy link
Member

The configurations for performance tests:

  • validators required [15, 25], later will have 100 validators
  • block time [5s, 3], later will have 1s
  • GasLimit [8m, 80m]
  • engine [aura, tendermint]

Load profile:

  • tx load [acc2acc, contract+tx2contract+acc2acc]

@rstormsf
Copy link
Author

rstormsf commented Apr 9, 2018

First part would be write efficient script to spam a network with thousands tx per second.
Things to consider:

  • tx nonce for every account, that means you have to send 10,000 tx from all 10,000 different accounts
  • efficient language (rust, elixir, etc.)
  • efficient db storage that can support concurrent db read/write

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

No branches or pull requests

4 participants