cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

bootgraph.8 (5682B)


      1.TH BOOTGRAPH 8
      2.SH NAME
      3bootgraph \- Kernel boot timing analysis
      4.SH SYNOPSIS
      5.ft B
      6.B bootgraph
      7.RB [ OPTIONS ]
      8.RB [ COMMAND ]
      9.SH DESCRIPTION
     10\fBbootgraph \fP reads the dmesg log from kernel boot and
     11creates an html representation of the initcall timeline. It graphs
     12every module init call found, through both kernel and user modes. The
     13timeline is split into two phases: kernel mode & user mode. kernel mode
     14represents a single process run on a single cpu with serial init calls.
     15Once user mode begins, the init process is called, and the init calls
     16start working in parallel.
     17.PP
     18If no specific command is given, the tool reads the current dmesg log and
     19outputs a new timeline.
     20.PP
     21The tool can also augment the timeline with ftrace data on custom target
     22functions as well as full trace callgraphs.
     23.PP
     24Generates output files in subdirectory: boot-yymmdd-HHMMSS
     25   html timeline   :     <hostname>_boot.html
     26   raw dmesg file  :     <hostname>_boot_dmesg.txt
     27   raw ftrace file :     <hostname>_boot_ftrace.txt
     28.SH OPTIONS
     29.TP
     30\fB-h\fR
     31Print this help text
     32.TP
     33\fB-v\fR
     34Print the current tool version
     35.TP
     36\fB-addlogs\fR
     37Add the dmesg log to the html output. It will be viewable by
     38clicking a button in the timeline.
     39.TP
     40\fB-result \fIfile\fR
     41Export a results table to a text file for parsing.
     42.TP
     43\fB-o \fIname\fR
     44Overrides the output subdirectory name when running a new test.
     45Use {date}, {time}, {hostname} for current values.
     46.sp
     47e.g. boot-{hostname}-{date}-{time}
     48.SS "advanced"
     49.TP
     50\fB-f or -callgraph\fR
     51Use ftrace to create initcall callgraphs (default: disabled). If -func
     52is not used there will be one callgraph per initcall. This can produce
     53very large outputs, i.e. 10MB - 100MB.
     54.TP
     55\fB-fstat\fR
     56Use ftrace to add function detail (default: disabled)
     57.TP
     58\fB-maxdepth \fIlevel\fR
     59limit the callgraph trace depth to \fIlevel\fR (default: 2). This is
     60the best way to limit the output size when using -callgraph.
     61.TP
     62\fB-mincg \fIt\fR
     63Discard all callgraphs shorter than \fIt\fR milliseconds (default: 0=all).
     64This reduces the html file size as there can be many tiny callgraphs
     65which are barely visible in the timeline.
     66The value is a float: e.g. 0.001 represents 1 us.
     67.TP
     68\fB-cgfilter \fI"func1,func2,..."\fR
     69Reduce callgraph output in the timeline by limiting it to a list of calls. The
     70argument can be a single function name or a comma delimited list.
     71(default: none)
     72.TP
     73\fB-cgskip \fIfile\fR
     74Reduce callgraph output in the timeline by skipping over uninteresting
     75functions in the trace, e.g. printk or console_unlock. The functions listed
     76in this file will show up as empty leaves in the callgraph with only the start/end
     77times displayed.
     78(default: none)
     79.TP
     80\fB-timeprec \fIn\fR
     81Number of significant digits in timestamps (0:S, 3:ms, [6:us])
     82.TP
     83\fB-expandcg\fR
     84pre-expand the callgraph data in the html output (default: disabled)
     85.TP
     86\fB-func \fI"func1,func2,..."\fR
     87Instead of tracing each initcall, trace a custom list of functions (default: do_one_initcall)
     88.TP
     89\fB-reboot\fR
     90Reboot the machine and generate a new timeline automatically. Works in 4 steps.
     91  1. updates grub with the required kernel parameters
     92  2. installs a cron job which re-runs the tool after reboot
     93  3. reboots the system
     94  4. after startup, extracts the data and generates the timeline
     95.TP
     96\fB-manual\fR
     97Show the requirements to generate a new timeline manually. Requires 3 steps.
     98  1. append the string to the kernel command line via your native boot manager.
     99  2. reboot the system
    100  3. after startup, re-run the tool with the same arguments and no command
    101
    102.SH COMMANDS
    103.SS "rebuild"
    104.TP
    105\fB-dmesg \fIfile\fR
    106Create HTML output from an existing dmesg file.
    107.TP
    108\fB-ftrace \fIfile\fR
    109Create HTML output from an existing ftrace file (used with -dmesg).
    110.SS "other"
    111.TP
    112\fB-flistall\fR
    113Print all ftrace functions capable of being captured. These are all the
    114possible values you can add to trace via the -func argument.
    115.TP
    116\fB-sysinfo\fR
    117Print out system info extracted from BIOS. Reads /dev/mem directly instead of going through dmidecode.
    118
    119.SH EXAMPLES
    120Create a timeline using the current dmesg log.
    121.IP
    122\f(CW$ bootgraph\fR
    123.PP
    124Create a timeline using the current dmesg and ftrace log.
    125.IP
    126\f(CW$ bootgraph -callgraph\fR
    127.PP
    128Create a timeline using the current dmesg, add the log to the html and change the folder.
    129.IP
    130\f(CW$ bootgraph -addlogs -o "myboot-{date}-{time}"\fR
    131.PP
    132Capture a new boot timeline by automatically rebooting the machine.
    133.IP
    134\f(CW$ sudo bootgraph -reboot -addlogs -o "latest-{hostname)"\fR
    135.PP
    136Capture a new boot timeline with function trace data.
    137.IP
    138\f(CW$ sudo bootgraph -reboot -f\fR
    139.PP
    140Capture a new boot timeline with trace & callgraph data. Skip callgraphs smaller than 5ms.
    141.IP
    142\f(CW$ sudo bootgraph -reboot -callgraph -mincg 5\fR
    143.PP
    144Capture a new boot timeline with callgraph data over custom functions.
    145.IP
    146\f(CW$ sudo bootgraph -reboot -callgraph -func "acpi_ps_parse_aml,msleep"\fR
    147.PP
    148Capture a brand new boot timeline with manual reboot.
    149.IP
    150\f(CW$ sudo bootgraph -callgraph -manual\fR
    151.IP
    152\f(CW$ vi /etc/default/grub      # add the CMDLINE string to your kernel params\fR
    153.IP
    154\f(CW$ sudo reboot               # reboot the machine\fR
    155.IP
    156\f(CW$ sudo bootgraph -callgraph # re-run the tool after restart\fR
    157.PP
    158.SS "rebuild timeline from logs"
    159.PP
    160Rebuild the html from a previous run's logs, using the same options.
    161.IP
    162\f(CW$ bootgraph -dmesg dmesg.txt -ftrace ftrace.txt -callgraph\fR
    163.PP
    164Rebuild the html with different options.
    165.IP
    166\f(CW$ bootgraph -dmesg dmesg.txt -ftrace ftrace.txt -addlogs\fR
    167
    168.SH "SEE ALSO"
    169dmesg(1), update-grub(8), crontab(1), reboot(8)
    170.PP
    171.SH AUTHOR
    172.nf
    173Written by Todd Brandt <todd.e.brandt@linux.intel.com>