This general procedure was used when doing pre-dawn 3.0 performance testing as mentioned in EOSIO/eos#2078.
Network layout: 2 nodes connected to each other on same box, 1 producer, 1 generator
Hardware: AMD Ryzen at 3.9Ghz
Software: Linux 4.15; eosio compiled with Clang6 -O3
Tested on Apr25 2018 on the DAWN-2018-04-23-ALPHA branch
Make an empty directory for our configs & data, mkdir ~/eos.data
, and define a logging.json that doesn't print debug information (which occurs for each txn) to the console
cat << EOF > ~/eos.data/logging.json
{
"includes": [],
"appenders": [{
"name": "consoleout",
"type": "console",
"args": {
"stream": "std_out",
"level_colors": [{
"level": "debug",
"color": "green"
},{
"level": "warn",
"color": "brown"
},{
"level": "error",
"color": "red"
}
]
},
"enabled": true
}
],
"loggers": [{
"name": "default",
"level": "info",
"enabled": true,
"additivity": false,
"appenders": [
"consoleout"
]
}
]
}
EOF
Launch producer
$ ./nodeos -d ~/eos.data/producer_node --config-dir ~/eos.data/producer_node -l ~/eos.data/logging.json --http-server-address "" -p eosio -e
Launch non-producer that will generate transactions
$ ./nodeos -d ~/eos.data/generator_node --config-dir ~/eos.data/generator_node -l ~/eos.data/logging.json --plugin eosio::txn_test_gen_plugin --plugin eosio::wallet_api_plugin --plugin eosio::chain_api_plugin --p2p-peer-address localhost:9876 --p2p-listen-endpoint localhost:5555
Create a wallet on the non-producer and set bios contract
$ ./cleos wallet create
$ ./cleos set contract eosio ~/eos/build.release/contracts/eosio.bios/
Initialize the accounts txn_test_gen_plugin uses
$ curl --data-binary '["eosio", "5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3"]' http://localhost:8888/v1/txn_test_gen/create_test_accounts
Start transaction generation, this will submit 20 transactions evey 20ms (total of 1000TPS)
$ curl --data-binary '["", 20, 20]' http://localhost:8888/v1/txn_test_gen/start_generation
Note the producer console prints
eosio generated block 9b8b851d... #3219 @ 2018-04-25T16:07:47.000 with 500 trxs, lib: 3218
eosio generated block e5b3cd5d... #3220 @ 2018-04-25T16:07:47.500 with 500 trxs, lib: 3219
eosio generated block b243aeaa... #3221 @ 2018-04-25T16:07:48.000 with 500 trxs, lib: 3220
showing 1000TPS. Producer CPU usage is only ~48%
Thank you for video and gist of BlockOne experiment setting. Video and this gist post are very helpful and lead to reproduce 1000 TPS with txn_test_gen plugin on binaryen with full signature checking.
We, EOSeoul, also reproduced sustainable 2000+ TPS with txn_test_gen on wavm with full signature checking. Producer CPU usage with JIT is about 40% on Intel i7-6700 @ 3.4GHz.
We plan to do a lot more tests under more realistic mainnet environment scenarios to share EOSeoul benchmark settings for block producers. When our next report is done, we will post the results again.
Thank you.
EOSeoul
https://steemit.com/@eoseoul