Daml Command Life Cycle in the ledger and its corresponded metrics

Hi, I was trying to make this Daml Command Life Cycle and metrics table based on concord ledger. Can anyone help me with this? There are a lot of assumptions so … feel free to tell me I’m wrong

Image a command is submitted and it will go through

  1. Client Node (Participating node)
Step Metric
Checking/Validation client cert and token - Is there a metric for this?
Validating Daml command daml.commands.submissions
Is there a metric for all the time spent on committer nodes from here
  1. Committer Node (Replica)
Step Metric
Fetching the package daml.execution.get_lf_package
Preparing the transaction daml.execution.total
Forming Consensus Some metrics on ledger level
Persist the transaction Some metrics on ledger level
  1. Client Node (Participating node)
Step Metric
Storing the transaction daml.index.db.store_ledger_entry (Is that right?)
Stream Result to the Ledger API Not sure if there a metric for this

If by any chance you are using the sandbox metrics documentation page as your reference, please note that it’s mostly comprehensive but valid only for the sandbox. With that said, there are metrics that happen to be shared as there are shared components, but for metrics specific to VMBC replica nodes please refer to its documentation.

Regarding the table you put together:

  • there is no metric for the validation of authorization tokens and certificates
  • the time taken to validate that a gRPC command is well formed is measured by daml.commands.validation
  • daml.commands.submissions measures the overall time taken to validate, deduplicate and interpret a command
  • as mentioned, for metrics on the replica please refer to the VMBC documentation
  • in particular, daml.execution measures the interpretation time on the participant, not the time taken on the committer to re-interpret
  • daml.index.db.store_ledger_entry is indeed the time to store the transaction coming back from the committer to the participant index
  • there are a few metrics under daml.lapi.transaction_service keeping track of the time spent on each service, but for streaming please note that it just measure that latency between subscription and returning the first result

That’s right. I was referring to the sandbox doco Daml Sandbox — Daml SDK 1.11.0 documentation. Just curious, does it also apply to Daml on SQL?

To the best of my understanding, they all use the same implementation of the participant at this point, but as a note (also for future readers) metrics are not a strict part of the Ledger API, so different vendors may track different metrics under different names, using different reporters, and so on.