'\" t .TH "SYSTEMD\-BOOTCHART" "1" "" "systemd 235" "systemd-bootchart" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" systemd-bootchart \- Boot performance graphing tool .SH "DESCRIPTION" .PP \fBsystemd\-bootchart\fR is a tool, usually run at system startup, that collects the CPU load, disk load, memory usage, as well as per\-process information from a running system\&. Collected results are output as an SVG graph\&. Normally, systemd\-bootchart is invoked by the kernel by passing \fBinit=\fR\fB/usr/lib/systemd/systemd\-bootchart\fR on the kernel command line, adding \fBinitcall_debug\fR to collect data on kernel init threads\&. systemd\-bootchart will then fork the real init off to resume normal system startup, while monitoring and logging startup information in the background\&. .PP After collecting a certain amount of data (usually 15\-30 seconds, default 20 s) the logging stops and a graph is generated from the logged information\&. This graph contains vital clues as to which resources are being used, in which order, and where possible problems exist in the startup sequence of the system\&. It is essentially a more detailed version of the \fBsystemd\-analyze plot\fR function\&. .PP Of course, bootchart can also be used at any moment in time to collect and graph some data for an amount of time\&. It is recommended to use the \fB\-\-rel\fR switch in this case\&. .PP Bootchart does not require root privileges, and will happily run as a normal user\&. .PP Bootchart graphs are by default written time\-stamped in /run/log and saved to the journal with \fIMESSAGE_ID=9f26aa562cf440c2b16c773d0479b518\fR\&. Journal field \fIBOOTCHART=\fR contains the bootchart in SVG format\&. .SH "INVOCATION" .PP \fBsystemd\-bootchart\fR can be invoked in several different ways: .PP \fIKernel invocation\fR .RS 4 The kernel can invoke \fBsystemd\-bootchart\fR instead of the init process\&. In turn, \fBsystemd\-bootchart\fR will invoke \fB/usr/lib/systemd/systemd\fR\&. Data will be collected on kernel init threads and also processes including the services started by systemd\&. .RE .PP \fIsystemd unit\fR .RS 4 A unit file is provided, \fBsystemd\-bootchart\&.service\fR\&. If enabled when the system starts it will collect data on processes including the services started by systemd\&. .RE .PP \fIStarted as a standalone program\fR .RS 4 One can execute \fBsystemd\-bootchart\fR as normal application from the command line\&. In this mode it is highly recommended to pass the \fB\-r\fR flag in order to not graph the time elapsed since boot and before systemd\-bootchart was started, as it may result in extremely large graphs\&. The time elapsed since boot might also include any time that the system was suspended\&. .RE .SH "OPTIONS" .PP These options can also be set in the /etc/systemd/bootchart\&.conf file\&. See \fBbootchart.conf\fR(5)\&. .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 Print a short help text and exit\&. .RE .PP \fB\-n\fR, \fB\-\-sample \fR\fB\fIN\fR\fR .RS 4 Specify the number of samples, \fIN\fR, to record\&. Samples will be recorded at intervals defined with \fB\-\-freq\fR\&. .RE .PP \fB\-f\fR, \fB\-\-freq \fR\fB\fIf\fR\fR .RS 4 Specify the sample log frequency, a positive real \fIf\fR, in Hz\&. Most systems can cope with values up to 25\-50 without creating too much overhead\&. .RE .PP \fB\-r\fR, \fB\-\-rel\fR .RS 4 Use relative times instead of absolute times\&. This is useful for using bootchart at post\-boot time to profile an already booted system\&. Without this option the graph would become extremely large\&. If set, the horizontal axis starts at the first recorded sample instead of time 0\&.0\&. .RE .PP \fB\-F\fR, \fB\-\-no\-filter\fR .RS 4 Disable filtering of tasks that did not contribute significantly to the boot\&. Processes that are too short\-lived (only seen in one sample) or that do not consume any significant CPU time (less than 0\&.001 s) will not be displayed in the output graph\&. .RE .PP \fB\-C\fR, \fB\-\-cmdline\fR .RS 4 Display the full command line with arguments of processes, instead of only the process name\&. .RE .PP \fB\-g\fR, \fB\-\-control\-group\fR .RS 4 Display process control group .RE .PP \fB\-o\fR, \fB\-\-output \fR\fB\fIpath\fR\fR .RS 4 Specify the output directory for the graphs\&. By default, bootchart writes the graphs to /run/log\&. .RE .PP \fB\-i\fR, \fB\-\-init \fR\fB\fIpath\fR\fR .RS 4 Use this init binary\&. Defaults to \fB/usr/lib/systemd/systemd\fR\&. .RE .PP \fB\-p\fR, \fB\-\-pss\fR .RS 4 Enable logging and graphing of processes\*(Aq PSS (Proportional Set Size) memory consumption\&. See filesystems/proc\&.txt in the kernel documentation for an explanation of this field\&. .RE .PP \fB\-e\fR, \fB\-\-entropy\fR .RS 4 Enable logging and graphing of the kernel random entropy pool size\&. .RE .PP \fB\-x\fR, \fB\-\-scale\-x \fR\fB\fIN\fR\fR .RS 4 Horizontal scaling factor for all variable graph components\&. .RE .PP \fB\-y\fR, \fB\-\-scale\-y \fR\fB\fIN\fR\fR .RS 4 Vertical scaling factor for all variable graph components\&. .RE .SH "OUTPUT" .PP \fBsystemd\-bootchart\fR generates SVG graphs\&. In order to render those on a graphical display any SVG capable viewer can be used\&. It should be noted that the SVG render engines in most browsers (including Chrome and Firefox) are many times faster than dedicated graphical applications like Gimp and Inkscape\&. Just point your browser at \m[blue]\fB\%file:///run/log/\fR\m[]! .SH "HISTORY" .PP This version of bootchart was implemented from scratch, but is inspired by former bootchart incantations: .PP \fIOriginal bash\fR .RS 4 The original bash/shell code implemented bootchart\&. This version created a compressed tarball for processing with external applications\&. This version did not graph anything, only generated data\&. .RE .PP \fIUbuntu C Implementation\fR .RS 4 This version replaced the shell version with a fast and efficient data logger, but also did not graph the data\&. .RE .PP \fIJava bootchart\fR .RS 4 This was the original graphing application for charting the data, written in java\&. .RE .PP \fIpybootchartgui\&.py\fR .RS 4 pybootchart created a graph from the data collected by either the bash or C version\&. .RE .PP The version of bootchart you are using now combines both the data collection and the charting into a single application, making it more efficient and simpler\&. There are no longer any timing issues with the data collector and the grapher, as the graphing cannot be run until the data has been collected\&. Also, the data kept in memory is reduced to the absolute minimum needed\&. .SH "SEE ALSO" .PP \fBbootchart.conf\fR(5) .SH "BUGS" .PP systemd\-bootchart does not get the model information for the hard drive unless the root device is specified with root=/dev/sdxY\&. Using UUIDs or PARTUUIDs will boot fine, but the hard drive model will not be added to the chart\&. .PP For bugs, please contact the author and current maintainer: .RS 4 Auke Kok .RE