Skip to content

Commit 4d13b34

Browse files
committed
Performance and Tracing update 2025-02-21
1 parent 5007a0c commit 4d13b34

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
---
2+
title: Performance & Tracing Update
3+
slug: 2025-02-21-performance-and-tracing
4+
authors: mgmeier
5+
tags: [performance-tracing]
6+
hide_table_of_contents: false
7+
---
8+
9+
## High level summary
10+
11+
* Benchmarking: Plutus memory budget scaling benchmarks; UTxO-HD benchmarks, leading to a fixed regression; Genesis benchmarks.
12+
* Development: Ouroboros Genesis and UTxO-HD adjustments in workbench; Maintenance tasks.
13+
* Infrastructure: Removing outdated deployments; Haskell profile definition merged; workbench simplification ongoing.
14+
* Tracing: C library development ongoing; Feature implementation according to community feedback; test removeal of old system.
15+
16+
## Low level overview
17+
18+
19+
### Benchmarking
20+
21+
We've run and analyzed scaling benchmarks of Plutus execution budgets. In this series of benchmarks, we measured the performance impact of changes to the memory budgets (both transaction and block). We observed
22+
an expected, and reasonable, increase in certain metrics only. Furthermore, we've shown this increase to be linearly correlated to the budget raise. This means that when exploring the headroom of those budgets,
23+
the performance cost for the network is alawys predictable. The benchmarks serve as a base for discussing potential changes to those budgets in Mainnet protocol parameters.
24+
25+
When building a performance baseline for UTxO-HD, we were able to locate a regression in its new in-memory backing store, LedgerDB V2. We created a local reproduction of that for the Consensus team,
26+
who was able to successfully adress the regression. A corresponding benchmarking report will be published on [Cardano Updates].
27+
28+
Furthermore, we've performed benchmarks with the Ouroboros Genesis feature enabled and compared them to the release benchmark baseline. We could not detect any performance risk to the network during
29+
"normal operations", i.e. when all nodes are caught up with the chain tip.
30+
31+
32+
### Development
33+
34+
During the course of building performance baselines for Ouroboros Genesis and UTxO-HD, we've developed various updates to the performance workbench to correctly handle the new Genesis consensus mode, as well
35+
as adjustments to the latest changes in the UTxO-HD node.
36+
37+
Additionally, we built several small quality-of-life improvements for the workbench, as well as investigated and fixed an inconsistent metric ([Node Issue #6113]).
38+
39+
### Infrastructure
40+
41+
The recent maintenance work also extended to the infrastructure: We've removed the dependency on deprecated environment definitions in `iohk-nix` by porting the relevant configurations over to the workbench. This
42+
facilitates a thorough cleanup of `iohk-nix` by the SRE team.
43+
44+
As the Haskell package defining benchmarking profiles has been merged, and all code replaced by it successfully removed, we're now working very hard on simplifying the interaction between the workbench
45+
and `nix`. This mostly covers removing redundancies that have lost their motivation, applying to both how workbench calls itself recursively multiple times, as well as how (and how many) corresponding `nix` store paths
46+
are created when evaluating derivations. This will both enhance maintainability, and result in much lighter workbench builds locally - but especially on CI runners.
47+
48+
### Tracing
49+
50+
Work on the self-contained C library implementing trace forwarding is ongoing. As forwarding is defined in terms of an `OuroborosApplication`, it's non-trivial to re-implement the feautures of the latter in C as well -
51+
such as handshake, version negotiation, and multiplexing. However, for the intended purpose of said library, it is unavoidable.
52+
53+
We've also started working on a new release of `cardano-tracer`, the trace / metrics consuming service in the new tracing system. This release is geared towards feature or change requests we've received from the community
54+
and found very valuable feedback. Having a seperate service to process all trace output enables us to react much quicker to this feedback, and decouple delivery from the Node's release cycle.
55+
56+
Last not least, we're doing an experimental run on creating a build of Node with the legacy tracing system removed. As the system is deeply woven into the code base, and some of the new system's components
57+
keep compatibility with the old one, untangling and removing these dependencies is a large endeavour. This build serves as a prototype to identify potential blockers, or decisions to be made, and eventually
58+
as a blueprint for removing the legacy system in some future Node release.
59+
60+
61+
[Node Issue #6113]: https://github.com/IntersectMBO/cardano-node/issues/6113
62+
[Cardano Updates]: https://updates.cardano.intersectmbo.org/reports

0 commit comments

Comments
 (0)