WIP

Setup

A new implementation of Span tracking https://github.com/rchain/rchain/pull/2569

to enable:

rnode.server.metrics.zipkin = true
kamon.trace.sampler = "always"

and to avoid StackTraceExceptions: (until it's fixed: )

-J-Xss5M


Contract execution analysis

Rev transfer on empty tuplespace

Run 1

https://github.com/rchain/rchain/blob/dev/rholang/examples/vault_demo/3.transfer_funds.rho

The whole flow of proposal is captured in two stages

Significant observations:

very little is run in parallel because the execution is dependent on itself

Run 2

A more detailed view

Reset and restore installs

Produce + create checkpoint

Rev transfer after 500 blocks with simple transfers

https://github.com/rchain/rchain/blob/dev/rholang/examples/vault_demo/3.transfer_funds.rho

500 transfers done (of 1 rev instead of 100).

It seems that the length of the chain affected the transfer execution by a factor of 3.

Rev transfer after 500 blocks with other contracts


Wide contract

https://github.com/rchain/perf-harness/blob/master/contracts/wide_a_setup.rho

https://github.com/rchain/perf-harness/blob/master/contracts/wide_b_run.rho

Run 1 (100 comm events)

A dedicated implementation of span tracking was used in these measurements: https://github.com/dzajkowski/rchain/tree/metrics/replace-task-local-spans-with-explicit-traceid-2

High level execution

High level execution of wide run

Create block

Reset

Soft checkpoint

<1ms

Deserialisation of 100 terms

Task ordering

Run 2 (1000 comm events)

A dedicated implementation of span tracking was used in these measurements: https://github.com/dzajkowski/rchain/tree/metrics/replace-task-local-spans-with-explicit-traceid-2

High level execution

Create block

Reset

Soft checkpoint

<1ms

Deserialisation of 1000 terms

Task ordering

Thoughts after run 1 & run 2