Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

The configuration settings below provide a consistent setup for collaboration on QBFT performance work. For ease of collaboration, all performance tests are being done using Caliper (see config below). Performance for a QBFT chain is not strictly "how fast does the chain go" or "what TPS can be achieved". A chain can peak at higher TPS's for a short period of time, but then blow its TX pool due to growth beyond the TX pool size. The results below are for continuous, stable operation. Typically this means no less than 10,000 transactions per caliper run (10k is usually enough to blow the TX pool if you push it too hard).

...

Current best results:

Caliper "open" test : 750-using caliper simple contract:

  •  1 caliper connected to a single node: 750 TPS
  •  2 calipers connected to individual nodes: 950 TPS
  •  2 calipers connected to their own node: 1200 TPS

Caliper ERC20 token transfer test: 500-:

  •  1 caliper connected to a single node: 520 TPS
  •  2 calipers connected to individual nodes: 570 TPS
  •  2 calipers connected to their own node: 645 TPS


Setup:

  • 4 QBFT validators
  • Configuration:
    • Env:

      • BESU_OPTS=-XX:MaxRAMPercentage=70.0

    • CLI:

      • besu --discovery-enabled=false --Xdns-enabled=true --Xdns-update-enabled=true --min-gas-price=0 --data-path=./data --genesis-file=../genesis.json --rpc-http-api=ETH,QBFT,ADMIN,NET --rpc-ws-api=ETH,QBFT,ADMIN,NET --metrics-port=6060 --logging=INFO --rpc-http-enabled=true --rpc-ws-enabled=true --graphql-http-enabled --metrics-enabled=true --remote-connections-limit-enabled=false --tx-pool-disable-locals --tx-pool=sequenced --tx-pool-limit-by-account-percentage=0.55 --rpc-http-max-active-connections=300 --data-storage-format=FOREST --cache-last-blocks=32

    • Besu start logs:
         # Java: -ibmcorporation-eclipseopenj9vm-java-17  
         # Maximum heap size: 7.00 GB           
         # OS: linux-x86_64      
         # glibc: 2.35           
         # jemalloc: 5.2.1-0-gea6b3e973b477b8061e0076bb257dbd7f3faa756    
         # Total memory: 30.83 GB               
         # CPU cores: 8  
    • Pod limits/requests:
      • Limits:
        cpu:     4
        memory:  10Gi
        Requests:
        cpu:     2500m
        memory:  5Gi
  • K8S node size: 
    • m6i.2xlarge 
    • gp3 storage
    • Capacity:

        attachable-volumes-aws-ebs:  39

        cpu:                         8

        ephemeral-storage:           104845292Ki

        hugepages-1Gi:               0

        hugepages-2Mi:               0

        memory:                      32329184Ki

...