Skip to content

Commit 387367a

Browse files
authored
Merge pull request #34 from talex5/missed-events
Explain what to do about lost events
2 parents d1b32f4 + e78b395 commit 387367a

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

README.md

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,13 +133,29 @@ Phases that usually involve sleeping are shown with a yellow background, but som
133133

134134
`d` is useful for getting two windows to use the same scale, so that they can be compared easily.
135135

136+
## Missed events
137+
138+
If eio-trace does not read a domain's ring buffer quickly enough then some events will be lost
139+
and you will see something like this:
140+
141+
```
142+
+Warning: ring 0 lost 94001 events
143+
```
144+
145+
This will likely result in misleading traces.
146+
There are several ways to fix this:
147+
148+
- Use e.g. `eio-trace -F 1000` to make eio-trace read the ring more frequently.
149+
- Set e.g. `OCAMLRUNPARAM=e=20` to increase the size of the rings.
150+
- If events are being lost at startup, consider adding a short sleep to the start of your program
151+
so that eio-trace has time to attach it it.
152+
136153
## Limitations
137154

138155
- OCaml 5.1 can [deadlock when tracing multiple domains](https://github.com/ocaml/ocaml/issues/12897). This was fixed in OCaml 5.2.
139156
- Events are reported per-domain, but not per-systhread.
140157
Events generated in systhreads will get mixed up and cannot be shown correctly.
141158
They will either appear attached to whatever fiber happens to be running, or shown as domain-level events.
142-
- If events are produced too fast, some will be lost. eio-trace is unlikely to handle this well.
143159
- The rendering is not optimised yet and may become quite slow on larger traces.
144160

145161
[Eio]: https://github.com/ocaml-multicore/eio

0 commit comments

Comments
 (0)