Counters

Counters is a Mono API for flexible statistics collection and is used to track different events inside the JIT.

You would typically register an address with the mono_counters_register routine and increment the counters from your application as you go. At the end of the program you would call mono_counters_dump which will display all the registered counters.

If you need more complicated counter computation, a function can be provided instead of an address. In that case the MONO_COUNTER_CALLBACK flag must be ored in the type request.

The types that can be rendered are:

       MONO_COUNTER_INT
       MONO_COUNTER_UINT
       MONO_COUNTER_WORD
       MONO_COUNTER_LONG
       MONO_COUNTER_ULONG
       MONO_COUNTER_DOUBLE
       MONO_COUNTER_STRING

To organize the output, you register also a section where the counter will be displayed, or one of the following values when you register your counter:


       MONO_COUNTER_JIT
       MONO_COUNTER_GC
       MONO_COUNTER_METADATA
       MONO_COUNTER_GENERICS
       MONO_COUNTER_SECURITY
mono_counters_dump
Syntax
void mono_counters_dump (int section_mask, FILE *outfile)

Parameters
section_mask The sections to dump counters for
outfile a FILE to dump the results to
Description
Displays the counts of all the enabled counters registered. To filter by variance, you can OR one or more variance with the specific section you want. Use MONO_COUNTER_SECTION_MASK to dump all categories of a specific variance.
mono_counters_enable
Syntax
void mono_counters_enable (int section_mask)

Parameters
sectionmask a mask listing the sections that will be displayed
Description
This is used to track which counters will be displayed.