174 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			174 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
.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>
 |