Benchmarking -- Node 11.0.1
Setup
As part of the release benchmarking cycle, we're comparing benchmarking runs for 2 different versions of cardano-node:
10.7.1- the current Node 10.7 performance baseline, running Protocol Version 10.11.0.1- the latest Node 11.0 release, running Protocol Version 11.
For this benchmark, we're gathering various metrics under 2 different workloads:
- value-only: Each txn consumes 2 inputs and creates 2 outputs, changing the UTxO set. Full blocks (> 80kB) exclusively; high submission pressure (TPS > 10).
- Plutus: Each txn contains a Plutus script exhausting the per-tx execution budget. Small blocks (< 3kB) exclusively; low submission pressure (TPS < 1).
Benchmarking is performed on a cluster of 52 block producing nodes spread across 3 different AWS regions, interconnected using a static, restricted topology. All runs were performed in the Conway era using the in-memory LedgerDB backend.
Observations
These benchmarks are about evaluating specific corner cases in a constrained environment that allows for reliable reproduction of results; they're not trying to directly recreate the operational conditions on Mainnet.
Resource Usage
11.0.1exhibits a small increase in Process CPU usage by 6% under saturation (and by a negligible 0.4% under Plutus) workload.- Additionally, Allocation rate and Minor GCs increase slightly by 6% each under saturation (and a negligible 0.5% under Plutus) workload.
- Observed CPU 85% span durations show a minor fluctuation, with a 1% decrease under saturation, and a 3% increase under Plutus workload.
- Average RAM usage is unchanged, as are Major GC occurrences.
Caveat: Individual metrics can't be evaluated in isolate; the resource usage profile as a whole provides insight into the system's performance and responsiveness.
Anomaly control
- Under saturation workload only, Height & Slot battles on
11.0.1occur roughly 2.5x more frequently; however, the sample size of the benchmark is rather limited, which leads to some variance in that metric.
Forging Loop
- There is a small fluctuation in leadership checks -- starting 1ms later under saturation, and 1ms earlier under Plutus workload.
- Under Plutus workload, the observed minor changes to block production timings are not significant.
- Under saturation workload, there's a minor 1ms improvement in time to Header Announcement, mostly due to a 16% improvement in Ledger Ticking time.
The metric 'Slot start to announced' (see in attachments) is cumulative, and demonstrates how far into a slot the block producing node first announces the new header.
Peer propagation
- Under saturation workload only, Block Fetch duration improves by 8ms or 2%.
- Beyond that, there are no significant changes to block diffusion metrics.
End-to-end propagation
This metric encompasses block diffusion and adoption across specific percentages of the benchmarking cluster, with 0.80 adoption meaning adoption on 80% of all cluster nodes.
- Cluster adoption metrics on
11.0.1exhibit a minor improvement by 1% - 2% across all centiles under saturation workload. - Under Plutus workload, there's a 2% improvement in the 100th centile only.
Conclusion
11.0.1does not contain major component changes compared to10.7.1- hence, the performance characteristics of those Node versions are expectedly close.- This implies, the conclusions from the previous report (
10.7.1vs.10.6.2) largely extend to the11.0.1release. - The small increase in CPU time has to be relativized in that larger persepective: There was a massive 46% - 71% reduction in that metric going from
10.6to10.7.1. - Thus,
11.0.1did not exhibit any performance regressions. - Protocol Version 11 can be run without performance penalties.
- An eye would have to be kept on Height & Slot battles - as stated before often, the benchmarks are designed to greatly amplify trends (and don't provide a large enough sample size to guarantee very high confidence in that particular metric).
Attachments
Full comparison for value-only workload, PDF downloadable here.
Full comparison for Plutus workload, PDF downloadable here.
