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: - RCHAIN-3618Getting issue details... STATUS )
-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:
- for simple contracts the 'par' mechanisms that are utilised in rholang do not make a difference
very little is run in parallel because the execution is dependent on itself
- there are some rogue invocations but it looks like they do not contribute to execution time
- in most cases the interaction with rspace is on the level of ms
- there are some cases when rspace takes a good while longer (20x)
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.
- checkpointing still takes about 150 ms
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
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