| .TH BOOTGRAPH 8 |
| .SH NAME |
| bootgraph \- Kernel boot timing analysis |
| .SH SYNOPSIS |
| .ft B |
| .B bootgraph |
| .RB [ OPTIONS ] |
| .RB [ COMMAND ] |
| .SH DESCRIPTION |
| \fBbootgraph \fP reads the dmesg log from kernel boot and |
| creates an html representation of the initcall timeline up to the start |
| of the init process. |
| .PP |
| If no specific command is given, the tool reads the current dmesg log and |
| outputs bootgraph.html. |
| .PP |
| The tool can also augment the timeline with ftrace data on custom target |
| functions as well as full trace callgraphs. |
| .SH OPTIONS |
| .TP |
| \fB-h\fR |
| Print this help text |
| .TP |
| \fB-v\fR |
| Print the current tool version |
| .TP |
| \fB-addlogs\fR |
| Add the dmesg log to the html output. It will be viewable by |
| clicking a button in the timeline. |
| .TP |
| \fB-o \fIfile\fR |
| Override the HTML output filename (default: bootgraph.html) |
| .SS "Ftrace Debug" |
| .TP |
| \fB-f\fR |
| Use ftrace to add function detail (default: disabled) |
| .TP |
| \fB-callgraph\fR |
| Use ftrace to create initcall callgraphs (default: disabled). If -filter |
| is not used there will be one callgraph per initcall. This can produce |
| very large outputs, i.e. 10MB - 100MB. |
| .TP |
| \fB-maxdepth \fIlevel\fR |
| limit the callgraph trace depth to \fIlevel\fR (default: 2). This is |
| the best way to limit the output size when using -callgraph. |
| .TP |
| \fB-mincg \fIt\fR |
| Discard all callgraphs shorter than \fIt\fR milliseconds (default: 0=all). |
| This reduces the html file size as there can be many tiny callgraphs |
| which are barely visible in the timeline. |
| The value is a float: e.g. 0.001 represents 1 us. |
| .TP |
| \fB-timeprec \fIn\fR |
| Number of significant digits in timestamps (0:S, 3:ms, [6:us]) |
| .TP |
| \fB-expandcg\fR |
| pre-expand the callgraph data in the html output (default: disabled) |
| .TP |
| \fB-filter \fI"func1,func2,..."\fR |
| Instead of tracing each initcall, trace a custom list of functions (default: do_one_initcall) |
| |
| .SH COMMANDS |
| .TP |
| \fB-reboot\fR |
| Reboot the machine and generate a new timeline automatically. Works in 4 steps. |
| 1. updates grub with the required kernel parameters |
| 2. installs a cron job which re-runs the tool after reboot |
| 3. reboots the system |
| 4. after startup, extracts the data and generates the timeline |
| .TP |
| \fB-manual\fR |
| Show the requirements to generate a new timeline manually. Requires 3 steps. |
| 1. append the string to the kernel command line via your native boot manager. |
| 2. reboot the system |
| 3. after startup, re-run the tool with the same arguments and no command |
| .TP |
| \fB-dmesg \fIfile\fR |
| Create HTML output from an existing dmesg file. |
| .TP |
| \fB-ftrace \fIfile\fR |
| Create HTML output from an existing ftrace file (used with -dmesg). |
| .TP |
| \fB-flistall\fR |
| Print all ftrace functions capable of being captured. These are all the |
| possible values you can add to trace via the -filter argument. |
| |
| .SH EXAMPLES |
| Create a timeline using the current dmesg log. |
| .IP |
| \f(CW$ bootgraph\fR |
| .PP |
| Create a timeline using the current dmesg and ftrace log. |
| .IP |
| \f(CW$ bootgraph -callgraph\fR |
| .PP |
| Create a timeline using the current dmesg, add the log to the html and change the name. |
| .IP |
| \f(CW$ bootgraph -addlogs -o myboot.html\fR |
| .PP |
| Capture a new boot timeline by automatically rebooting the machine. |
| .IP |
| \f(CW$ sudo bootgraph -reboot -addlogs -o latestboot.html\fR |
| .PP |
| Capture a new boot timeline with function trace data. |
| .IP |
| \f(CW$ sudo bootgraph -reboot -f\fR |
| .PP |
| Capture a new boot timeline with trace & callgraph data. Skip callgraphs smaller than 5ms. |
| .IP |
| \f(CW$ sudo bootgraph -reboot -callgraph -mincg 5\fR |
| .PP |
| Capture a new boot timeline with callgraph data over custom functions. |
| .IP |
| \f(CW$ sudo bootgraph -reboot -callgraph -filter "acpi_ps_parse_aml,msleep"\fR |
| .PP |
| Capture a brand new boot timeline with manual reboot. |
| .IP |
| \f(CW$ sudo bootgraph -callgraph -manual\fR |
| .IP |
| \f(CW$ vi /etc/default/grub # add the CMDLINE string to your kernel params\fR |
| .IP |
| \f(CW$ sudo reboot # reboot the machine\fR |
| .IP |
| \f(CW$ sudo bootgraph -callgraph # re-run the tool after restart\fR |
| .PP |
| |
| .SH "SEE ALSO" |
| dmesg(1), update-grub(8), crontab(1), reboot(8) |
| .PP |
| .SH AUTHOR |
| .nf |
| Written by Todd Brandt <todd.e.brandt@linux.intel.com> |