Sorry, you need to enable JavaScript to visit this website.


The pm-graph project provides sleepgraph and bootgraph tools for system developers to visualize the activity in suspend/resume and boot, allowing them to identify inefficiencies and bottlenecks. Using the sleepgraph and bootgraph tools is an excellent way to save power in Linux* platforms, whether in mobile devices using Intel® technology or large-scale server farms. Optimizing the performance of suspend/resume has become extremely important because the more time spent entering and exiting low power modes, the less the system can be in use.


Release Date: 
Dec 27, 2020

pm-graph v5.8 - Dec 27, 2020

Updates to s2idle handling and various fixes

Important fixes:
- in s2idle, use timekeeping_freeze trace mark instead of machine_suspend
  to denote entry into s2idle mode.
- in s2idle, use machine_suspend trace mark to create a new virtual device
  called "s2idle_enter_<n>x". It denotes an s2idle_enter call loop of <n>
  iterations where s2idle was never actually achieved. It isn't counted
  as "freeze time" in the header.
- in s2idle, only show multiple freeze times if s2idle went in and out of
  resume_noirq. Otherwise multiple freezes are shown with "waking" time
  subtracted (waking time is time spent outside s2idle dealing with wakeups).
- in s2idle summaries, include "FREEZEWAKE" as an issue when at least 1ms
  is spent waking from s2idle. A clean run should only wake for the rtc timer.
- add support for device callbacks with matching names in the same phase.
  In rare cases some devices register multiple callbacks from separate
  drivers using the same name. Without this fix only one is shown.
- add kparamsfmt string back to fix bootgraph
General updates:
- when suspend_machine is missing, error says "failed in suspend_machine"
- extract target count/time and add to summary title if -multi used
- include any instances of "timeout" in dmesg as issues to be logged.
- fix ftrace parse to handle any number of flags (instead of just 4).
- remove sync/async_device string from device detail, remains in hover.
- when using callgraph (-f) add driver name to callgraph titles.
- force usage of python3 instead of using system default
- 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
- if wakeups occur in s2idle: "freeze time: N (-x ms waking y times) ms"
- change FREEZELOOP and FREEZEWAKE to S2LOOP and S2WAKE for brevity
- returns all sysfs vals to their initial state after testing
- use the dmesg log for debugging until the test is completed,
  instrument the executeSuspend process to have a full trace,
  if test completes, formal dmesg log overwrites the debug log
- fix CPU_ON and CPU_OFF devices in the timeline, should include [n]
- force usage of python3 instead of using system default