ethercrow / opentelemetry-haskell

The OpenTelemetry Haskell Client https://opentelemetry.io
Other
65 stars 6 forks source link

Populate tid field with the capability instead of the thread #48

Closed pepeiborra closed 3 years ago

pepeiborra commented 3 years ago

Chrome traces do not collapse threads, unlike Tracy visualisations. This is not a good fit for Haskell programs, which tend to create new threads rather than reuse existing threads, and leads to very jagged traces like the one below (from HLS):

image

Instead of thread ids, I wonder if we can put capability ids in the tid field? This would allow for collapsing while preserving the timestamp restriction (see #47), and hopefully result in much more readable traces.

ethercrow commented 3 years ago

Hi Pepe!

Collapsing by capability would be somewhat misleading because a thread could start on one capability, then be suspended, run for some time on another, and maybe even finish on a third one. There would be no faithful way to assign it to only a single capability.

You reminded me that I started implementing an alternative approach proposed by @expipiplus1 in https://github.com/ethercrow/opentelemetry-haskell/issues/40. I'm sorry I completely forgot about it 🤦 . I'll try to get to it on the weekend.