Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

improve the help for --annotate.

Update the README situation, and split out pybootchart bits.
  • Loading branch information...
commit 3e696cb8a3e45f4405816bf8f355d820fc72140e 1 parent c8ded34
Michael Meeks authored
View
9 AUTHORS
@@ -1,11 +1,10 @@
Anders Norgaard <anders.norgaard@gmail.com>
+Michael Meeks <michael.meeks@novell.com>
+Scott James Remnant <scott@ubuntu.com>
Henning Niss <henningniss@gmail.com>
-
-
Contributors:
-Brian Ewins
-
+ Brian Ewins
Based on work by:
-Ziga Mahkovec
+ Ziga Mahkovec
View
64 README
@@ -1,36 +1,50 @@
- PYBOOTCHARTGUI
- ----------------
+ bootchart2
+ ------------
-pybootchartgui is a tool for visualization and analysis of the
-GNU/Linux boot process. It renders the output of the boot-logger tool
-bootchart (see http://www.bootchart.org/) to either the screen or
-files of various formats. Bootchart collects information about the
-processes, their dependencies, and resource consumption during boot of
-a GNU/Linux system. The pybootchartgui tools visualizes the process
-tree and overall resource utilization.
+ bootchart2 was created from the fusion of three separate
+pieces of work. First - the original bootchart: a shell script, and a
+Java visualisation tool written by Ziga Mahkovec. Some of the original
+shell scripting, and the concept remain unchanged from this time.
-pybootchartgui is a port of the visualization part of bootchart from
-Java to Python and Cairo.
+ bootchart2 replaces the Java visualisation with the more
+friendly and flexible pybootchartgui (cf. README.pybootchart) written
+by Anders Norgaard and Henning Niss, this lives mostly in the
+pybootchart/ sub-directory.
-Adapted from the bootchart-documentation:
+ bootchart2 embeds a new collector, based on a port to C of the
+inner-loop of the original bootchart collector shell-script by Scott
+James Remnant. This has been subsequently re-written by Michael Meeks
+to use the higher granularity 'taskstat' data available via a twisted
+netlink interface.
- The CPU and disk statistics are used to render stacked area and line
- charts. The process information is used to create a Gantt chart
- showing process dependency, states and CPU usage.
+ Why bootchart2 ?
+ ------------------
- A typical boot sequence consists of several hundred processes. Since
- it is difficult to visualize such amount of data in a comprehensible
- way, tree pruning is utilized. Idle background processes and
- short-lived processes are removed. Similar processes running in
- parallel are also merged together.
+ There are a number of interesting additional features:
- Finally, the performance and dependency charts are rendered as a
- single image to either the screen or in PNG, PDF or SVG format.
+ * higher resolution - the taskstat interface gives nanosecond
+ timing information, where /proc/*/stat information is far,
+ far less reliable and useful.
+ * higher performance - the C re-write allows us to collect more
+ data, more quickly - sampling at ~50+Hz.
-To get help for pybootchartgui, run
+ * no Java dependency - with the visualisation in easy-to-hack
+ python, development is quicker, and dependencies more commonly
+ found.
-$ pybootchartgui --help
+ * built-in visualisation - allowing some level of interaction,
+ zoom and so on.
+ * better rendering - render to png, or svg, with added event
+ annotation support.
+
+ * and no doubt more by the time this is actually read.
+
+
+ Contributing
+ --------------
+
+ For potential future work, see the TODO, and/or mail the authors,
+all patches welcome.
-http://code.google.com/p/pybootchartgui/
View
37 README.pybootchart
@@ -0,0 +1,37 @@
+ PYBOOTCHARTGUI
+ ----------------
+
+pybootchartgui is a tool (now included as part of bootchart2) for
+visualization and analysis of the GNU/Linux boot process. It renders
+the output of the boot-logger tool bootchart (see
+http://www.bootchart.org/) to either the screen or files of various
+formats. Bootchart collects information about the processes, their
+dependencies, and resource consumption during boot of a GNU/Linux
+system. The pybootchartgui tools visualizes the process tree and
+overall resource utilization.
+
+pybootchartgui is a port of the visualization part of bootchart from
+Java to Python and Cairo.
+
+Adapted from the bootchart-documentation:
+
+ The CPU and disk statistics are used to render stacked area and line
+ charts. The process information is used to create a Gantt chart
+ showing process dependency, states and CPU usage.
+
+ A typical boot sequence consists of several hundred processes. Since
+ it is difficult to visualize such amount of data in a comprehensible
+ way, tree pruning is utilized. Idle background processes and
+ short-lived processes are removed. Similar processes running in
+ parallel are also merged together.
+
+ Finally, the performance and dependency charts are rendered as a
+ single image to either the screen or in PNG, PDF or SVG format.
+
+
+To get help for pybootchartgui, run
+
+$ pybootchartgui --help
+
+This code was originally hosted at:
+ http://code.google.com/p/pybootchartgui/
View
16 TODO
@@ -1,3 +1,7 @@
+Account for the time taken to run the bootchart-collector ...
+ + scale all other times by this ammount [!] ;-)
+ + to make it -appear- as if it doesn't impact the system :-)
+
* render I/O data backwards ... :-)
+ what steps in this data do we get ?
@@ -9,15 +13,6 @@
+ compiled in ? or on the command-line ?
+ -- <exit procs> ...
-Ensure the kernel goodness gets charted too (!?)
-
-pacct
- + deals with short lived processes that fork others
- + gets parenting correct ... [!]
- + logs -all- processes, not just some (?)
- * Just parse & read the binary Pacct files ...
- + should be good enough; for short lived foo ...
-
Test with an initrd
FIXME:
@@ -27,9 +22,6 @@ FIXME:
Graph the swap / I/O delay stuff inside the bar (?)
-Account for the time taken to run the bootchart-collector ...
- + scale all other times by this ammount [!] ;-)
- + to make it -appear- as if it doesn't impact the system :-)
Scale time discontinuously ? [ make the first seconds much longer ? ]
View
3  pybootchartgui/main.py
@@ -47,7 +47,8 @@ def _mk_options_parser():
parser.add_option("--crop-after", dest="crop_after", metavar="PROCESS", default=None,
help="crop chart when idle after PROCESS is started")
parser.add_option("--annotate", action="append", dest="annotate", metavar="PROCESS", default=None,
- help="annotate position where PROCESS is started")
+ help="annotate position where PROCESS is started; can be specified multiple times. " +
+ "To create a single annotation when any one of a set of processes is started, use commas to separate the names")
parser.add_option("--annotate-file", dest="annotate_file", metavar="FILENAME", default=None,
help="filename to write annotation points to")
return parser
View
2  pybootchartgui/parsing.py
@@ -515,6 +515,8 @@ def parse(writer, paths, prune, crop_after, annotate):
if annotate:
for procnames in annotate:
names = [x[:15] for x in procnames.split(",")]
+ for x in names:
+ print "Names: '%s'" % (x);
for proc in state.ps_stats.process_list:
if proc.cmd in names:
times.append(proc.start_time)
Please sign in to comment.
Something went wrong with that request. Please try again.