wIB"955.5.0+dev0-2025-04-28/.Runtime_events/runtime_counterA;@@@@@@@@l@8EV_FINALISE_UPDATE_FIRST?@@ & & & @@@m@7EV_FINALISE_UPDATE_LAST@@@      @@n@3EV_INTERRUPT_REMOTEA@@&!8!8&!8!M@@o@2EV_MAJOR_EPHE_MARKB@@,!!,!!@@p@3EV_MAJOR_EPHE_SWEEPC@@1"2"21"2"G@@q@7EV_MAJOR_FINISH_MARKINGD@@6""6""@@r@9EV_MAJOR_GC_CYCLE_DOMAINSE@@;##;##@@s@8EV_MAJOR_GC_PHASE_CHANGEF@@A##A##@@t@/EV_MAJOR_GC_STWG@@G$ $ G$ $@@u@;EV_MAJOR_MARK_OPPORTUNISTICH@@L$~$~L$~$@@v@.EV_MAJOR_SLICEI@@Q$$Q$%@@w@5EV_MAJOR_FINISH_CYCLEJ@@V%[%[V%[%r@@x@.EV_MINOR_CLEARK@@[%%[%%@@y@:EV_MINOR_FINALIZERS_OLDIFYL@@a&W&Wa&W&s@@z@5EV_MINOR_GLOBAL_ROOTSM@@ f&& f&&@@ {@6EV_MINOR_LEAVE_BARRIERN@@l'B'Bl'B'Z@@|@2EV_STW_API_BARRIERO@@r''r''@@}@.EV_STW_HANDLERP@@'x(p(p(x(p(@@&~@-EV_STW_LEADERQ@@0~) ) 1~) )@@/@8EV_MAJOR_FINISH_SWEEPINGR@@9)o)o:)o)@@8@@6EV_MAJOR_MEMPROF_CLEANS@@B))C)*@@AA@9EV_MINOR_FINALIZERS_ADMINT@@K*z*zL*z*@@JB@7EV_MINOR_REMEMBERED_SETU@@T**U*+@@SC@?EV_MINOR_REMEMBERED_SET_PROMOTEV@@]+l+l^+l+@@\D@a>d@m@@@ӱ)CallbacksM@!tN;@@A@@@@@,K>}>-K>}>@@@@+n@A@&create-runtime_begin&optionL@1@@@@.Runtime_events)Timestamp!t@@@@.Runtime_events-runtime_phase@@@ @@@!@@"@@#@@$@@@[+runtime_end-@[@@@%@.Runtime_events)Timestamp!t@@@&@.Runtime_events-runtime_phase@@@'@@@(@@)@@*@@+@@@Y/runtime_counterW@@@@,@.Runtime_events)Timestamp!t@@@-@.Runtime_events/runtime_counter@@@.@@@@/6@@@0@@1@@2@@3@@4@@@W%alloc@@@@5@.Runtime_events)Timestamp!t@@@6@%array@@@7@@@9d@@@:@@;@@<@@=@@@U)lifecycle@@@@>@.Runtime_events)Timestamp!t@@@?@.Runtime_events)lifecycle@@@@@ؠ@@@A@@@C@@@D@@E@@F@@G@@H@@@S+lost_events@@@@I@!@@@J@@@K@@L@@M@@@Q@@@@N.Runtime_events)Callbacks!t@@@O@@P@@R@@T@@V@@X@@Z@@\@MN>>NW@@@@Lo@@.add_user_event@.Runtime_events$Type!t!a@O@]@@@_@@]@@@`@.Runtime_events)Timestamp!t@@@a@.Runtime_events$User!t(@@@t@+ @@@u@@v@@w@@x@@y@.Runtime_events)Callbacks!t@@@z.Runtime_events)Callbacks!t@@@{@@|@@}@@~@gDDiE;EY@@p@@@@J>f>fmF,F/@q@@@%start@6@@@;@@@@@@oF1F1oF1FI@@r@@$path@K@@@@@@@@@@@@wG6G6wG6GV@@s@@%pause@e@@@j@@@@@@{GG{GH@@t@@&resume@z@@@@@@@@@HHHH@@u@@-create_cursor@נ@ @@@@@@@@@@@@.Runtime_events&cursor@@@@@@-II.IJ @@,v@@+free_cursor@.Runtime_events&cursor@@@@@@@@@ELLFLL@@Dw@@)read_poll@.Runtime_events&cursor@@@@.Runtime_events)Callbacks!t@@@@-Z@@@@@@`@@@@@@@@@@uLLvLM@@tx@@@3 2Runtime events - ring buffer-based runtime tracing@ L This module enables users to enable and subscribe to tracing events from the Garbage Collector and other parts of the OCaml runtime. This can be useful for diagnostic or performance monitoring purposes. This module can be used to subscribe to events for the current process or external processes asynchronously.@  When enabled (either via setting the OCAML_RUNTIME_EVENTS_START environment variable or calling Runtime_events.start) a file with the pid of the process and extension .events will be created. By default this is in the current directory but can be over-ridden by the OCAML_RUNTIME_EVENTS_DIR environment variable. Each domain maintains its own ring buffer in a section of the larger file into which it emits events.@ There is additionally a set of C APIs in runtime_events.h that can enable zero-impact monitoring of the current process or bindings for other languages.@ h The runtime events system's behaviour can be controlled by the following environment variables:@ OCAML_RUNTIME_EVENTS_START if set will cause the runtime events system to be started as part of the OCaml runtime initialization.@@ OCAML_RUNTIME_EVENTS_DIR sets the directory where the runtime events ring buffers will be located. If not present the program's working directory will be used.@@ OCAML_RUNTIME_EVENTS_PRESERVE if set will prevent the OCaml runtime from removing its ring buffers when it terminates. This can help if monitoring very short running programs.@@@@@@@@@@@@@@A 1../../otherlibs/runtime_events/runtime_events.mli#>Runtime_events.runtime_counter3 The type for counter events emitted by the runtime. Counter events are used to measure a quantity at a point in time or record the occurence of an event. In the latter case their value will be one.@@@@@@@@@@@@@@@3 :Triggering of a minor collection due to a full minor heap.@@@@#5.0@@@@@@@@@3 3Triggering of a minor collection due to Array.make.@@@@#5.0@@@@@@@@@3 ;Triggering of a minor collection due to Gc.minor_heap_size.@@@@#5.0@@@@@@@@@3 ?Triggering of a minor collection during memprof young sampling.@@@@#5.3@@@@@@@@@3 STotal words promoted from the minor heap to the major in the last minor collection.@@@@#5.0@@@@@@@@@3&Total %bytes@ : allocated in the minor heap in the last minor collection.@@@@#5.0@@@@@@@ő@@3 6Major slice requested due to allocation in major heap.@@@@#5.0@@@@@@@Ǒ@@39Major slice requested by 4caml_adjust_gc_speed!.@@@@#5.0@@@@@@@ϑ@@3 ?Triggering of a minor collection due to ref table reallocation.@@@@#5.0@@@@@@@ё@@3 DTriggering of a minor collection due to ephe_ref table reallocation.@@@@#5.0@@@@@@@ӑ@@3 BTriggering of a minor collection due to custom table reallocation.@@@@#5.0@@@@@@@Ց@@3 gTotal words in a Domain's major heap pools. This is the sum of unallocated and live words in each pool.@@@@#5.1@@@@@@@ב@@3 2Current live words in a Domain's major heap pools.@@@@#5.1@@@@@@@ّ@@3 Total words of a Domain's major heap large allocations. A large allocation is an allocation larger than the largest sized pool.@@@@#5.1@@@@@@@ۑ@@3 Words in a Domain's major heap pools lost to fragmentation. This is due to there not being a pool with the exact size of an allocation and a larger sized pool needing to be used.@@@@#5.1@@@@@@@ݑ@@3 +Live blocks of a Domain's major heap pools.@@@@#5.1@@@@@@@ߑ@@3 7Live blocks of a Domain's major heap large allocations.@@@@#5.1@@@@@@@@@3 %Major heap size in words of a Domain.@@@@#5.3@@@@@@@@@3 RAllocations to the major heap of this Domain in words, since the last major slice.@@@@#5.3@@@@@@@@@3 The amount of major GC 'work' needing to be done as a result of allocations to the major heap of this Domain in words, since the last major slice.@@@@#5.3@@@@@@@@@3 The amount of major GC 'work' needing to be done as a result of dependent allocations to the major heap of this Domain in words, since the last major slice. Dependent memory is non-heap memory that depends on heap memory being collected in order to be freed.@@@@#5.3@@@@@@@@@3 The amount of major GC 'work' needing to be done as a result of extra non-memory resources that are dependent on heap memory being collected in order to be freed.@@@@#5.3@@@@@@@@@3 QThe global amount of major GC 'work' done by all domains since the program began.@@@@#5.3@@@@@@@@@3 UThe global words of major GC allocations done by all domains since the program began.@@@@#5.3@@@@@@@@@3 The target amount of global 'work' that should be done by all domains at the end of the major slice (see EV_C_MAJOR_SLICE_COUNTER).@@@@#5.3@@@@@@@@@3 DThe budget in 'work' that a domain has to do during the major slice.@@@@#5.3@@@@@@@@A@@@@#Event spanning the sweeping of ephemeron tables in a major GC.@@@@#5.0@@@@@@@$@@3 =Event spanning work done at the end of marking in a major GC.@@@@#5.0@@@@@@@&@@3 ZEvent spanning work done at the end of a major GC cycle. This includes a minor collection.@@@@#5.0@@@@@@@(@@3 SEvent spanning the change of phase in the major GC which involves a global barrier.@@@@#5.0@@@@@@@*@@3 LEvent spanning the stop-the-world phase done at the end of a major GC cycle.@@@@#5.0@@@@@@@,@@3 HEvent spanning the work done during opportunistic marking in a major GC.@@@@#5.0@@@@@@@.@@3 @Event spanning the work done during a major slice in a major GC.@@@@#5.0@@@@@@@0@@3 LEvent spanning attempts to drive all domains to the end of a major GC cycle.@@@@#5.0@@@@@@@2@@3 aEvent spanning the cleaning of the minor heap and supporting structures at the end of a minor GC.@@@@#5.0@@@@@@@4@@3 =Event spanning the promotion of finalisers during a minor GC.@@@@#5.0@@@@@@@6@@3 SEvent spanning the scanning and major allocation of global roots during a minor GC.@@@@#5.0@@@@@@@8@@3 tEvent spanning the time spent in the barrier at the end of a minor GC, waiting for all domains to finish their work.@@@@#5.0@@@@@@@:@@3 fEvent spanning the time spent waiting for all other domains to reach the stop-the-world entry barrier.@@@@#5.0@@@@@@@<@@3 xEvent spanning the time spent in the stop-the-world handler, including time spent in the stop-the-world callback itself.@@@@#5.0@@@@@@@>@@3 @Event spanning the time spent as the leader of a stop-the-world.@@@@#5.0@@@@@@@@@@3 ^Event spanning the time spent finishing sweeping when forced to as part of domain termination.@@@@#5.0@@@@@@@B@@3 SEvent spanning the time spent cleaning memprof structures at the end of a major GC.@@@@#5.3@@@@@@@D@@3 @Event spanning finalisers book-keeping at the end of a minor GC.@@@@#5.0@@@@@@@F@@3 VEvent spanning the scanning and major allocation of remembered sets during a minor GC.@@@@#5.0@@@@@@@H@@3 `Event spanning the promotion of blocks in the remembered set and global roots during a minor GC.@@@@#5.0@@@@@@@J@@3 >Event spanning the promotion of local roots during a minor GC.@@@@#5.0@@@@@@@L@@3 )Event spanning waiting in Condition.wait.@@@@#5.0@@@@@@@N@@3 \Event spanning resizing the domain heap reservation, as a result of minor heap size changes.@@@@#5.0@@@@@@@P@@3 BEvent spanning compaction of the heap during a call to Gc.compact.@@@@#5.2@@@@@@@R@@3 =Event spanning evacuating major GC pools during a compaction.@@@@#5.2@@@@@@@T@@3 jEvent spanning the walking of the heap to update changed pointers after an evacuation during a compaction.@@@@#5.2@@@@@@@V@@3 HEvent spanning releasing the evacuated pools at the end of a compaction.@@@@#5.2@@@@@@@X@@3 Event spanning a domain needing to empty its minor heap for a new allocation. This includes time spent trying to become stop-the-world leader.@@@@#5.4@@@@@@@@A@@]`@@#8Runtime_events.lifecycle3 0Lifecycle events for Runtime_events and domains.@@@@@@@@@@@@@_@@3 vEvent indicating that the Runtime_events ring buffer has been started. Includes the PID of the process as an argument.@@@@#5.0@@@@@@@a@@3 FEvent indicating that the Runtime_events ring buffer has been stopped.@@@@#5.0@@@@@@@c@@3 EEvent indicating that the Runtime_events ring buffer has been paused.@@@@#5.0@@@@@@@e@@3 FEvent indicating that the Runtime_events ring buffer has been resumed.@@@@#5.0@@@@@@@g@@3 }Event indicating that a fork has occurred and the current domain is the parent. Includes the PID of the child as an argument.@@@@#5.0@@@@@@@i@@3 NEvent indicating that a fork has occurred and the current domain is the child.@@@@#5.0@@@@@@@k@@3 gEvent indicating that a new domain has been spawned. Includes the PID of the new domain as an argument.@@@@#5.0@@@@@@@m@@3 ]Event indicating that a domain has terminated. Includes the PID of the domain as an argument.@@@@#5.0@@@@@@@@A@@ru@@=Runtime_events.lifecycle_name3 ?Return a string representation of a given lifecycle event type.@@@@@@@@@@@@u@ w@@@@k !Runtime_events.runtime_phase_name3 CReturn a string representation of a given runtime phase event type.@@@@@@@@@@@@l@m@@@@b #Runtime_events.runtime_counter_name3 ?Return a string representation of a given runtime counter type.@@@@@@@@@@@@c@d@@@@Y#5Runtime_events.cursor3 'Type of the cursor used when consuming.@@@@@@@@@@@@@@A@@[Z@@/8Runtime_events.TimestampW@A #:Runtime_events.Timestamp.t3 9Type for the int64 timestamp to allow for future changes.@@@@@@@@@@@@@@A@@^]@@ !Runtime_events.Timestamp.to_int64@Z@G[@@@@M $Runtime_events.Timestamp.get_current3 Access the current timestamp. The timestamp is incremented by one every nanosecond, but the starting point is unspecified.@@@@#5.4@@@@@@@P@XQ@@@@C@@A@@@@@@/3Runtime_events.Type=@A9#5Runtime_events.Type.t3 'The type for a user event content type.@@@@@@@@@@@@CG@@A@@?>@@8Runtime_events.Type.unit3 -An event that has no data associated with it.@@@@@@@@@@@@A@@@@3#8Runtime_events.Type.span@@-@@@'@@@@A@@$'@@8Runtime_events.Type.span3 )An event that has a beginning and an end.@@@@@@@@@@@@'@@@@7Runtime_events.Type.int3 %An event containing an integer value.@@@@@@@@@@@@@@@@ that optionally subscribes to one or more runtime events. The first int supplied to callbacks is the ring buffer index. Each domain owns a single ring buffer for the duration of the domain's existence. After a domain terminates, a newly spawned domain may take ownership of the ring buffer. A -runtime_begin callback is called when the runtime enters a new phase (e.g a runtime_begin with EV_MINOR is called at the start of a minor GC). A +runtime_end G callback is called when the runtime leaves a certain phase. The /runtime_counter D callback is called when a counter is emitted by the runtime. )lifecycle t callbacks are called when the ring undergoes a change in lifecycle and a consumer may need to respond. %alloc H callbacks are currently only called on the instrumented runtime. +lost_events f callbacks are called if the consumer code detects some unconsumed events have been overwritten.@@@@@@@@@@@@@@@@lk@A@@ @@@@@ꠕ 'Runtime_events.Callbacks.add_user_event3. When such an event happens, (callback : is called with the corresponding event and payload.@@@@@@@@@@@@@@@@@@@@@@@@@@4Runtime_events.start3(start () M will start the collection of events in the runtime if not already started.@ 4 Events can be consumed by creating a cursor with -create_cursor H and providing a set of callbacks to be called for each type of event.@@@@@@@@@@@@@@@@@3Runtime_events.path3 'If runtime events are being collected, 'path ()) returns &Some p' where !p D is a path to the runtime events file. Otherwise, it returns None.@@@@@@@@@@@@@%@@@@Ơ4Runtime_events.pause3(pause () g will pause the collection of events in the runtime. Traces are collected if the program has called 7Runtime_events.start () H or the OCAML_RUNTIME_EVENTS_START environment variable has been set.@@@@@@@@@@@@@=@@@@ɠ5Runtime_events.resume3)resume () h will resume the collection of events in the runtime. Traces are collected if the program has called 7Runtime_events.start () H or the OCAML_RUNTIME_EVENTS_START environment variable has been set.@@@@@@@@@@@@@U@@@@̠