1SYSTEMD-BOOTCHART(1) systemd-bootchart SYSTEMD-BOOTCHART(1)
2
3
4
6 systemd-bootchart - Boot performance graphing tool
7
9 systemd-bootchart is a tool, usually run at system startup, that
10 collects the CPU load, disk load, memory usage, as well as per-process
11 information from a running system. Collected results are output as an
12 SVG graph. Normally, systemd-bootchart is invoked by the kernel by
13 passing init=/usr/lib/systemd/systemd-bootchart on the kernel command
14 line, adding initcall_debug to collect data on kernel init threads.
15 systemd-bootchart will then fork the real init off to resume normal
16 system startup, while monitoring and logging startup information in the
17 background.
18
19 After collecting a certain amount of data (usually 15-30 seconds,
20 default 20 s) the logging stops and a graph is generated from the
21 logged information. This graph contains vital clues as to which
22 resources are being used, in which order, and where possible problems
23 exist in the startup sequence of the system. It is essentially a more
24 detailed version of the systemd-analyze plot function.
25
26 Of course, bootchart can also be used at any moment in time to collect
27 and graph some data for an amount of time. It is recommended to use the
28 --rel switch in this case.
29
30 Bootchart does not require root privileges, and will happily run as a
31 normal user.
32
33 Bootchart graphs are by default written time-stamped in /run/log and
34 saved to the journal with MESSAGE_ID=9f26aa562cf440c2b16c773d0479b518.
35 Journal field BOOTCHART= contains the bootchart in SVG format.
36
38 systemd-bootchart can be invoked in several different ways:
39
40 Kernel invocation
41 The kernel can invoke systemd-bootchart instead of the init
42 process. In turn, systemd-bootchart will invoke
43 /usr/lib/systemd/systemd. Data will be collected on kernel init
44 threads and also processes including the services started by
45 systemd.
46
47 systemd unit
48 A unit file is provided, systemd-bootchart.service. If enabled when
49 the system starts it will collect data on processes including the
50 services started by systemd.
51
52 Started as a standalone program
53 One can execute systemd-bootchart as normal application from the
54 command line. In this mode it is highly recommended to pass the -r
55 flag in order to not graph the time elapsed since boot and before
56 systemd-bootchart was started, as it may result in extremely large
57 graphs. The time elapsed since boot might also include any time
58 that the system was suspended.
59
61 These options can also be set in the /etc/systemd/bootchart.conf file.
62 See bootchart.conf(5).
63
64 -h, --help
65 Print a short help text and exit.
66
67 -n, --sample N
68 Specify the number of samples, N, to record. Samples will be
69 recorded at intervals defined with --freq.
70
71 -f, --freq f
72 Specify the sample log frequency, a positive real f, in Hz. Most
73 systems can cope with values up to 25-50 without creating too much
74 overhead.
75
76 -r, --rel
77 Use relative times instead of absolute times. This is useful for
78 using bootchart at post-boot time to profile an already booted
79 system. Without this option the graph would become extremely large.
80 If set, the horizontal axis starts at the first recorded sample
81 instead of time 0.0.
82
83 -F, --no-filter
84 Disable filtering of tasks that did not contribute significantly to
85 the boot. Processes that are too short-lived (only seen in one
86 sample) or that do not consume any significant CPU time (less than
87 0.001 s) will not be displayed in the output graph.
88
89 -C, --cmdline
90 Display the full command line with arguments of processes, instead
91 of only the process name.
92
93 -g, --control-group
94 Display process control group
95
96 -o, --output path
97 Specify the output directory for the graphs. By default, bootchart
98 writes the graphs to /run/log.
99
100 -i, --init path
101 Use this init binary. Defaults to /usr/lib/systemd/systemd.
102
103 -p, --pss
104 Enable logging and graphing of processes' PSS (Proportional Set
105 Size) memory consumption. See filesystems/proc.txt in the kernel
106 documentation for an explanation of this field.
107
108 -e, --entropy
109 Enable logging and graphing of the kernel random entropy pool size.
110
111 -x, --scale-x N
112 Horizontal scaling factor for all variable graph components.
113
114 -y, --scale-y N
115 Vertical scaling factor for all variable graph components.
116
118 systemd-bootchart generates SVG graphs. In order to render those on a
119 graphical display any SVG capable viewer can be used. It should be
120 noted that the SVG render engines in most browsers (including Chrome
121 and Firefox) are many times faster than dedicated graphical
122 applications like Gimp and Inkscape. Just point your browser at
123 file:///run/log/!
124
126 This version of bootchart was implemented from scratch, but is inspired
127 by former bootchart incantations:
128
129 Original bash
130 The original bash/shell code implemented bootchart. This version
131 created a compressed tarball for processing with external
132 applications. This version did not graph anything, only generated
133 data.
134
135 Ubuntu C Implementation
136 This version replaced the shell version with a fast and efficient
137 data logger, but also did not graph the data.
138
139 Java bootchart
140 This was the original graphing application for charting the data,
141 written in java.
142
143 pybootchartgui.py
144 pybootchart created a graph from the data collected by either the
145 bash or C version.
146
147 The version of bootchart you are using now combines both the data
148 collection and the charting into a single application, making it more
149 efficient and simpler. There are no longer any timing issues with the
150 data collector and the grapher, as the graphing cannot be run until the
151 data has been collected. Also, the data kept in memory is reduced to
152 the absolute minimum needed.
153
155 bootchart.conf(5)
156
158 systemd-bootchart does not get the model information for the hard drive
159 unless the root device is specified with root=/dev/sdxY. Using UUIDs or
160 PARTUUIDs will boot fine, but the hard drive model will not be added to
161 the chart.
162
163 For bugs, please contact the author and current maintainer:
164 Auke Kok <auke-jan.h.kok@intel.com>
165
166
167
168systemd 233 SYSTEMD-BOOTCHART(1)