package runtime_events_tools

  1. Overview
  2. Docs
Tools for the runtime events tracing system in OCaml

Install

Dune Dependency

Authors

Maintainers

Sources

runtime_events_tools-0.5.0.tbz
sha256=818258e2f81d42327cee846dda9fec5a863e926152903be3f4e5c686ee660270
sha512=50c5ecdae4a73c4f26d68da21265c8ee2731bff76445db9e637237793d7024a272f78f6a57650e51c70a459843a656c19d5ee79d2e5aeed0460983adb67fe548

Description

Various tools for the runtime events tracing system in OCaml

Published: 05 Oct 2023

README

Runtime events tools

A collection of observability tools around the runtime events tracing system introduced in OCaml 5.0.

olly

olly provides a number of sub-commands.

gc-stats

olly gc-stats will report the GC running time and GC tail latency profile of an OCaml executable.

Metric Description
Wall time Real execution time of the program
CPU time Total CPU time across all domains
GC time Total time spent by the program performing garbage collection (major and minor)
GC overhead Percentage of time taken up by GC against the total execution time
GC time per domain Time spent by every domain performing garbage collection (major and minor cycles). Domains are reported with their domain ID (e.g. Domain0)
GC latency profile Mean, standard deviation and percentile latency profile of GC events.
$ olly gc-stats 'binarytrees.exe 19' # Use quotes for commands with arguments
Execution times:
Wall time (s):	2.01
CPU time (s):	5.73
GC time (s):	3.15
GC overhead (% of CPU time):	55.00%

GC time per domain (s):
Domain0: 	1.15
Domain1: 	0.99
Domain2: 	1.01

GC latency profile:
#[Mean (ms):	0.88,	 Stddev (ms):	1.67]
#[Min (ms):	0.00,	 max (ms):	13.21]

Percentile 	 Latency (ms)
25.0000 	 0.01
50.0000 	 0.04
60.0000 	 0.13
70.0000 	 0.45
75.0000 	 0.79
80.0000 	 1.53
85.0000 	 2.46
90.0000 	 3.46
95.0000 	 4.38
96.0000 	 5.07
97.0000 	 5.87
98.0000 	 6.45
99.0000 	 7.08
99.9000 	 11.20
99.9900 	 13.21
99.9990 	 13.21
99.9999 	 13.21
100.0000 	 13.21
$ olly gc-stats 'menhir -v --table sysver.mly' # Use quotes for commands with arguments
<snip>
Execution times:
Wall time (s):	60.88
CPU time (s):	60.88
GC time (s):	7.30
GC overhead (% of CPU time):	11.99%

GC time per domain (s):
Domain0: 	7.30

GC latency profile:
#[Mean (ms):	0.10,	 Stddev (ms):	0.43]
#[Min (ms):	0.00,	 max (ms):	39.16]

Percentile 	 Latency (ms)
25.0000 	 0.00
50.0000 	 0.00
60.0000 	 0.00
70.0000 	 0.00
75.0000 	 0.00
80.0000 	 0.00
85.0000 	 0.01
90.0000 	 0.26
95.0000 	 0.69
96.0000 	 0.88
97.0000 	 1.04
98.0000 	 1.30
99.0000 	 1.91
99.9000 	 4.56
99.9900 	 8.31
99.9990 	 9.83
99.9999 	 39.16
100.0000 	 39.16

trace

olly trace will record the runtime trace log in Fuchsia trace format or Chrome tracing format . Format of the trace file can be specified with the --format option. The default is Fuchsia trace format.

$ olly trace --format=fuchsia menhir_sysver.trace 'menhir -v --table sysver.mly' # Fuchsia trace format
<snip>
$ ls menhir_sysver.trace
menhir_sysver.trace

$ olly trace --format=json menhir_sysver.trace 'menhir -v --table sysver.mly' # Chrome tracing format
<snip>
$ ls menhir_sysver.trace
menhir_sysver.trace

Traces in either formats can be viewed in perfetto trace viewer. Chrome format trace can also be viewed in chrome://tracing in chromium-based browsers.

Dependencies

The library depends on hdr_histogram_ocaml.

Dependencies (6)

  1. tracing
  2. cmdliner >= "1.1.0"
  3. hdr_histogram
  4. ocamlfind
  5. ocaml >= "5.0.0~"
  6. dune >= "3.2"

Dev Dependencies (2)

  1. odoc with-doc
  2. menhir with-test

Used by (1)

  1. opsian

Conflicts

None