Skip to main content

· 5 min read
Michael Karg

High level summary

  • Benchmarking: We've performed release benchmarks for Node 8.9.0. Additionally, we benchmarked different GC settings for cardano-node.
  • Development: Ongoing work on the reporting pipeline and high-level profile definitions.
  • Workbench: In conjunction with DRep delegations in genesis, we're working on adjustments to a new cardano-cli command.
  • Tracing: Test coverage for the new handle registry feature in cardano-tracer is complete.
  • UTxO Growth: Currently, we're developing a series of benchmarks targeting performance implications of increased UTxO set size.
  • Nomad cluster: Disk storage safety net; better admin access to Nomad nodes; basic backend support for more than 1 cluster; new latency service.

Low level overview

Benchmarking

We've performed a full set of release benchmarks for Node 8.9.0. Initially, we identified a performance regression in connection to ledger snapshots. This has been addressed very swiftly. Having re-run the fixed version, we could detect no performance risks in comparison with 8.7.2 / 8.7.3.

In an additional set of benchmarks, we targeted the garbage collector (GC) settings that cardano-node is built with by default. Specifically, we compared these (copying, sequential GC) as a baseline to using the parallel GC, the compacting GC and the non-moving GC - all of which are supported by GHC's runtime system. As GC always is a trade-off between space and time (and as a consequence, responsiveness); we could measure the parallel GC offering a slight increase in responsiveness at the cost of delaying some evaluations - which is suboptimal for a block forger. The compacting GC could clearly achieve a smaller RAM footprint, but only at the cost of increased CPU usage - and clearly worsened responsiveness. The non-moving GC could greatly enhance responsiveness - but increased the RAM footprint tremendously, as well as introduced delays in the forging loop. In conclusion: the existing default is still the best choice by far for cardano-node - validated both on GHC8.10.7 and GHC9.6.3.

Development

The work on moving benchmark profile, and genesis, definitions out of the bash scripting / JSON data transformation space is still ongoing. Type safety and a test suite for those tasks will allow for a much more principled approach.

The implementation of additional rendering formats and report templates for our reporting pipeline has been completed; it is currently in testing and validation phase.

Workbench

We're working on integrating new cardano-cli functionality in our automations. Injecting DRep delegations into genesis - for Conway ledger benchmarks - will require us to use a new CLI command, which differs in in output structure and options provided from the one we're using to inject stake pool delegations. This requires us to implement and additional post-processing step for backends to find everything as expected.

Furthermore, a PR has been merged which refactors and cleans up benchmarking profiles, with a focus on fine-tuning solo-node benchmarks which scrutinize a single cardano-node process.

Tracing

The test suite for cardano-tracer's new handle registry feature is complete, and the new feature passes all tests. At the moment, we're preparing it for merging into master.

UTxO Growth

We're developing a series of benchmarks that will provide insight into possible changes to the Node's performance characteristics given different UTxO set sizes and numbers of delegated wallets. What we aim to capture in these benchmarks is the system's capability to scale with UTxO growth - while simultaneously evaluating hardware requirements. The workloads will be based on existing release benchmarks, but allow for flexibility regarding UTxO set and delegations. They will target the existing in-memory solution, and at the same time permit feasability testing UTxO-HD's on-disk flavour - which does not keep the entire UTxO set in RAM permanently.

Nomad cluster

Implementation of cluster machine disk space checking and garbage collection is complete. A requirement was that no monitoring process interferes with a running benchmark, so a non-synchronous approach was chosen to guarantee enough disk space. This prevents failing runs, and thus the necessity to repeat them.

In the process, the workbench backend was equipped with a wider range of cluster commands and abstractions, which makes administrating cluster machines more flexible. This includes a new service to create a network latency matrix for deployed cluster hardware - generalizing the approach chosen during the Nomad cluster's initial validation phase. This can guarantee the validity of existing baselines in case of hardware reboots, or changes in topology.

Last not least, the backend is currently receiving an additional feature: supporting more than 1 hardware cluster. This will enable us, in the future, to benchmark on ephemeral clusters - without interfering with the hard requirements, or the schedule, of release benchmarking on our default deployment. The motivation is being able to benchmark different hardware configurations, along with varying cardano-node options and initial ledger states on a parallel schedule - also, without having to keep those clusters running at all times.

· One min read
Damian Nadales

High level summary

  • Completed the rebase of the production libraries for UTXO-HD on 8.9, both in ouroboros-consensus, cardano-api and cardano-node.
  • Measured sync and replay times and memory in UTXO-HD. The latest result are reported here.
  • Bugfixed the snapshot interval.
  • Added an extra case to isIncorrectClaimedFlag for Babbage and Conway eras.
  • Added a db-analyser analysis to get the UTXO size per slot. The result of the analysis is illustrated here.
  • Started integration work for Node release 8.10.
  • Reviewed the Genesis pull-requests submitted by Tweag. They are pending a final round of review.
  • Helped the current release engineer prepare the 8.9 release candidate.
  • The Consensus Team has also been helping troubleshoot known issues with 8.9 (eg snapshots causing missed leadership schedules, unexpected snapshot interval, integration tests, etc).

· 2 min read
Jean-Philippe Raynaud

High level overview

This week, the Mithril team kept implementing the data type for certifying Cardano transactions within Mithril networks: they worked on adapting the Mithril explorer to support Cardano transaction verification, started implementing a more efficient transaction signing scheme, stabilized the type names in the API, and kept investigating a bug that prevents the signature of some Conway era transactions. Additionally, they have completed the first version of the Prometheus monitoring endpoint for the signer.

Finally, the team fixed a bug occuring in the publication of the npm packages of the client, enhanced the HTTP tests of the aggregator, and kept working on the KES period computation in the Pallas chain observer.

Low level overview

  • Completed the issue Expose Prometheus metrics for Mithril signer #1096
  • Completed the issue Make HTTP server tests more robust #1524
  • Completed the issue Stabilize namings in Cardano Transactions API #1535
  • Completed the issue Reorganize crates in the repository #1528
  • Worked on the issue Implement Cardano Transactions in explorer #1497
  • Worked on the issue Implement a Block Range Merkle Tree for Cardano Transactions #1533
  • Worked on the issue Output CLIs logs to stderr #1515
  • Worked on the issue npm publish fails on latest when next exists #1531
  • Worked on the issue Cardano transactions are not all signed in testing-sanchonet #1537
  • Worked on the issue Enhance Mithril/Cardano node communication #1315
  • Worked on the issue P2P threat modeling and risk analysis #1350

· 2 min read
Marcin Szamotulski

High-level overview of sprint 56

Cardano-Node, Cardano-API, Cardano-CLI

In the last sprint, the network team was designated to take the Release Engineering Role, as the coming release contains mostly network advances. Armando Santos has been making progress on it. The following packages were published to CHaP:

and other ouroboros-network packages with minor changes. The following packages were also published:

The work on cardano-node is in progress, see cardano-node#5485

We would like to thank Karl Knutsson (CF) for helping us to test the upcoming cardano-node release.

Ouroboros-Network

We continued working on tx-submission, ouroboros-network#3311

We started to execute an idea to put all configuration values used by the diffusion layer Ouroboros.Network.Diffusion.Configuration module. Currently, default values are spread in different repositories (e.g. cardano-node, ouroboros-consensus). See ouroboros-network#4805.

We restored how syncing works in bootstrap mode to get the same performance characteristics, see ouroboros-network#4809, ouroboros-network#4810.

We started working on Outbound-Governor Genesis mode, see ouroboros-network#4813.

Ouroboros-Consensus

We requested to modify how bulk-sync mode works to make it use the same mechanism that the newly added LedgerStateJudgement. See ouroboros-consensus#958.

Low-level summary

We also addressed a minor issue regarding tracing LedgerStateJudgement changes, see ouroboros-network#4816.

· 2 min read
Sebastian Nagel

High-level Summary

This week the Hydra team, in addition to the usual maintenance and bug fixing, has been working on the preparation for the switch to Conway making the codebase less babbage specific. The team also conducted the monthly review meeting and published the monthly report on a new website (to keep those reports separate of main repository). They also added a basic UI to the Hydra explorer, switched to aggregating sanchonet data and also fixed the smoke tests to work on sanchonet. Finally, they continued progress the off-chain incremental commit protocol changes.

What did the team achieve this week

What are the goals of next week

  • Complete preparation for #1178 to switch to Conway (by "flipping" a switch)
  • Complete off-chain incremental commit protocol changes #199 (and focus on the on-chain part after).
  • Re-align with SundaeLabs on EventSource and EventSink refactoring.