forked from Minki/linux
pm-graph v5.6
sleepgraph: - force usage of python3 instead of using system default - fix bugzilla 204773 (https://bugzilla.kernel.org/show_bug.cgi?id=204773) - fix issue of platform info not being reset in -multi (logs fill up) - change -ftop call to "pm_suspend", this is one level below state_store - add -wificheck command to read out the current wifi device details - change -wifi behavior to poll /proc/net/wireless for wifi connect - add wifi reconnect time to timeline, include time in summary column - add "fail on wifi_resume" to timeline and summary when wifi fails - add a set of commands to collect data before/after suspend in the log - add "-cmdinfo" command which prints out all the data collected - check for cmd info tools at start, print found/missing in green/red - fix kernel suspend time calculation: tool used to look for start of pm_suspend_console, but the order has changed. latest kernel starts with ksys_sync, use this instead - include time spent in mem/disk in the header (same as freeze/standby) - ignore turbostat 32-bit capability warnings - print to result.txt when -skiphtml is used, just say result: pass - don't exit on SIGTSTP, it's a ctrl-Z and the tool may come back - -multi argument supports duration as well as count: hours, minutes, seconds - update the -multi status output to be more informative - -maxfail sets maximum consecutive fails before a -multi run is aborted - in -summary, ignore dmesg/ftrace/html files that are 0 size bootgraph: - force usage of python3 instead of using system default README: - add endurance testing instructions Makefile: - remove pycache on uninstall Signed-off-by: Todd Brandt <todd.e.brandt@linux.intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
ae83d0b416
commit
2c9a583be1
@ -41,6 +41,10 @@ uninstall :
|
||||
if [ -d $(DESTDIR)$(PREFIX)/lib/pm-graph/config ] ; then \
|
||||
rmdir $(DESTDIR)$(PREFIX)/lib/pm-graph/config; \
|
||||
fi;
|
||||
rm -f $(DESTDIR)$(PREFIX)/lib/pm-graph/__pycache__/*
|
||||
if [ -d $(DESTDIR)$(PREFIX)/lib/pm-graph/__pycache__ ] ; then \
|
||||
rmdir $(DESTDIR)$(PREFIX)/lib/pm-graph/__pycache__; \
|
||||
fi;
|
||||
rm -f $(DESTDIR)$(PREFIX)/lib/pm-graph/*
|
||||
if [ -d $(DESTDIR)$(PREFIX)/lib/pm-graph ] ; then \
|
||||
rmdir $(DESTDIR)$(PREFIX)/lib/pm-graph; \
|
||||
|
@ -1,7 +1,12 @@
|
||||
p m - g r a p h
|
||||
_
|
||||
_ __ _ __ ___ __ _ _ __ __ _ _ __ | |__
|
||||
| '_ \| '_ ` _ \ _____ / _` | '__/ _` | '_ \| '_ \
|
||||
| |_) | | | | | |_____| (_| | | | (_| | |_) | | | |
|
||||
| .__/|_| |_| |_| \__, |_| \__,_| .__/|_| |_|
|
||||
|_| |___/ |_|
|
||||
|
||||
pm-graph: suspend/resume/boot timing analysis tools
|
||||
Version: 5.5
|
||||
Version: 5.6
|
||||
Author: Todd Brandt <todd.e.brandt@intel.com>
|
||||
Home Page: https://01.org/pm-graph
|
||||
|
||||
@ -18,10 +23,6 @@
|
||||
- upstream version in git:
|
||||
https://github.com/intel/pm-graph/
|
||||
|
||||
Requirements:
|
||||
- runs with python2 or python3, choice is made by /usr/bin/python link
|
||||
- python2 now requires python-configparser be installed
|
||||
|
||||
Table of Contents
|
||||
- Overview
|
||||
- Setup
|
||||
@ -29,6 +30,8 @@
|
||||
- Basic Usage
|
||||
- Dev Mode Usage
|
||||
- Proc Mode Usage
|
||||
- Endurance Testing
|
||||
- Usage Examples
|
||||
- Configuration Files
|
||||
- Usage Examples
|
||||
- Config File Options
|
||||
@ -54,15 +57,18 @@
|
||||
| SETUP |
|
||||
------------------------------------------------------------------
|
||||
|
||||
These packages are required to execute the scripts
|
||||
Package Requirements
|
||||
- runs with python2 or python3, choice is made by /usr/bin/python link
|
||||
- python
|
||||
- python-requests
|
||||
- python-configparser (for python2 sleepgraph)
|
||||
- python-requests (for googlesheet.py)
|
||||
- linux-tools-common (for turbostat usage in sleepgraph)
|
||||
|
||||
Ubuntu:
|
||||
sudo apt-get install python python-requests
|
||||
sudo apt-get install python python-configparser python-requests linux-tools-common
|
||||
|
||||
Fedora:
|
||||
sudo dnf install python python-requests
|
||||
sudo dnf install python python-configparser python-requests linux-tools-common
|
||||
|
||||
The tools can most easily be installed via git clone and make install
|
||||
|
||||
@ -190,6 +196,104 @@ _______________
|
||||
|
||||
%> sudo ./sleepgraph.py -config config/suspend-proc.cfg
|
||||
|
||||
------------------------------------------------------------------
|
||||
| ENDURANCE TESTING |
|
||||
------------------------------------------------------------------
|
||||
|
||||
The best way to gauge the health of a system is to run a series of
|
||||
suspend/resumes over an extended period and analyze the behavior. This can be
|
||||
accomplished with sleepgraph's -multi argument. You specify two numbers: the
|
||||
number of tests to run OR the duration in days, hours, or minutes, and the
|
||||
delay in seconds between them. For instance, -multi 20 5: execute 20 tests with
|
||||
a 5 second delay between each, or -multi 24h 0: execute tests over a 24 hour
|
||||
period with no delay between tests. You can include any other options you like
|
||||
to generate the data you want. It's most useful to collect dev mode timelines
|
||||
as the kprobes don't alter the performance much and you get more insight.
|
||||
|
||||
On completion, the output folder contains a series of folders for the
|
||||
individual test data and a set of summary pages in the root. The summary.html
|
||||
file is a tabular list of the tests with relevant info and links. The
|
||||
summary-issue.html and summary-devices.html files include data taken from
|
||||
all tests on kernel issues and device performance. The folder looks like this:
|
||||
|
||||
suspend-xN-{date}-{time}:
|
||||
summary.html
|
||||
summary-issues.html
|
||||
summary-devices.html
|
||||
suspend-{date}-{time} (1)
|
||||
suspend-{date}-{time} (2)
|
||||
...
|
||||
|
||||
These are the relevant arguments to use for testing:
|
||||
|
||||
-m mode
|
||||
Mode to initiate for suspend e.g. mem, freeze, standby (default: mem).
|
||||
|
||||
-rtcwake t
|
||||
Use rtcwake to autoresume after t seconds (default: 15).
|
||||
|
||||
-gzip (optional)
|
||||
Gzip the trace and dmesg logs to save space. The tool can also read in
|
||||
gzipped logs for processing. This reduces the multitest folder size.
|
||||
|
||||
-dev (optional)
|
||||
Add kernel source calls and threads to the timeline (default: disabled).
|
||||
|
||||
-multi n d
|
||||
Execute n consecutive tests at d seconds intervals. The outputs will be
|
||||
created in a new subdirectory: suspend-xN-{date}-{time}. When the multitest
|
||||
run is done, the -summary command is called automatically to create summary
|
||||
html files for all the data (unless you use -skiphtml). -skiphtml will
|
||||
speed up the testing by not creating timelines or summary html files. You
|
||||
can then run the tool again at a later time with -summary and -genhtml to
|
||||
create the timelines.
|
||||
|
||||
-skiphtml (optional)
|
||||
Run the test and capture the trace logs, but skip the timeline and summary
|
||||
html generation. This can greatly speed up overall testing. You can then
|
||||
copy the data to a faster host machine and run -summary -genhtml to
|
||||
generate the timelines and summary.
|
||||
|
||||
These are the relevant commands to use after testing is complete:
|
||||
|
||||
-summary indir
|
||||
Generate or regenerate the summary for a -multi test run. Creates three
|
||||
files: summary.html, summary-issues.html, and summary-devices.html in the
|
||||
current folder. summary.html is a table of tests with relevant info sorted
|
||||
by kernel/host/mode, and links to the test html files. summary-issues.html
|
||||
is a list of kernel issues found in dmesg from all the tests.
|
||||
summary-devices.html is a list of devices and times from all the tests.
|
||||
|
||||
-genhtml
|
||||
Used with -summary to regenerate any missing html timelines from their
|
||||
dmesg and ftrace logs. This will require a significant amount of time if
|
||||
there are thousands of tests.
|
||||
|
||||
Usage Examples
|
||||
_______________
|
||||
|
||||
A multitest is initiated like this:
|
||||
|
||||
%> sudo ./sleepgraph.py -m mem -rtcwake 10 -dev -gzip -multi 2000 0
|
||||
|
||||
or you can skip timeline generation in order to speed things up
|
||||
|
||||
%> sudo ./sleepgraph.py -m mem -rtcwake 10 -dev -gzip -multi 2000 0 -skiphtml
|
||||
|
||||
The tool will produce an output folder with all the test subfolders inside.
|
||||
Each test subfolder contains the dmesg/ftrace logs and/or the html timeline
|
||||
depending on whether you used the -skiphtml option. The root folder contains
|
||||
the summary.html files.
|
||||
|
||||
The summary for an existing multitest is generated like this:
|
||||
|
||||
%> cd suspend-x2000-{date}-{time}
|
||||
%> sleepgraph.py -summary .
|
||||
|
||||
or if you need to generate the html timelines you can use -genhtml
|
||||
|
||||
%> cd suspend-xN-{date}-{time}
|
||||
%> sleepgraph.py -summary . -genhtml
|
||||
|
||||
------------------------------------------------------------------
|
||||
| CONFIGURATION FILES |
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/usr/bin/python
|
||||
#!/usr/bin/env python3
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
#
|
||||
# Tool for analyzing boot timing
|
||||
|
@ -74,8 +74,10 @@ after the test is complete.
|
||||
Switch the display to the requested mode for the test using the xset command.
|
||||
This helps maintain the consistency of test data for better comparison.
|
||||
.TP
|
||||
\fB-skiphtml\fR
|
||||
Run the test and capture the trace logs, but skip the timeline generation.
|
||||
\fB-wifi\fR
|
||||
If a wifi connection is available, check that it reconnects after resume. Include
|
||||
the reconnect time in the total resume time calculation and treat wifi timeouts
|
||||
as resume failures.
|
||||
|
||||
.SS "advanced"
|
||||
.TP
|
||||
@ -117,8 +119,24 @@ Include \fIt\fR ms delay before 1st suspend (default: 0 ms).
|
||||
Include \fIt\fR ms delay after last resume (default: 0 ms).
|
||||
.TP
|
||||
\fB-multi \fIn d\fR
|
||||
Execute \fIn\fR consecutive tests at \fId\fR seconds intervals. The outputs will
|
||||
be created in a new subdirectory with a summary page: suspend-xN-{date}-{time}.
|
||||
Used for endurance testing. If \fIn\fR is entirely numeric, it's treated as a count:
|
||||
Execute \fIn\fR consecutive tests at \fId\fR second intervals.
|
||||
If \fIn\fR is an integer followed by a "d", "h", or "m", it's treated as a duration:
|
||||
Execute tests continuously over \fIn\fR days, hours, or minutes at \fId\fR second intervals.
|
||||
The outputs will be created in a new subdirectory, for count: suspend-{date}-{time}-xN,
|
||||
for duration: suspend-{date}-{time}-Nm. When the multitest run is done, the \fI-summary\fR
|
||||
command is called automatically to create summary html files for all the data (unless you
|
||||
use \fI-skiphtml\fR). \fI-skiphtml\fR will speed up the testing by not creating timelines
|
||||
or summary html files. You can then run the tool again at a later time with \fI-summary\fR
|
||||
and \fI-genhtml\fR to create the timelines.
|
||||
.TP
|
||||
\fB-maxfail \fIn\fR
|
||||
Abort a -multi run after \fIn\fR consecutive fails. 0 means never abort (default = 0).
|
||||
.TP
|
||||
\fB-skiphtml\fR
|
||||
Run the test and capture the trace logs, but skip the timeline generation.
|
||||
You can generate the html timelines later with \fI-dmesg\fR & \fI-ftrace\fR, or
|
||||
by running \fI-summary\fR and \fI-genhtml\fR.
|
||||
|
||||
.SS "ftrace debug"
|
||||
.TP
|
||||
@ -173,11 +191,20 @@ Set trace buffer size to N kilo-bytes (default: all of free memory up to 3GB)
|
||||
.SH COMMANDS
|
||||
.TP
|
||||
\fB-summary \fIindir\fR
|
||||
Create a summary page of all tests in \fIindir\fR. Creates summary.html
|
||||
in the current folder. The output page is a table of tests with
|
||||
suspend and resume values sorted by suspend mode, host, and kernel.
|
||||
Includes test averages by mode and links to the test html files.
|
||||
Use -genhtml to include tests with missing html.
|
||||
Create a set of summary pages for all tests in \fIindir\fR recursively.
|
||||
Creates summary.html, summary-issues.html, and summary-devices.html in the current folder.
|
||||
summary.html is a table of tests with relevant info sorted by kernel/host/mode,
|
||||
and links to the test html files. It identifies the minimum, maximum, and median
|
||||
suspend and resume times for you with highlights and links in the header.
|
||||
summary-issues.html is a list of kernel issues found in dmesg from all the tests.
|
||||
summary-devices.html is a list of devices and times from all the tests.
|
||||
|
||||
Use \fI-genhtml\fR to regenerate any tests with missing html.
|
||||
.TP
|
||||
\fB-genhtml\fR
|
||||
Used with \fI-summary\fR to regenerate any missing html timelines from their
|
||||
dmesg and ftrace logs. This will require a significant amount of time if there
|
||||
are thousands of tests.
|
||||
.TP
|
||||
\fB-modes\fR
|
||||
List available suspend modes.
|
||||
@ -189,10 +216,7 @@ with any options you intend to use to see if they will work.
|
||||
\fB-fpdt\fR
|
||||
Print out the contents of the ACPI Firmware Performance Data Table.
|
||||
.TP
|
||||
\fB-battery\fR
|
||||
Print out battery status and current charge.
|
||||
.TP
|
||||
\fB-wifi\fR
|
||||
\fB-wificheck\fR
|
||||
Print out wifi status and connection details.
|
||||
.TP
|
||||
\fB-xon/-xoff/-xstandby/-xsuspend\fR
|
||||
@ -208,6 +232,9 @@ Print out system info extracted from BIOS. Reads /dev/mem directly instead of go
|
||||
\fB-devinfo\fR
|
||||
Print out the pm settings of all devices which support runtime suspend.
|
||||
.TP
|
||||
\fB-cmdinfo\fR
|
||||
Print out all the platform data collected from the system that makes it into the logs.
|
||||
.TP
|
||||
\fB-flist\fR
|
||||
Print the list of ftrace functions currently being captured. Functions
|
||||
that are not available as symbols in the current kernel are shown in red.
|
||||
@ -272,15 +299,21 @@ Run two suspends back to back, include a 500ms delay before, after, and in betwe
|
||||
.IP
|
||||
\f(CW$ sudo sleepgraph -m mem -rtcwake 15 -x2 -predelay 500 -x2delay 500 -postdelay 500\fR
|
||||
.PP
|
||||
Do a batch run of 10 freezes with 30 seconds delay between runs.
|
||||
.IP
|
||||
\f(CW$ sudo sleepgraph -m freeze -rtcwake 15 -multi 10 30\fR
|
||||
.PP
|
||||
Execute a suspend using a custom command.
|
||||
.IP
|
||||
\f(CW$ sudo sleepgraph -cmd "echo mem > /sys/power/state" -rtcwake 15\fR
|
||||
.PP
|
||||
|
||||
.SS "endurance testing using -multi"
|
||||
.PP
|
||||
Do a batch run of 10 freezes with 30 seconds delay between runs.
|
||||
.IP
|
||||
\f(CW$ sudo sleepgraph -m freeze -rtcwake 15 -multi 10 30\fR
|
||||
.PP
|
||||
Do a batch run of freezes for 24 hours.
|
||||
.IP
|
||||
\f(CW$ sudo sleepgraph -m freeze -rtcwake 15 -multi 24h 0\fR
|
||||
|
||||
.SS "adding callgraph data"
|
||||
Add device callgraphs. Limit the trace depth and only show callgraphs 10ms or larger.
|
||||
.IP
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user