Skip to content
This repository has been archived by the owner on Jul 11, 2022. It is now read-only.

Latest commit

 

History

History
560 lines (507 loc) · 19.6 KB

File metadata and controls

560 lines (507 loc) · 19.6 KB
id title description keywords
test-2022-07-04
July 4th 2022
Performance test from July 4th.
docs
polygon
edge
performance
test
EOA
nodes
ERC20
ERC721

Summary

This test was done to measure the SC ERC20 token transfers, SC ERC721 token minting and EOA to EOA transactions functionality with heavy loads and speed of the transactions on the nodes with higher hardware resources.

The goal was to check if everything is working as expected during heavy loads. That was also the reason we’ve introduced gas metrics in the loadbot output, which show us if the blocks are filled with transactions properly.

All transactions were sent to the single node via GRPC API, and the receipts were received via JSON-RPC API. After all transactions were done, gas information was read from each block, using the eth_getBlockByNumber JSON-RPC method.

Our aim was to strive to reach a maximum possible TPS on the hardware resources available. To acheive this, we've modified the block gas limit and block time parameters, to give us the best possible tps results and keep the system integrity and stability.

:::info Production Environments When configuring a production environment, you need to be carefull if you're trying to acheive high performance of the chain. If block gas limit parameter is set to a high value, block time is set to 1s, and there is a high transaction load on a single node, that node will consume a lot ( if not all available ) RAM and can cause server crash. Use the loadbot to test everything thoroughly, monitor the system resource utilization and set your configuration parameters accordingly. :::

Results of EOA to EOA transfers

Metric Value
Transaction type EOA to EOA
Transactions per second 1428
Transactions failed 0
Transactions succeeded 30000
Total blocks used 15
Total run time 21.374620s

Results of ERC20 token transfers

Metric Value
Transaction type ERC20
Transactions per second 1111
Transactions failed 0
Transactions succeeded 50000
Total blocks used 38
ERC20 transaction run time 45.906450s
SC Deploy time 2.006580s

Results of ERC721 token minting

Metric Value
Transaction type ERC721
Transactions per second 714
Transactions failed 0
Transactions succeeded 30000
Total blocks used 39
ERC721 transaction run time 42.864140s
SC Deploy time 2.005500s

Environment EOA to EOA

Host Configuration
Cloud provider AWS EC2
Instance size c6a.48xlarge
Networking private subnet
Operating system Linux Ubuntu 20.04 LTS - Focal Fossa
File descriptor limit 65535
Max user processes 65535

Blockchain Configuration
Polygon Edge version Release v0.4.1
Validator nodes 4
Non-validator nodes 0
Consensus IBFT PoA
Block time 1s
Block gas limit 70778880
Max slots 276480
Average block utilization 59.34%

Loadbot Configuration
Total Transactions 30000
Transactions sent per second 1428
Type of transactions EOA to EOA transfers

Loadbot log
[COUNT DATA]
Transactions submitted = 30000
Transactions failed    = 0

[APPROXIMATE TPS]
Approximate number of transactions per second = 1428

[TURN AROUND DATA]
Average transaction turn around = 4.394900s
Fastest transaction turn around = 1.133980s
Slowest transaction turn around = 7.258690s
Total loadbot execution time    = 21.374620s

[BLOCK DATA]
Blocks required = 15

Block #110 = 1268 txns (26628000 gasUsed / 70778880 gasLimit) utilization = 37.62%
Block #111 = 2744 txns (57624000 gasUsed / 70778880 gasLimit) utilization = 81.41%
Block #112 = 2333 txns (48993000 gasUsed / 70778880 gasLimit) utilization = 69.22%
Block #113 = 1326 txns (27846000 gasUsed / 70778880 gasLimit) utilization = 39.34%
Block #114 = 1852 txns (38892000 gasUsed / 70778880 gasLimit) utilization = 54.95%
Block #115 = 2270 txns (47670000 gasUsed / 70778880 gasLimit) utilization = 67.35%
Block #116 = 559 txns (11739000 gasUsed / 70778880 gasLimit) utilization  = 16.59%
Block #117 = 3370 txns (70770000 gasUsed / 70778880 gasLimit) utilization = 99.99%
Block #118 = 910 txns (19110000 gasUsed / 70778880 gasLimit) utilization  = 27.00%
Block #119 = 3132 txns (65772000 gasUsed / 70778880 gasLimit) utilization = 92.93%
Block #120 = 1207 txns (25347000 gasUsed / 70778880 gasLimit) utilization = 35.81%
Block #121 = 3370 txns (70770000 gasUsed / 70778880 gasLimit) utilization = 99.99%
Block #122 = 2734 txns (57414000 gasUsed / 70778880 gasLimit) utilization = 81.12%
Block #123 = 2737 txns (57477000 gasUsed / 70778880 gasLimit) utilization = 81.21%
Block #124 = 188 txns (3948000 gasUsed / 70778880 gasLimit) utilization   = 5.58%

[AVERAGE BLOCK UTILIZATION]
Average utilization across all blocks = 59.34%

Environment ERC20

Host Configuration
Cloud provider AWS EC2
Instance size c6a.48xlarge
Networking private subnet
Operating system Linux Ubuntu 20.04 LTS - Focal Fossa
File descriptor limit 65535
Max user processes 65535

Blockchain Configuration
Polygon Edge version Release v0.4.1
Validator nodes 4
Non-validator nodes 0
Consensus IBFT PoA
Block time 1s
Block gas limit 47185920
Max slots 184320
Average block utilization 81.29%

Loadbot Configuration
Total Transactions 50000
Transactions sent per second 1111
Type of transactions ERC20 to ERC20 transfers

Loadbot log
[COUNT DATA]
Transactions submitted = 50000
Transactions failed    = 0

[APPROXIMATE TPS]
Approximate number of transactions per second = 1111

[CONTRACT DEPLOYMENT INFO]
Contract address     = 0x33123b7a4420798b1D208ABBac657B7b103edbD9
Total execution time = 2.006580s

[CONTRACT DEPLOYMENT BLOCK DATA]
Blocks required = 1
Block #174 = 1 txns (1055757 gasUsed / 47185920 gasLimit) utilization = 2.24%

[TURN AROUND DATA]
Average transaction turn around = 8.856780s
Fastest transaction turn around = 2.006200s
Slowest transaction turn around = 15.977210s
Total loadbot execution time    = 45.906450s

[BLOCK DATA]
Blocks required = 38

Block #176 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #177 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #178 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #179 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #180 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #181 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #182 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #183 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #184 = 688 txns (20055200 gasUsed / 47185920 gasLimit) utilization  = 42.50%
Block #185 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #186 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #187 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #188 = 317 txns (9240550 gasUsed / 47185920 gasLimit) utilization   = 19.58%
Block #189 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #190 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #191 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #192 = 89 txns (2594350 gasUsed / 47185920 gasLimit) utilization    = 5.50%
Block #193 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #194 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #195 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #196 = 795 txns (23174250 gasUsed / 47185920 gasLimit) utilization  = 49.11%
Block #197 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #198 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #199 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #200 = 594 txns (17315100 gasUsed / 47185920 gasLimit) utilization  = 36.70%
Block #201 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #202 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #203 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #204 = 208 txns (6063200 gasUsed / 47185920 gasLimit) utilization   = 12.85%
Block #205 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #206 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #207 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #208 = 30 txns (874500 gasUsed / 47185920 gasLimit) utilization     = 1.85%
Block #209 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #210 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #211 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #212 = 177 txns (5159550 gasUsed / 47185920 gasLimit) utilization   = 10.93%
Block #213 = 180 txns (5247000 gasUsed / 47185920 gasLimit) utilization   = 11.12%

[AVERAGE BLOCK UTILIZATION]
Average utilization across all blocks = 81.29%

Environment ERC721

Host Configuration
Cloud provider AWS EC2
Instance size c6a.48xlarge
Networking private subnet
Operating system Linux Ubuntu 20.04 LTS - Focal Fossa
File descriptor limit 65535
Max user processes 65535

Blockchain Configuration
Polygon Edge version Release v0.4.1
Validator nodes 4
Non-validator nodes 0
Consensus IBFT PoA
Block time 1s
Block gas limit 94371840
Max slots 1000000
Average block utilization 93.88%

Loadbot Configuration
Total Transactions 30000
Transactions sent per second 714
Type of transactions ERC721 token mint

Loadbot log
[COUNT DATA]
Transactions submitted = 30000
Transactions failed    = 0

[APPROXIMATE TPS]
Approximate number of transactions per second = 714

[CONTRACT DEPLOYMENT INFO]
Contract address     = 0x4Ceff7F2f9fC9f150a42AfcabceEDABeB723E56f
Total execution time = 2.005500s

[CONTRACT DEPLOYMENT BLOCK DATA]
Blocks required = 1
Block #59 = 1 txns (2528772 gasUsed / 94371840 gasLimit) utilization = 2.68%

[TURN AROUND DATA]
Average transaction turn around = 13.191620s
Fastest transaction turn around = 2.034710s
Slowest transaction turn around = 23.686180s
Total loadbot execution time    = 42.864140s

[BLOCK DATA]
Blocks required = 39

Block #61 = 818 txns (94237644 gasUsed / 94371840 gasLimit) utilization = 99.86%
Block #62 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #63 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #64 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #65 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #66 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #67 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #68 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #69 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #70 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #71 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #72 = 510 txns (58738980 gasUsed / 94371840 gasLimit) utilization = 62.24%
Block #73 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #74 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #75 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #76 = 674 txns (77624892 gasUsed / 94371840 gasLimit) utilization = 82.25%
Block #77 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #78 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #79 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #80 = 179 txns (20621682 gasUsed / 94371840 gasLimit) utilization = 21.85%
Block #81 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #82 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #83 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #84 = 231 txns (26609898 gasUsed / 94371840 gasLimit) utilization = 28.20%
Block #85 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #86 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #87 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #88 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #89 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #90 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #91 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #92 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #93 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #94 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #95 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #96 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #97 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #98 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #99 = 561 txns (64612038 gasUsed / 94371840 gasLimit) utilization = 68.47%

[AVERAGE BLOCK UTILIZATION]
Average utilization across all blocks = 93.88%