Skip to main content

· 2 min read
John Lotoski

High level summary

The SRE team continues work on Cardano environment improvements and general maintenance.

Some notable recent changes, updates or improvements include:

  • A substantial amount of effort was placed into the Hydra CI build system during this biweekly period to investigate the root cause of aborted builds due to both logged invalid store paths and logged missing nar cache files. Nushell scripts were written to examine and repair specific closures as well as to walk all nix cache objects and proactively resolve any dangling narinfo files, effectively resolving the aborted builds. Script repair operations were parallelized to speed up the walk rate across the large object count bucket. The root cause was a cache truncation operation which purged a small percentage of objects filtered by oldest age and non-uniformly deleted narinfo and nar objects which needed to remain paired due to self-references. A more intelligent GC approach will be used in the future.

Repository Work -- Merged

Blockperf

  • Fixes a new tracing system blockperf implementation error for trace detail level. blockperf-pr-33

Capkgs

  • Re-adds regular hydraJob builds in addition to fetch-closure only builds to ensure the full jobset can be rebuilt from source. capkgs-commit-range

Cardano-airgap

  • Adds more boot options for better video driver support, including nouveau nomodeset fallback and open and closed Nvidia drivers. The dconf config file was updated to use the nixos modules declaration. Logout, shutdown, restart and similar gnome operations were fixed. Additional helper packages were added. See the PR header for details. cardano-airgap-pr-9

Devx-ci

  • Adds ci10, a x86_64-linux builder, to be repurposed later for Equinix metal migration. Sets narinfo-cache-positive-ttl back to default value, sets the default user nofile limit to 4096 from default of 1024 to avoid occasional nofile failures. Rekeys required group secrets to include the new machine, adds ci7, ci8 to the r2 tunnel. Adds a github-hydra-bridge-restarter service to detect when the bridge token has expired and auto-rotate within one minute of expiration. devx-ci-pr-135

Repository Work In Progress -- PRs and Branches

· 2 min read
Alexey Kuleshevich

High level summary

This period Ledger team has implemented an improvement to withdrawals predicate failure reporting, that will become available with next intra-era hardfork. We've also experimented with a potential representation in Haskell for transaction levels relateed to CIP-118: sub-transactions vs top level transactions. Besides that we did some more code cleanup and made further improvements to the test suite.

Aside from development work there was Ledger team presence at the Node Diversity workshop, which included relevant people from all of the alternative Node implementations that are currently under development.

Low level summary

Features

  • PR-5281 - Added FromJSON instance for PParamUpdates
  • PR-5291 - Move withdrawals to LEDGER PV 11 onwards
  • PR-5297 - Remove UMap

Testing

  • PR-5195 - Refactor some parts of cardano-ledger-conformance to prepare for Dijkstra
  • PR-5288 - Update fls and fix conformance build
  • PR-5289 - Add Dijkstra CddlSpec
  • PR-5285 - Added a new test Plutus script
  • PR-5280 - Small refactoring of impSatisfyNativeScript to avoid duplication
  • PR-5293 - Enable epoch boundary hook in conformance
  • PR-5303 - Migrate constrained-generators docs to its own repo

Infrastructure and releasing

  • PR-5286 - Post release process changelog version bumps
  • PR-5283 - Use the "union" merge driver for changelogs
  • PR-5290 - Update version and CHANGELOG of cardano-ledger-core
  • PR-5287 - Fixup random 1.3 compatibility
  • PR-5307 - Fix CHANGELOG files

· 2 min read
Jean-Philippe Raynaud

High level overview

This week, the Mithril team released the 2537.0 distribution, which provides support for Cardano node v.10.5.1, stabilizes commands of the client CLI, provides support for ARM pre-built binaries, and includes various bug fixes and improvements.

The team also completed updating the CIP of the DMQ protocol and its implementation in Pallas and Mithril nodes, introducing changes to the message structure and the n2c local notification mini-protocol. They continued working on the preparatory phase of decentralizing configuration parameters and on supporting multiple proof systems in the STM library.

Finally, a part of the team attended the Node Diversity Workshop #2 event in Toulouse, France, and began testing the integration of the Haskell DMQ node with the Mithril nodes.

Low level overview

  • Released the new distribution 2537.0
  • Published a dev blog post about the Distribution 2537 availability
  • Published a dev blog post about the Linux ARM binaries availability
  • Completed the issue Release 2537 distribution #2625
  • Completed the issue Update the DMQ message structure #2670
  • Completed the issue Update the n2c Local Message Notification mini-protocol in DMQ #2673
  • Completed the issue Decentralization of configuration parameters - Phase 0 #2691
  • Worked on the issue Support multiple aggregation proof systems in STM library #2680
  • Worked on the issue Decentralization of configuration parameters - Phase 1 #2692
  • Worked on the issue Integrate the Haskell DMQ node #2674
  • Worked on the issue Enhance STM library readability #2568

· 4 min read
Michael Karg

High level summary

  • Benchmarking: Feature benchmarks for a new tx submission logic; generalized on-disk benchmark profiles.
  • Development: New tracing system for cardano-submit-api; Node conformance testing groundwork, being applied to metrics.
  • Infrastructure: Dijkstra era being incorporated into benchmark tooling.
  • Tracing: Creating a library package and API from cardano-tracer, facilitating dedicated trace consumer applications.
  • Team: Ruslan joins Performance & Tracing, will be aimed at Leios.

Low level overview

Benchmarking

We've performed and analysed feature benchmarks of TxSubmission protocol, version 2. It's designed to reduce redundant exchange of transactions between network nodes. To that end we've created a dedicated benchmark which is able to locally reproduce performance observations on the cloud cluster - and hence be executed with GHC profiling for tracking time and space usage.

The on-disk (LMDB) benchmarks for the cluster have been generalized into full-fledged benchmarking profiles that can be scaled for available RAM (and thus the pressure on the on-disk backing store to perform disk I/O) - and be applied to other backing store implementations as well. This will allow for direct performance comparisons with the lsm-trees solution, once it is integrated into the Node.

Development

There's a microservice, cardano-submit-api, which is run independently from the Node (if desired). It allows for Cardano transactions to be submitted via HTTP POST, instead of Cardano native protocols. It's still using the legacy tracing system, which is why we're currently porting its logging and metrics to the new one.

We're also laying groundwork for (multi-)node conformance testing. This entails creating a specification document for semantics of existing traces. These traces can then be emitted accordingly across diverse node implementations. Given the unified semantics, these points of evidence can then be evaluated against each other, against our Haskell reference implementation, or against a model of specified / expected behaviour, resulting in a quantifiable way to assess conformance across individual implementations. Currently, we're implementing a playground version of this in the tracing system's own test suite, where we assess whether the metrics a node exposes conforms to the trace evidence in its logs, and to the metrics it forwards to cardano-tracer.

Infrastructure

As a maintenance task, we're integrating the new Dijkstra ledger era into our performance workbench and all benchmarking tools. This will allow us to specify existing profiles in the new era (allowing us to comparatively benchmark its implementation against previous eras) as well as create new benchmarks making use of any Dijkstra-specific feature.

Tracing

The trace consuming / processing service cardano-tracer had been built as a monolithic application. We're currently redesigning it as a more modular one, splitting it up into a library and an application proper (which hosts all its current high-level functionality). The underlying library will be equipped with an API that meets community standards in the future. For now, we're focusing on making all library components safely restartable and reconfigurable, as well as providing abstract, clean intra-process communications (cardano-tracer is a highly multi-threaded app). These capabilities are also verified in the test suite.

This will facilitate rapid development of custom, specialized applications for trace consumption and processing: The library package will provide all mid-level abstractions, as well as the Cardano native multiplexed forwarding protocol. It will allow any application to focus exclusively on implementing the high-level features it aims to.

Team

Ruslan joined Performance & Tracing as a Software Engineer. He has a ton of functional programming experience under his belt, in Idris, in Haskell and in Scala. Additionally, he used to work as a perfomance engineer for a large, distributed commercial system. This all makes him an ideal candidate for Cardano performance engineering, and perspectively for all new Leios benchmarks and performance tests. Welcome, Ruslan!

· One min read
Damian Nadales

High level summary

The Consensus team is drafting an architectural design based on Leios CIP-0164 (draft). The design document is currently in draft form and can be found at this link.

The team has also completed augmenting the hardfork combinator to be Peras-aware (#1681).