Module Probe.Group

A Group provides a way of grouping multiple probes (or timers). Once grouped, one can measure stats between members of a group -- i.e. the time it takes to get from one probe to the other in the group, or the change in a metric between two probes in a group.

Core_profiler supports a path query syntax where one can ask for stats about *paths* in the time series of data. The idea of a group is best explained by an example, which you can find in the tutorial.

type t
val create : name:string -> t create_args
val add_probe : t -> ?⁠sources:probe array -> name:string -> unit -> probe

sources should be a list of probes, specifying the edges that we care about. (i.e., we care about (s, this) for all s in sources). When using online profiling, if no sources are specified no, stats will be collected.

For offline profiling sources are less relevant. All the probe information is collected in the output and sources provides a default configuration to the profiler_tool. If no sources are specified, the offline tool will fall back to the default of "all two-probe direct paths" of a group.

val reset : t -> unit

Resetting a group avoids path/delta calculation across the reset. This shouldn't be necessary in simple cases if you specify the edges you care about, via sources or otherwise. In more complex cases with cycles, you will need to call this at the start or end of the function you are instrumenting.