123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- .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. It graphs
- every module init call found, through both kernel and user modes. The
- timeline is split into two phases: kernel mode & user mode. kernel mode
- represents a single process run on a single cpu with serial init calls.
- Once user mode begins, the init process is called, and the init calls
- start working in parallel.
- .PP
- If no specific command is given, the tool reads the current dmesg log and
- outputs a new timeline.
- .PP
- The tool can also augment the timeline with ftrace data on custom target
- functions as well as full trace callgraphs.
- .PP
- Generates output files in subdirectory: boot-yymmdd-HHMMSS
- html timeline : <hostname>_boot.html
- raw dmesg file : <hostname>_boot_dmesg.txt
- raw ftrace file : <hostname>_boot_ftrace.txt
- .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-result \fIfile\fR
- Export a results table to a text file for parsing.
- .TP
- \fB-o \fIname\fR
- Overrides the output subdirectory name when running a new test.
- Use {date}, {time}, {hostname} for current values.
- .sp
- e.g. boot-{hostname}-{date}-{time}
- .SS "advanced"
- .TP
- \fB-f or -callgraph\fR
- Use ftrace to create initcall callgraphs (default: disabled). If -func
- is not used there will be one callgraph per initcall. This can produce
- very large outputs, i.e. 10MB - 100MB.
- .TP
- \fB-fstat\fR
- Use ftrace to add function detail (default: disabled)
- .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-cgfilter \fI"func1,func2,..."\fR
- Reduce callgraph output in the timeline by limiting it to a list of calls. The
- argument can be a single function name or a comma delimited list.
- (default: none)
- .TP
- \fB-cgskip \fIfile\fR
- Reduce callgraph output in the timeline by skipping over uninteresting
- functions in the trace, e.g. printk or console_unlock. The functions listed
- in this file will show up as empty leaves in the callgraph with only the start/end
- times displayed.
- (default: none)
- .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-func \fI"func1,func2,..."\fR
- Instead of tracing each initcall, trace a custom list of functions (default: do_one_initcall)
- .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
- .SH COMMANDS
- .SS "rebuild"
- .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).
- .SS "other"
- .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 -func argument.
- .TP
- \fB-sysinfo\fR
- Print out system info extracted from BIOS. Reads /dev/mem directly instead of going through dmidecode.
- .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 folder.
- .IP
- \f(CW$ bootgraph -addlogs -o "myboot-{date}-{time}"\fR
- .PP
- Capture a new boot timeline by automatically rebooting the machine.
- .IP
- \f(CW$ sudo bootgraph -reboot -addlogs -o "latest-{hostname)"\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 -func "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
- .SS "rebuild timeline from logs"
- .PP
- Rebuild the html from a previous run's logs, using the same options.
- .IP
- \f(CW$ bootgraph -dmesg dmesg.txt -ftrace ftrace.txt -callgraph\fR
- .PP
- Rebuild the html with different options.
- .IP
- \f(CW$ bootgraph -dmesg dmesg.txt -ftrace ftrace.txt -addlogs\fR
- .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>
|