[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[MirageOS-devel] Mirage tracing updates

To help debug a problem with TCP connections hanging [1], I've made
some improvements to the tracing system. There are new releases of
mirage-trace-viewer and mirage-profile, and updates to the Lwt tracing
branch. Here's an example trace showing the new features:


If you're using the 0install binary [2] of the trace viewer, you can
update with:

   0install update mtv

The new viewer can still read old traces, but to use some of the new
features you should "opam upgrade" to mirage-profile 0.5 and recompile
your test program.

Main new features

- If a thread is marked with the new MProf.Trace.should_resolve call,
then mark it as failed if it never resolved and set its end time to
the end of the trace to make it more visible. This makes it much
easier to find a thread when something was supposed to happen but

- If one thread attempts to read from another, but it never completes,
show a yellow arrow at the attempt to show what it's waiting for. By
following these arrows you can discover the original stuck thread.

- Double-click a thread to highlight it. This makes it easier to keep
track of it when moving around. It also highlights any thread which
this one merges into, and any threads which merge into this one,

- The metric lines are now more visible, with a black outline. No more
squinting :-)

- The GTK viewer has a right-click pop-up menu, and the HTML viewer
has a corresponding side panel that can be opened by clicking the new
hamburger icon in the bottom left.

- Display of metric lines can be toggled, either all at once by
pressing Space, or individually via the menu/panel.

- You can search for threads with a label matching some string
(keyboard short-cut: '/').

I've updated the documentation page's example using the new version:


Before, spotting the bug relied on comparing good and bad traces, but
I think you could now reasonably find the bug using just the failed
trace. I was also able to remove the apology about the unresolved
threads being hard to see.

Other changes

- Some metrics now share their scales. e.g. tcp-to-ip and
tcp-ackd-segs share a single scale. By default, the scale name is the
metric name with any trailing '#...' part removed. So, 'tx_window#445'
and 'tx_window#446' (the transmit window for two separate TCP
connections) will share the same scale.

- Trace files can now report absolute counter values, not just deltas.
Scales now always go down to zero.

- There are new callback thread types for Lwt.on_success, on_failure,
etc. Previously, events from such callbacks were shown against the
thread that registered the callback. This was confusing, and could
cause redraw glitches if that thread ended before the callback events

- You can restrict the default metrics shown when using the HTML viewer API.

- Updated opam file to use new configure option name. Reported by Luke Dunstan.

- Adapt to latest io-page (Thomas Gazagnaire).

- Install the xen plugin (Thomas Gazagnaire).

- Updated Lwt repository link in mirage-profile README. Reported by
Mindy Preston.

- Failed threads are now drawn in red.

- Positioning of metric lines was improved.

- The view no longer aborts on unknown thread types (allows upgrading
the format more easily).

[1] https://github.com/mirage/mirage-tcpip/issues/140
[2] http://talex5.github.io/mirage-trace-viewer/mtv.xml

Dr Thomas Leonard        http://roscidus.com/blog/
GPG: DA98 25AE CAD0 8975 7CDA  BD8E 0713 3F96 CA74 D8BA

MirageOS-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.