Release 1.2.0

Purpose: I that section you can find information about executed performance test runs for Iroha, all parameters and results.

Parameters

Network configuration


Iroha nodesVirtual machinesIroha memoryPostgres memoryStorage, per node
Configuration A5010 (5 nodes per machine)5 Gb1 GbSSD, 100Gb
Configuration B42 (2 nodes per machine)5 Gb1 GbSSD, 100Gb
Configuration C77 (1 node per machine)15 Gb1 GbSSD, 100Gb

Iroha configurations


Max proposal sizeMax rounds delayMST enabledMST expiration timeProposal delayStale stream max roundsVote delayBlock store allocationID
Iroha config A501000true14405000605000FilesystemSN
Iroha config B1000500true144010001000001000FilesystemBK
Iroha config C501000true14405000605000DatabaseSNDB

Transaction configuration

  • Ordered batch 1 – create an account, add tokens and transfer them
    • CreateDomain
    • CreateAsset
    • CreateAccount
    • AddAssetQuantity
    • TransferAsset
  • Ordered batch 2 – grant permissions to set account details and set some data 
    • GrantPermission
    • SetAccountDetail
  • Ordered batch 3 – set account details
    • SetAccountDetail
  • Ordered batch 4 – create MST account, add signatory and mint some tokens
    • CreateAccount
    • SetAccountQuorum
    • AddSignatory
    • AddAssetQuantity
  • Ordered batch 5 - send MST transfer (from an account created by ordered batch 4)
    • TransferAsset 
  • Ordered batch 6 - get pending transactions (created by ordered batch 4) and confirm them
    • GetPendingTransactions

Test types

  1. Soak testing: running Iroha network with 80% of peak load over a long time period of time (more than 24 hours) – to emulate behaviour under normal load on an extended period of time
  2. Spike testing: running Iroha network with 100% of peak load over a shorter time period (around 1 hour) – to emulate behaviour at peaks of request during "rush hours"

Metrics

During performance testing, our goal is to understand non-functional characteristics of running Iroha network in terms of speed and efficiency.

For a clear understanding of such characteristics, we are going to collect the following metrics:

  • Step 1. Obtaining information about peak load that Iroha network can handle:
    • Define the highest amount of transactions for a peak load of Iroha network during one hour (on the peak load the network should work stable, without significant deterioration of other characteristics: TPS, memory consumption, transaction finalization time, etc.). 
  • Step 2. Collecting data about Iroha characteristics (for each test type)
    • The maximum amount of successfully finalized transactions per second (TPS)
    • Average time of transaction finalization (from the moment when the transaction reached the Torii port, until the moment when the transaction is marked as finalized and sent to the subscribers via opened streams)
    • Average memory consumption by Iroha nodes (first 10% of time interval should be omitted to minimize the influence of "heating up" stage)
    • Average memory consumption by Postgres storage (first 10% of time interval should be omitted to minimize the influence of "heating up" stage)
    • Average CPU utilization by each node (first 10% of time interval should be omitted to minimize the influence of "heating up" stage)
    • Amount of errors from the Iroha network
    • Amount of not finalized or missed transactions

Sources

  1. https://theqaconnection.com/2020/10/14/basics-of-performance-testing/