|
| 1 | +--- |
| 2 | +title: Benchmarking -- Node 9.0.0 |
| 3 | +slug: 2024-07-performance-9.0.0 |
| 4 | +authors: mgmeier |
| 5 | +tags: [benchmarking-reports] |
| 6 | +hide_table_of_contents: false |
| 7 | +--- |
| 8 | + |
| 9 | +## Setup |
| 10 | + |
| 11 | +As part of the release benchmarking cycle, we're comparing benchmarking runs for 2 different versions of `cardano-node`: |
| 12 | +* `8.12.1` - baseline from a previous mainnet release |
| 13 | +* `9.0.0` - the current mainnet release |
| 14 | + |
| 15 | +For each version, we're gathering various metrics under 2 different workloads: |
| 16 | +1. _value-only_: Each transaction consumes 2 inputs and creates 2 outputs, changing the UTxO set. This workload produces full blocks (> 80kB) exclusively. |
| 17 | +2. _Plutus_: Each transaction contains a Plutus script exhausting the per-tx execution budget. This workload produces small blocks (< 3kB) exclusively. |
| 18 | + |
| 19 | +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 |
| 20 | +were performed in the Conway era. |
| 21 | + |
| 22 | +## Observations |
| 23 | + |
| 24 | +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. |
| 25 | + |
| 26 | +### Resource Usage |
| 27 | + |
| 28 | +1. Under value workload Process and Mutator CPU usage are slightly higher on `9.0` - 7% - 8% (4% each under Plutus workload). GC CPU is increased by 11%, but decreases under Putus workload by 3%. |
| 29 | +2. Only under value workload, Allocation Rate and Minor GCs increase by 5% and the live GC dataset grows by 3%. Heap size is constant. |
| 30 | +3. CPU 85% spans are 8% shorter (3% under Plutus workload). |
| 31 | + |
| 32 | +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. |
| 33 | + |
| 34 | +### Forging Loop |
| 35 | + |
| 36 | +1. Mempool Snapshotting and Self Adoption time on the block producer increase very slightly under value workload - 2ms (or 3%) each. |
| 37 | +2. Under Plutus workload, however, a decrease in Self Adoption time by 2ms (or 4%) is the only significant change in the forging loop. |
| 38 | + |
| 39 | +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. |
| 40 | + |
| 41 | +### Peer propagation |
| 42 | + |
| 43 | +1. Block Fetch duration is 21ms faster (6%) - 7ms or 5% under Plutus workload. |
| 44 | +2. Fetched to Sending increases slightly by 3ms (7%) - only under value workload. |
| 45 | +3. Adoption times on the peers increase slightly by 4ms (5%) - under Plutus workload, however, they are 3ms (6%) faster. |
| 46 | + |
| 47 | +### End-to-end propagation |
| 48 | + |
| 49 | +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. |
| 50 | + |
| 51 | +1. Under value workload / full blocks on `9.0`, we can observe a 4% - 5% improvement of cluster adoption times in the 80th centile and above. |
| 52 | +2. Under Plutus workload / small blocks, the corresponding improvement is 5% - 6%. |
| 53 | +3. The main contributing factor is the improvement in Block Fetch duration. |
| 54 | + |
| 55 | + |
| 56 | +### Conclusion |
| 57 | + |
| 58 | +* Network performance clearly improves by ~%5 for 80% to full cluster adoption - independent of workload. |
| 59 | +* RAM usage is unchanged on `9.0`. The slight rise in CPU usage is expected, given improved network performance, and does not pose cause for concern. |
| 60 | +* We have not observed any performance regression being introduced in `9.0.0.`. |
| 61 | + |
| 62 | +NB. These benchmarks were performed in the Conway ledger era. As such, they do not cover the one-time performance cost of transitioning from Babbage and enabling the new features of the Conway ledger. |
| 63 | + |
| 64 | +## Contact |
| 65 | + |
| 66 | +As for publishing such benchmarking results, we are aware that more context and detail may be needed with regard to specfic metrics or benchmarking methodology. |
| 67 | + |
| 68 | +We are still looking to gather questions, both general and specific, so that we can provide a suitable FAQ and possibly improve presentation in the future. |
| 69 | + |
| 70 | +## Attachments |
| 71 | + |
| 72 | +Full report for _value-only workload_, PDF downloadable [here](../static/pdf/benchmarking/release-9.0.0.value-only.pdf). |
| 73 | + |
| 74 | +Full report for _Plutus workload_, PDF downloadable [here](../static/pdf/benchmarking/release-9.0.0.plutus.pdf). |
| 75 | + |
| 76 | +NB. The release benchmarks for `8.12.1` were performed on tag `8.12.0-pre`. The patch version bump did not include changes relevant to performance; thus, measurements taken on `8.12.0-pre` remain valid. |
0 commit comments