Feature request: Graphical trace feature (patch included)
Scott James Remnant
scott at netsplit.com
Tue Jan 25 04:05:35 UTC 2011
I haven't had a chance to review the code yet, but the idea of this to
me sounds awesome and I can't wait to try it out.
On Mon, Jan 24, 2011 at 1:09 PM, Martin Lund <mgl at doredevelopment.dk> wrote:
> Attached is a patch which add a simple but powerful graphical trace feature
> to Upstart. It makes it possible to better optimize your Upstart init
> The patch basically inserts a few trace functions into Upstart which collect
> time stamp information of job state changes and emitted events. This
> information is then arranged into a trace chart and dumped into a SVG file.
> The attached SVG file is an example of such a trace dump. It shows a trace
> dump of an Ubuntu 10.10 desktop system starting. It can be viewed with just
> about any SVG viewer such as eog, display, inkscape etc..
> Quick SVG explanation:
> * X-axis: Time (monotonic)
> * Y-axis: Job name
> * Blue lines represents user emitted events.
> * Red bars represents states: PRE-STOP, STOPPING, KILLED, POST-STOP.
> * Green bars represents states: STARTING, PRE-START, SPAWNED, POST-START
> * States RUNNING and WAITING are not depicted by color.
> To enable the trace feature start the Upstart init process with the
> "--trace" parameter. After the system is finished starting simply fire the
> command "initctl trace-dump" which will tell the tracer to stop tracing and
> dump the SVG to "/tmp/upstart-trace.svg".
> Added init trace options:
> --trace - enables trace functionality
> --trace-job-state-buffer - set size of trace job state buffer (default =
> --trace-event-buffer - set size of trace event buffer (default =
> Added initctl trace commands:
> trace-stop - starts trace
> trace-start - stops trace
> trace-dump - dumps trace to /tmp/upstart-trace.svg (automatically stops
> trace-reset - resets trace data
> Why SVG?
> Answer: Its easy to generate. There is no loss of trace information as
> everything is represented by scalable vector elements. It allows viewers to
> zoom heavily into areas of interest. There are many SVG viewers available
> today and its easy to convert into beautiful bitmaps of any size.
> Why not use bootchart etc. instead?
> Answer: Don't stop using bootchart - this is not an alternative. Consider it
> a supplementary feature since the Upstart trace feature represents a
> different set of trace information. Bootchart and similar utilities does not
> relay Upstart specific information such as job state changes and emitted
> user events - this is exactly what this trace feature offers. Additionally,
> more Upstart specific information can be added in the future. It makes it
> possible to better optimize your Upstart init scripts. Also, its quite easy
> to enable and use.
> I consider the patch to be lightweight as it is only about 1100 lines of
> code. Core trace functionality is about 700 lines of code. The remaining 400
> lines of code is mostly related to the command interface and some mandatory
> DBus code.
> The patch was originally developed in a more basic form for Bang & Olufsen.
> They have successfully used it and continue to use it to optimize their
> Upstart init scripts in embedded systems. Somce then I have cleaned up and
> improved the patch a bit. It is made for Upstart 0.6.5 but it should apply
> fairly easy to newer versions as well.
> Please, try it out. Feel free to make any improvements or changes necessary.
> Consider this a feature request to have the trace feature included in
> official Upstart - our favorite init system :)
> Martin Lund
> Martin Lund, Senior Software Consultant
> DoréDevelopment ApS, Ved Stranden 1, 9560 Hadsund, DK-Denmark
> Phone: +45 61 66 83 04, Email: mgl at doredevelopment.dk
> WWW: http://www.doredevelopment.dk
> upstart-devel mailing list
> upstart-devel at lists.ubuntu.com
> Modify settings or unsubscribe at:
More information about the upstart-devel