Lines Matching +full:in +full:- +full:functions
8 pm-graph: suspend/resume/boot timing analysis tools
11 …Home Page: https://www.intel.com/content/www/us/en/developer/topic-technology/open/pm-graph/overvi…
13 Report bugs/issues at bugzilla.kernel.org Tools/pm-graph
14 - https://bugzilla.kernel.org/buglist.cgi?component=pm-graph&product=Tools
16 Full documentation available online & in man pages
17 - Getting Started:
20 - Feature Summary:
21 https://www.intel.com/content/www/us/en/developer/topic-technology/open/pm-graph/features.html
23 - upstream version in git:
24 git clone https://github.com/intel/pm-graph/
27 - Overview
28 - Setup
29 - Usage
30 - Basic Usage
31 - Dev Mode Usage
32 - Proc Mode Usage
33 - Endurance Testing
34 - Usage Examples
35 - Configuration Files
36 - Usage Examples
37 - Config File Options
38 - Custom Timeline Entries
39 - Adding/Editing Timeline Functions
40 - Adding/Editing Dev Timeline Source Functions
41 - Verifying your Custom Functions
42 - Testing on consumer linux Operating Systems
43 - Android
45 ------------------------------------------------------------------
47 ------------------------------------------------------------------
49 This tool suite is designed to assist kernel and OS developers in optimizing
54 and kernel processes are taking the most time in suspend/resume & boot.
56 ------------------------------------------------------------------
58 ------------------------------------------------------------------
61 - runs with python2 or python3, choice is made by /usr/bin/python link
62 - python
63 - python-configparser (for python2 sleepgraph)
64 - python-requests (for stresstester.py)
65 - linux-tools-common (for turbostat usage in sleepgraph)
68 sudo apt-get install python python-configparser python-requests linux-tools-common
71 sudo dnf install python python-configparser python-requests linux-tools-common
75 $> git clone http://github.com/intel/pm-graph.git
76 $> cd pm-graph
92 In kernel 3.15.0, two patches were upstreamed which enable the
97 (kernel/pre-3.15/enable_trace_events_suspend_resume.patch)
98 (kernel/pre-3.15/enable_trace_events_device_pm_callback.patch)
102 (e.g. in file /etc/default/grub)
105 If you're using a kernel older than 3.11-rc2, the following simple
107 in file: kernel/power/suspend.c
108 in function: int suspend_devices_and_enter(suspend_state_t state)
113 (kernel/pre-3.11-rc2/enable_ftrace_in_suspendresume.patch)
117 ------------------------------------------------------------------
119 ------------------------------------------------------------------
128 %> sudo ./sleepgraph.py -modes
133 %> sudo ./sleepgraph.py -m mem -rtcwake 15
137 %> sudo ./sleepgraph.py -config config/suspend.cfg
140 creating the output files in the test subdir. It generates output
141 files in subdirectory: suspend-mmddyy-HHMMSS. The ftrace file can
148 View the html in firefox or chrome.
159 The tool will also expose kernel threads that don't normally show up in the
160 timeline. This is useful in discovering dependent threads to get a better
166 to set the -mindev option to clip out any device blocks that are too small
169 %> sudo ./sleepgraph.py -m mem -rtcwake 15 -mindev 1 -dev
173 %> sudo ./sleepgraph.py -config config/suspend-dev.cfg
179 Proc mode adds user process info to the timeline. This is done in a manner
184 In order to see any process info, there needs to be some delay before or
185 after resume since processes are frozen in suspend_prepare and thawed in
187 can also be useful to run in x2 mode with an x2 delay, this way you can
188 see process activity before and after resume, and in between two
193 %> sudo ./sleepgraph.py -m mem -rtcwake 15 -x2 -x2delay 1000 -predelay 1000 -postdelay 1000 -proc
197 %> sudo ./sleepgraph.py -config config/suspend-proc.cfg
199 ------------------------------------------------------------------
201 ------------------------------------------------------------------
205 accomplished with sleepgraph's -multi argument. You specify two numbers: the
206 number of tests to run OR the duration in days, hours, or minutes, and the
207 delay in seconds between them. For instance, -multi 20 5: execute 20 tests with
208 a 5 second delay between each, or -multi 24h 0: execute tests over a 24 hour
214 individual test data and a set of summary pages in the root. The summary.html
216 summary-issue.html and summary-devices.html files include data taken from
219 suspend-xN-{date}-{time}:
221 summary-issues.html
222 summary-devices.html
223 suspend-{date}-{time} (1)
224 suspend-{date}-{time} (2)
229 -m mode
232 -rtcwake t
235 -gzip (optional)
236 Gzip the trace and dmesg logs to save space. The tool can also read in
239 -dev (optional)
242 -multi n d
244 created in a new subdirectory: suspend-xN-{date}-{time}. When the multitest
245 run is done, the -summary command is called automatically to create summary
246 html files for all the data (unless you use -skiphtml). -skiphtml will
248 can then run the tool again at a later time with -summary and -genhtml to
251 -skiphtml (optional)
254 copy the data to a faster host machine and run -summary -genhtml to
259 -summary indir
260 Generate or regenerate the summary for a -multi test run. Creates three
261 files: summary.html, summary-issues.html, and summary-devices.html in the
263 by kernel/host/mode, and links to the test html files. summary-issues.html
264 is a list of kernel issues found in dmesg from all the tests.
265 summary-devices.html is a list of devices and times from all the tests.
267 -genhtml
268 Used with -summary to regenerate any missing html timelines from their
277 %> sudo ./sleepgraph.py -m mem -rtcwake 10 -dev -gzip -multi 2000 0
279 or you can skip timeline generation in order to speed things up
281 %> sudo ./sleepgraph.py -m mem -rtcwake 10 -dev -gzip -multi 2000 0 -skiphtml
285 depending on whether you used the -skiphtml option. The root folder contains
290 %> cd suspend-x2000-{date}-{time}
291 %> sleepgraph.py -summary .
293 or if you need to generate the html timelines you can use -genhtml
295 %> cd suspend-xN-{date}-{time}
296 %> sleepgraph.py -summary . -genhtml
298 ------------------------------------------------------------------
300 ------------------------------------------------------------------
302 Since 4.0 we've moved to using config files in lieu of command line options.
312 config/suspend-dev.cfg
313 config/freeze-dev.cfg
314 config/standby-dev.cfg
317 config/suspend-callgraph.cfg
318 config/freeze-callgraph.cfg
319 config/standby-callgraph.cfg
322 config/suspend-x2-proc.cfg
324 Sample for editing timeline funcs (moves internal functions into config)
325 config/custom-timeline-functions.cfg
328 config/debug-serio-suspend.cfg
335 %> sudo ./sleepgraph.py -config config/suspend.cfg
338 %> sudo ./sleepgraph.py -config config/suspend-callgraph.cfg
341 %> sudo ./sleepgraph.py -config config/suspend-dev.cfg
356 output-dir: suspend-{hostname}-{date}-{time}
364 # Sus/Res Gap: insert a gap between sus & res in the timeline (def: false)
367 # Custom Command: Command to execute in lieu of suspend (def: "")
370 # Proc mode: graph user processes and cpu usage in the timeline (def: false)
373 # Dev mode: graph source functions in the timeline (def: false)
379 # x2 Suspend Delay: time delay between the two test runs in ms (def: 0 ms)
394 # Expand Callgraph: pre-expand the callgraph treeviews in html (def: false)
400 # Timestamp Precision: number of sig digits in timestamps (0:S, [3:ms], 6:us)
407 # Do not use the internal default functions for timeline entries (def: false)
408 # Set this to true if you intend to only use the ones defined in the config
409 override-timeline-functions: true
412 # Do not use the internal default functions for dev timeline entries (def: false)
413 # Set this to true if you intend to only use the ones defined in the config
414 override-dev-timeline-functions: true
418 callloop-maxgap: 0.0001
421 # merge loops of the same call if each is less than maxlen in length (def: 5ms)
422 callloop-maxlen: 0.005
424 ------------------------------------------------------------------
426 ------------------------------------------------------------------
428 Adding or Editing Timeline Functions
431 The tool uses an array of function names to fill out empty spaces in the
432 timeline where device callbacks don't appear. For instance, in suspend_prepare
434 in the timeline to show you where the time is going. These calls should fill
438 the config. It's also possible to copy the internal timeline functions into
439 the config so that you can override and edit them. Place them in the
443 Use the override-timeline-functions option if you only want to use your
446 This section includes a list of functions (set using kprobes) which use both
452 For a full example config, see config/custom-timeline-functions.cfg. It pulls
453 all the internal timeline functions into the config and allows you to edit
470 format: The format to display the data on the timeline in. Use braces to
475 color: The color of the entry block in the timeline. The default color is
486 Here is a full example entry. It displays cpu resume calls in the timeline
487 in orange. They will appear as CPU_ON[0], CPU_ON[1], etc.
493 Adding or Editing Dev Mode Timeline Source Functions
496 In dev mode, the tool uses an array of function names to monitor source
499 The function calls are displayed inside the main device/call blocks in the
502 These asynchronous kernel threads will populate in a separate section
507 the functions that add a hardcoded time delay to the suspend/resume path.
508 The tool also includes some common functions native to important
513 functions into the config so that you can override and edit them. Place them
514 in the dev_timeline_functions_ARCH section with the name of your architecture
517 Use the override-dev-timeline-functions option if you only want to use your
521 list of functions (set using kprobes) which use both symbol data and function
527 For a full example config, see config/custom-timeline-functions.cfg. It pulls
528 all the internal dev timeline functions into the config and allows you to edit
532 ataN_port_reset in the timeline. This is where most of the SATA disk resume
539 Verifying your custom functions
542 Once you have a set of functions (kprobes) defined, it can be useful to
545 and the -status option. The tool will go through all the kprobes (both
547 to set them in ftrace. It will then print out success or fail for you.
549 Note that kprobes which don't actually exist in the kernel won't stop the
554 sudo ./sleepgraph.py -config config/custom-timeline-functions.cfg -status
586 ------------------------------------------------------------------
588 ------------------------------------------------------------------
601 host%> wget https://raw.githubusercontent.com/intel/pm-graph/master/tools/android.sh
613 kernel : 3.14.0-i386-dirty
629 ------------------------------------
631 ------------------------------------
633 kernel : 3.14.0-i386-dirty
638 ------------------------------------
641 SUSPEND START @ 21:24:02 (rtcwake in 10 seconds)
647 # reconnect sometimes in order for the connection to work post-suspend
658 host%> sleepgraph.py -ftrace ftrace.txt