~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/tools/power/pm-graph/sleepgraph.8

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 .TH SLEEPGRAPH 8
  2 .SH NAME
  3 sleepgraph \- Suspend/Resume timing analysis
  4 .SH SYNOPSIS
  5 .ft B
  6 .B sleepgraph
  7 .RB [ OPTIONS ]
  8 .RB [ COMMAND ]
  9 .SH DESCRIPTION
 10 \fBsleepgraph \fP is designed to assist kernel and OS developers
 11 in optimizing their linux stack's suspend/resume time. Using a kernel
 12 image built with a few extra options enabled, the tool will execute a
 13 suspend and capture dmesg and ftrace data until resume is complete.
 14 This data is transformed into a device timeline and an optional
 15 callgraph to give a detailed view of which devices/subsystems are
 16 taking the most time in suspend/resume.
 17 .PP
 18 If no specific command is given, the default behavior is to initiate
 19 a suspend/resume.
 20 .PP
 21 Generates output files in subdirectory: suspend-yymmdd-HHMMSS
 22    html timeline   :     <hostname>_<mode>.html
 23    raw dmesg file  :     <hostname>_<mode>_dmesg.txt
 24    raw ftrace file :     <hostname>_<mode>_ftrace.txt
 25 .SH OPTIONS
 26 .TP
 27 \fB-h\fR
 28 Print the help text.
 29 .TP
 30 \fB-v\fR
 31 Print the current tool version.
 32 .TP
 33 \fB-verbose\fR
 34 Print extra information during execution and analysis.
 35 .TP
 36 \fB-config \fIfile\fR
 37 Pull arguments and config options from a file.
 38 .TP
 39 \fB-m \fImode\fR
 40 Mode to initiate for suspend e.g. standby, freeze, mem (default: mem).
 41 .TP
 42 \fB-o \fIname\fR
 43 Overrides the output subdirectory name when running a new test.
 44 Use {date}, {time}, {hostname} for current values.
 45 .sp
 46 e.g. suspend-{hostname}-{date}-{time}
 47 .TP
 48 \fB-rtcwake \fIt\fR | off
 49 Use rtcwake to autoresume after \fIt\fR seconds (default: 15). Set t to "off" to
 50 disable rtcwake and require a user keypress to resume.
 51 .TP
 52 \fB-addlogs\fR
 53 Add the dmesg and ftrace logs to the html output. They will be viewable by
 54 clicking buttons in the timeline.
 55 .TP
 56 \fB-noturbostat\fR
 57 By default, if turbostat is found and the requested mode is freeze, sleepgraph
 58 will execute the suspend via turbostat and collect data in the timeline log.
 59 This option disables the use of turbostat.
 60 .TP
 61 \fB-result \fIfile\fR
 62 Export a results table to a text file for parsing.
 63 .TP
 64 \fB-sync\fR
 65 Sync the filesystems before starting the test. This reduces the size of
 66 the sys_sync call which happens in the suspend_prepare phase.
 67 .TP
 68 \fB-rs \fIenable/disable\fR
 69 During test, enable/disable runtime suspend for all devices. The test is delayed
 70 by 5 seconds to allow runtime suspend changes to occur. The settings are restored
 71 after the test is complete.
 72 .TP
 73 \fB-display \fIon/off/standby/suspend\fR
 74 Switch the display to the requested mode for the test using the xset command.
 75 This helps maintain the consistency of test data for better comparison.
 76 .TP
 77 \fB-wifi\fR
 78 If a wifi connection is available, check that it reconnects after resume. Include
 79 the reconnect time in the total resume time calculation and treat wifi timeouts
 80 as resume failures.
 81 .TP
 82 \fB-wifitrace\fR
 83 Trace through the wifi reconnect time and include it in the timeline.
 84 
 85 .SS "advanced"
 86 .TP
 87 \fB-gzip\fR
 88 Gzip the trace and dmesg logs to save space. The tool can also read in gzipped
 89 logs for processing.
 90 .TP
 91 \fB-cmd \fIstr\fR
 92 Run the timeline over a custom suspend command, e.g. pm-suspend. By default
 93 the tool forces suspend via /sys/power/state so this allows testing over
 94 an OS's official suspend method. The output file will change to
 95 hostname_command.html and will autodetect which suspend mode was triggered.
 96 .TP
 97 \fB-filter \fI"d1,d2,..."\fR
 98 Filter out all but these device callbacks. These strings can be device names
 99 or module names. e.g. 0000:00:02.0, ata5, i915, usb, etc.
100 .TP
101 \fB-mindev \fIt\fR
102 Discard all device callbacks shorter than \fIt\fR milliseconds (default: 0.0).
103 This reduces the html file size as there can be many tiny callbacks which are barely
104 visible. The value is a float: e.g. 0.001 represents 1 us.
105 .TP
106 \fB-proc\fR
107 Add usermode process info into the timeline (default: disabled).
108 .TP
109 \fB-dev\fR
110 Add kernel source calls and threads to the timeline (default: disabled).
111 .TP
112 \fB-x2\fR
113 Run two suspend/resumes back to back (default: disabled).
114 .TP
115 \fB-x2delay \fIt\fR
116 Include \fIt\fR ms delay between multiple test runs (default: 0 ms).
117 .TP
118 \fB-predelay \fIt\fR
119 Include \fIt\fR ms delay before 1st suspend (default: 0 ms).
120 .TP
121 \fB-postdelay \fIt\fR
122 Include \fIt\fR ms delay after last resume (default: 0 ms).
123 .TP
124 \fB-multi \fIn d\fR
125 Used for endurance testing. If \fIn\fR is entirely numeric, it's treated as a count:
126 Execute \fIn\fR consecutive tests at \fId\fR second intervals.
127 If \fIn\fR is an integer followed by a "d", "h", or "m", it's treated as a duration:
128 Execute tests continuously over \fIn\fR days, hours, or minutes at \fId\fR second intervals.
129 The outputs will be created in a new subdirectory, for count: suspend-{date}-{time}-xN,
130 for duration: suspend-{date}-{time}-Nm. When the multitest run is done, the \fI-summary\fR
131 command is called automatically to create summary html files for all the data (unless you
132 use \fI-skiphtml\fR). \fI-skiphtml\fR will speed up the testing by not creating timelines
133 or summary html files. You can then run the tool again at a later time with \fI-summary\fR
134 and \fI-genhtml\fR to create the timelines.
135 .TP
136 \fB-maxfail \fIn\fR
137 Abort a -multi run after \fIn\fR consecutive fails. 0 means never abort (default = 0).
138 .TP
139 \fB-skiphtml\fR
140 Run the test and capture the trace logs, but skip the timeline generation.
141 You can generate the html timelines later with \fI-dmesg\fR & \fI-ftrace\fR, or
142 by running \fI-summary\fR and \fI-genhtml\fR.
143 
144 .SS "ftrace debug"
145 .TP
146 \fB-f\fR
147 Use ftrace to create device callgraphs (default: disabled). This can produce
148 very large outputs, i.e. 10MB - 100MB.
149 .TP
150 \fB-ftop\fR
151 Use ftrace on the top level call: "suspend_devices_and_enter" only (default: disabled).
152 This option implies -f and creates a single callgraph covering all of suspend/resume.
153 .TP
154 \fB-maxdepth \fIlevel\fR
155 limit the callgraph trace depth to \fIlevel\fR (default: 0=all). This is
156 the best way to limit the output size when using callgraphs via -f.
157 .TP
158 \fB-expandcg\fR
159 pre-expand the callgraph data in the html output (default: disabled)
160 .TP
161 \fB-fadd \fIfile\fR
162 Add functions to be graphed in the timeline from a list in a text file
163 .TP
164 \fB-mincg \fIt\fR
165 Discard all callgraphs shorter than \fIt\fR milliseconds (default: 0.0).
166 This reduces the html file size as there can be many tiny callgraphs
167 which are barely visible in the timeline.
168 The value is a float: e.g. 0.001 represents 1 us.
169 .TP
170 \fB-cgfilter \fI"func1,func2,..."\fR
171 Reduce callgraph output in the timeline by limiting it certain devices. The
172 argument can be a single device name or a comma delimited list.
173 (default: none)
174 .TP
175 \fB-cgskip \fIfile\fR
176 Reduce callgraph timeline size by skipping over uninteresting functions
177 in the trace, e.g. printk or console_unlock. The functions listed
178 in this file will show up as empty leaves in the callgraph with only the start/end
179 times displayed. cgskip.txt is used automatically if found in the path, so
180 use "off" to disable completely (default: cgskip.txt)
181 .TP
182 \fB-cgphase \fIp\fR
183 Only show callgraph data for phase \fIp\fR (e.g. suspend_late).
184 .TP
185 \fB-cgtest \fIn\fR
186 In an x2 run, only show callgraph data for test \fIn\fR (e.g. 0 or 1).
187 .TP
188 \fB-timeprec \fIn\fR
189 Number of significant digits in timestamps (0:S, [3:ms], 6:us).
190 .TP
191 \fB-bufsize \fIN\fR
192 Set trace buffer size to N kilo-bytes (default: all of free memory up to 3GB)
193 
194 .SH COMMANDS
195 .TP
196 \fB-summary \fIindir\fR
197 Create a set of summary pages for all tests in \fIindir\fR recursively.
198 Creates summary.html, summary-issues.html, and summary-devices.html in the current folder.
199 summary.html is a table of tests with relevant info sorted by kernel/host/mode,
200 and links to the test html files. It identifies the minimum, maximum, and median
201 suspend and resume times for you with highlights and links in the header.
202 summary-issues.html is a list of kernel issues found in dmesg from all the tests.
203 summary-devices.html is a list of devices and times from all the tests.
204 
205 Use \fI-genhtml\fR to regenerate any tests with missing html.
206 .TP
207 \fB-genhtml\fR
208 Used with \fI-summary\fR to regenerate any missing html timelines from their
209 dmesg and ftrace logs. This will require a significant amount of time if there
210 are thousands of tests.
211 .TP
212 \fB-modes\fR
213 List available suspend modes.
214 .TP
215 \fB-status\fR
216 Test to see if the system is able to run this tool. Use this along
217 with any options you intend to use to see if they will work.
218 .TP
219 \fB-fpdt\fR
220 Print out the contents of the ACPI Firmware Performance Data Table.
221 .TP
222 \fB-wificheck\fR
223 Print out wifi status and connection details.
224 .TP
225 \fB-xon/-xoff/-xstandby/-xsuspend\fR
226 Test xset by attempting to switch the display to the given mode. This
227 is the same command which will be issued by \fB-display \fImode\fR.
228 .TP
229 \fB-xstat\fR
230 Get the current DPMS display mode.
231 .TP
232 \fB-sysinfo\fR
233 Print out system info extracted from BIOS. Reads /dev/mem directly instead of going through dmidecode.
234 .TP
235 \fB-devinfo\fR
236 Print out the pm settings of all devices which support runtime suspend.
237 .TP
238 \fB-cmdinfo\fR
239 Print out all the platform data collected from the system that makes it into the logs.
240 .TP
241 \fB-flist\fR
242 Print the list of ftrace functions currently being captured. Functions
243 that are not available as symbols in the current kernel are shown in red.
244 By default, the tool traces a list of important suspend/resume functions
245 in order to better fill out the timeline. If the user has added their own
246 with -fadd they will also be checked.
247 .TP
248 \fB-flistall\fR
249 Print all ftrace functions capable of being captured. These are all the
250 possible values you can add to trace via the -fadd argument.
251 .SS "rebuild"
252 .TP
253 \fB-ftrace \fIfile\fR
254 Create HTML output from an existing ftrace file.
255 .TP
256 \fB-dmesg \fIfile\fR
257 Create HTML output from an existing dmesg file.
258 
259 .SH EXAMPLES
260 .SS "simple commands"
261 Check which suspend modes are currently supported.
262 .IP
263 \f(CW$ sleepgraph -modes\fR
264 .PP
265 Read the Firmware Performance Data Table (FPDT)
266 .IP
267 \f(CW$ sudo sleepgraph -fpdt\fR
268 .PP
269 Print out the current USB power topology
270 .IP
271 \f(CW$ sleepgraph -usbtopo
272 .PP
273 Verify that you can run a command with a set of arguments
274 .IP
275 \f(CW$ sudo sleepgraph -f -rtcwake 30 -status
276 .PP
277 Generate a summary of all timelines in a particular folder.
278 .IP
279 \f(CW$ sleepgraph -summary ~/workspace/myresults/\fR
280 .PP
281 
282 .SS "capturing basic timelines"
283 Execute a mem suspend with a 15 second wakeup. Include the logs in the html.
284 .IP
285 \f(CW$ sudo sleepgraph -rtcwake 15 -addlogs\fR
286 .PP
287 Execute a standby with a 15 second wakeup. Change the output folder name.
288 .IP
289 \f(CW$ sudo sleepgraph -m standby -rtcwake 15 -o "standby-{host}-{date}-{time}"\fR
290 .PP
291 Execute a freeze with no wakeup (require keypress). Change output folder name.
292 .IP
293 \f(CW$ sudo sleepgraph -m freeze -rtcwake off -o "freeze-{hostname}-{date}-{time}"\fR
294 .PP
295 
296 .SS "capturing advanced timelines"
297 Execute a suspend & include dev mode source calls, limit callbacks to 5ms or larger.
298 .IP
299 \f(CW$ sudo sleepgraph -m mem -rtcwake 15 -dev -mindev 5\fR
300 .PP
301 Run two suspends back to back, include a 500ms delay before, after, and in between runs.
302 .IP
303 \f(CW$ sudo sleepgraph -m mem -rtcwake 15 -x2 -predelay 500 -x2delay 500 -postdelay 500\fR
304 .PP
305 Execute a suspend using a custom command.
306 .IP
307 \f(CW$ sudo sleepgraph -cmd "echo mem > /sys/power/state" -rtcwake 15\fR
308 .PP
309 
310 .SS "endurance testing using -multi"
311 .PP
312 Do a batch run of 10 freezes with 30 seconds delay between runs.
313 .IP
314 \f(CW$ sudo sleepgraph -m freeze -rtcwake 15 -multi 10 30\fR
315 .PP
316 Do a batch run of freezes for 24 hours.
317 .IP
318 \f(CW$ sudo sleepgraph -m freeze -rtcwake 15 -multi 24h 0\fR
319 
320 .SS "adding callgraph data"
321 Add device callgraphs. Limit the trace depth and only show callgraphs 10ms or larger.
322 .IP
323 \f(CW$ sudo sleepgraph -m mem -rtcwake 15 -f -maxdepth 5 -mincg 10\fR
324 .PP
325 Capture a full callgraph across all suspend, then filter the html by a single phase.
326 .IP
327 \f(CW$ sudo sleepgraph -m mem -rtcwake 15 -f\fR
328 .IP
329 \f(CW$ sleepgraph -dmesg host_mem_dmesg.txt -ftrace host_mem_ftrace.txt -f -cgphase resume
330 .PP
331 
332 .SS "rebuild timeline from logs"
333 .PP
334 Rebuild the html from a previous run's logs, using the same options.
335 .IP
336 \f(CW$ sleepgraph -dmesg dmesg.txt -ftrace ftrace.txt -callgraph\fR
337 .PP
338 Rebuild the html with different options.
339 .IP
340 \f(CW$ sleepgraph -dmesg dmesg.txt -ftrace ftrace.txt -addlogs -srgap\fR
341 
342 .SH "SEE ALSO"
343 dmesg(1)
344 .PP
345 .SH AUTHOR
346 .nf
347 Written by Todd Brandt <todd.e.brandt@linux.intel.com>

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php