etwprof is a lightweight, self-contained sampling profiler for native applications on Windows. It's based on the Event Tracing for Windows (ETW) framework.
This profiler has the following design goals:
- No installable dependencies of any sort
- Processor architecture and model independent
- It must be viable to be used as a technical support tool
Unlike Microsoft provided ETW-based performance profilers (such as xperf, Windows Performance Recorder, etc.), etwprof performs filtering, so sampled profile data relevant only to the target process is saved. This results in much smaller
.etl output files compared to other ETW-based tools.
etwprof is a command line tool. To profile an (already running) process, launch etwprof as an Administrator, and pass either the PID or the name of the executable that you'd like to profile. The following example will profile
notepad.exe, write the resulting
.etl file to the user's home folder, and will also create one minidump at the beginning:
etwprof profile -t=notepad.exe --outdir=%USERPROFILE% -m
While profiling is in progress, you should see a colorful, spinning progress indicator:
Profiling stops either when you stop it explicitly by pressing
CTRL+C, or when the target process exits.
.etl file can be opened with a tool of your choice, such as Windows Performance Analyzer. If you open the trace with WPA, there's a small quirk: CPU usage not belonging to the target process will show up attributed to "Unknown (0)". This can be worked around easily with filtering:
etwprof requires no 3rd party installations (no Visual Studio redistributable, no Windows SDK, etc.).
At least Windows 7 is required for this program to operate. On Windows 7 specifically, etwprof will not work if the system is out of date (an update package is required that was released in 2013). There are individual features that might be unavailable or limited on certain OS versions, see Limitations and known issues for details.
Only 64-bit OSes are supported at this time (profiling of 32-bit processes a.k.a. WoW64 is supported, however).
The latest version of etwprof is 0.2 (released 2019-06-30). Binary distributions are available:
More detailed documentation is available in the "Documentation" folder:
This project is released under the MIT License. Please see LICENSE.txt for details.