Well, with your setup TPS rate depends on your private network configuration.
First of all, check maximum transactions per ledger parameter. If you have local Horizon node up and running, just navigate to https://horizon.stellar.org/ledgers/?order=desc&limit=1 (use your Horizon address instead of
horizon.stellar.org). Locate the
The maximum number of transactions the validators have agreed to process in a given ledger. If more transactions are submitted than this number, the validators will include those with the highest fees.
You can use this value as a factor of parallelism in your loading tests.
I would advise you the following test setup:
- Create and fund
N accounts, where
N is equal to
- Prepare the test code. Use endless loop for this code (or you might want to limit the test to, say, 100 iterations).
- Run the performance loading code in
N parallel threads, with
N accounts. In this way you will fully utilize the throughput of the Network.
- Gather CPU and Memory metrics.
Repeat steps 2-4 with each test case. Test cases:
- Each transaction contains only one simple operation (for example, set random
home_domain for the account).
- Each transaction includes
100 operations (that's a hard-coded limit). For example, you can send 0.000001 XLM to another account 100 times for each transactions.
- The same as previous, but experiment with different operation types. For example,
MANAGE_OFFER operations potentially could be more resource consuming than
Once you gathered all required metrics for this setup, initialize a soft fork to increase
max_tx_set_size parameter (you can try 200, 500, 1000, 10000). Repeat the test with upgraded Network. Do not forget to create more test accounts to follow the N_test_accounts=max_tx_set_size and set the level of parallelism accordingly.
One more thing. Tests may be inaccurate with all test nodes located in one datacenter. Try to deploy the globally distributed configuration. For example, US - Germany - Japan.