Skip to content

handellm/IdleWakeups

 
 

Repository files navigation

IdleWakeups

IdleWakeups detects idle-wakeups in Chrome (using an ETW trace) and exports symbolized callstacks related to these wakeups into a gzip-compressed protocol buffer.

It uses the .NET TraceProcessing API to process ETW traces.

This tool was built for processing ETW traces from Chrome, so the default values of the flags are based on that use case. It uses _NT_SYMCACHE_PATH and _NT_SYMBOL_PATH for symbolizing traces if set, otherwise it uses WPA defaults.

See this blog post for details of the Trace Processor package used to drive this.

More explanations of the techniques used in this program can be found here.

The style and structure of this project is inspired by work in EtwToPprof.

Building

Build the provided Visual Studio Solution with VS 2022.

NuGet dependencies (included in solution)

Examples

Export idlewakeup callstacks found in trace.etl to specified pprof profile using default options:

IdleWakeups -o profile.pb.gz trace.etl

Export idlewakeup callstacks from all processes from 20s to 30s to default pprof profile:

IdleWakeups -p * --timeEnd 30 --timeStart 20 trace.etl

Command line flags

-o, --outputFileName    (Default: profile.pb.gz) Output file name for gzipped pprof profile.

--listProcesses         (Default: false) Whether all process names (unique) shall be printed out instead of running an analysis.

-p, --processFilter     (Default: chrome.exe) Filter for process names (comma-separated) to be included in the analysis. All processes will be analyzed if set to *.

--timeStart             Start of time range to analyze in seconds

--timeEnd               End of time range to analyze in seconds

-s, --printSummary      (Default: false) Whether a summary shall be printed after the analysis is completed.

--loadSymbols           (Default: true) Whether symbols should be loaded.

-t, --tabbed            (Default: false) Print results as a tab-separated grid.

-v, --verboseOutput     (Default: false) Set output to verbose messages.

--help                  Display this help screen.

--version               Display version information.

etlFileName (pos. 0)    Required. ETL trace file name.

Disclaimer:

This is not an officially supported Google product.

About

No description, website, or topics provided.

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 100.0%