Skip to main content

· 3 min read
Michael Karg

High level summary

  • Benchmarking: Release benchmarks for 8.9.1 have been performed and analysed.
  • Development: We've implemented a benchmarking setup for UTxO-HD's LMDB (on-disk) backend.
  • Workbench: The now modular, nix-based genesis creation has been merged to master; DRep delegation and integration of a new cardano-cli command are ongoing.
  • Tracing: Benchmarking the new handle registry feature in cardano-tracer is complete; quality-of-life improvements to Prometheus output.
  • UTxO Growth: We've adjusted our framework to support running UTxO scaling benchmarks on both a single node and a cluster.
  • Nomad cluster: new multi-cluster support with the capability to quickly adjust to changes in deployed hardware

Low level overview

Benchmarking

We've performed a full set of release benchmarks for Node 8.9.1. Comparing with release 8.9.0, we could not detect any performance risks for that version.

Development

In context of UTxO scaling, we want to assess the feasability of the current on-disk solution (which is LMDB) of a UTxO-HD enabled node. Using that, the UTxO set will be kept in live tables and snapshots on disk, significantly reducing memory requirements.

We've implemented a benchmark setting, and a node service configuration, supporting direct disk access to a dedicated device which can be initialized with optimized file system and mount settings. It's purpose is to serve as storage for the highly performance-critical disk I/O of the LMDB component.

Workbench

Our automation for creating all flavours of geneses has seen cleanup and refactoring - which has been merged to master. It can now use a more principled, and rigorously checked, modular approach to define, create and cache the desired genesis files.

Working on integrating new cardano-cli functionality in our automation is ongoing. The performance workbench will support a different, and updated, CLI command which will allow injection of DRep delegations into genesis.

Tracing

Benchmarking cardano-tracer's new handle registry feature has been performed and evaluated. We're satisfied with seeing clear performance improvements along with cleaner code, and much better test coverage. Especially allocation rate and number of garbage collections (GC) could be significantly reduced, along with the CPU time required for performing GCs. This will allow for higher trace message throughput given identiacal system resources - plus less system calls issued to the OS in the process.

Furthermore, the new tracing system is getting improvements for its Prometheus output - like providing version numbers as metrics, or annotating metrics with their type - enhancing the output's overall utility.

UTxO Growth

The performance workbench now supports profiles aimed at simulating UTxO growth both for a single node and an entire cluster. Additionally, simulating different RAM sizes in combination with specific UTxO set sizes is supported. For a single block producing node, the focus is on quick turnaround when running a benchmark, gaining insight into the node's RAM usage and possible impact on the forging loop.

The cluster profiles enable capturing block diffusion metrics as well, however they require a much longer runtime. We can now successfully benchmark the node's behaviour when dealing with UTxO set sizes 4x - 5x of current mainnet, as well as a possible change in behaviour when operating close to phsyical RAM limit due to that.

Nomad cluster

Our backend now supports allocating and deploying Nomad jobs for multiple clusters simultaneously - all while keeping existing automations operational. We've taken special precautions a cluster, as seen by the backend, can be efficiently and easily modified to reflect newly deployed, or changed, hardware. Additionally, we've added support for host volumes inside a Nomad allocation - which will be needed for benchmarking UTxO-HD's on-disk solution.

· One min read
Sebastian Nagel

High-level summary

This week, the Hydra team restored test compatibility with all networks, reviewed and merged streaming plugins contributed by SundaeLabs. The team also fixed tutorial instructions for downloading the latest cardano-node, fixed the observed contesters bug, prepared a PRs for downstream clients to use the new API format for transactions (preparing the release with this breaking change). Finally, they also recorded a walkthrough video on how the hydra project is run: https://www.youtube.com/watch?v=JGUeO7A6mMU

What did the team achieve this week

  • Restored compatibility with all networks #1355.
  • Reviewed and merged streaming plugins (only missing a how-to) #1325.
  • Fixed tutorial instructions for downloading cardano-node 8.9.0 #1367.
  • Fixed the observed contesters bug #1266.
  • Prepared a PR for Kupo using new Hydra transaction format kupo#166.
  • Recorded a walkthrough on how the hydra project is run (uncut) https://www.youtube.com/watch?v=JGUeO7A6mMU.

What are the goals of next week

  • Conduct the monthly review meeting
  • Improve the /commit endpoint to unblock users
  • Stateful testing of transaction traces to verify corner cases for incremental decommit
  • Release 0.16.0

· One min read
Damian Nadales

High level summary

  • Merged the alternative fs-api interface for I/O using user-supplied buffers. This feature is important because it defines lower-level primitives for the filesystem API, which opens op avenues for more use cases and more efficient I/O operations (for instance when implementing lsm-tree, which is part of our efforts to move the ledger state to disk). This feature has not been released yet.
  • Implemented new diffusion pipelining criterion .
  • Released Consensus packages containing backports for Node 8.9.1.
  • Focused on fixing the tests for ouroboros-consensus in the UTXO-HD branch. Work is ongoing.

· 2 min read
Jean-Philippe Raynaud

High level overview

This week, the Mithril team continued implementing the certification of Cardano transactions in Mithril networks. They focused on scaling the signature and proof generation for mainnet, completed UI improvements for the explorer, provided metadata about the point of the chain used during the verification process, and investigated a bug in the block parser that prevents some Conway transactions from being signed. Additionally, they began prototyping the implementation of a more versatile beaconing mechanism to sign transactions with low latency.

Finally, the team started implementing some community-requested features to verify the output folder structure made by the client, and fixed a source of flakiness in the CI end-to-end test.

Low level overview

  • Completed the issue Upgrade Cardano node to 8.9.0 #1570
  • Completed the issue Explorer improvements for Cardano transactions #1554
  • Completed the issue Refactor the Cardano transactions parser with pallas-hardano #1557
  • Completed the issue Provide latest immutable file number with certified transactions in client #1536
  • Worked on the issue Implement a Block Range Merkle Tree for Cardano Transactions #1533
  • Worked on the issue Support multiple beacon types in signer/aggregator #1562
  • Worked on the issue Do not require the mithril client to create the DB directory #1572
  • Worked on the issue Some transactions are not signed in testing-sanchonet #1577
  • Worked on the issue End to end tests are flaky in CI #1558
  • Worked on the issue P2P threat modeling and risk analysis #1350

· 2 min read
Marcin Szamotulski

High-level overview of sprint 57

We released cardano-node-8.9.0 (which includes ouroboros-newtork-0.12.0.0). This release contains the following network upgrades:

Soon we will release [cardano-node-8.9.1] (which includes ouroboros-network-0.12.0.0). This release will contain:

  • Peer sharing improvements & fixes. Contributed and tested by Karl Knutsson CF.
  • cardano-ping updates to support NodeToNode_V13 & peer sharing.
  • Some smaller maintenance changes.

The list of network features included in ouroboros-network-0.12.0.0 and ouroboros-network-0.13.0.0 can be found here.

We also continued working on tx-submission, ouroboros-network#3311. Mostly working on the pure internal API for decision-making and testing it with property-based tests. The next step is to get all the information needed to run the decision logic in an efficient way and later write a mini-protocol client which is using the new API and testing it.

We also started working on thing to finalise the Genesis support from the network. We have a PR under review, ouroboros-network#4832. We also started to investigate how to support big ledger peer snapshots. This requires changes in the topology file as well as cardano-node & ouroboros-network to understand the snapshots; and on the other hand creation of such snapshots by cardano-cli.

Low-level summary

This time everything was high-level, 😉.