WindowsPerf is (Linux perf
inspired) Windows on Arm performance profiling tool. Profiling is based on ARM64 PMU and its hardware counters. WindowsPerf supports the counting model for obtaining aggregate counts of occurrences of special events, and sampling model for determining the frequencies of event occurrences produced by program locations at the function, basic block, and/or instruction levels.
WindowsPerf can instrument Arm CPU performance counters. As of now, it can collect:
Currently we support:
The integration of WindowsPerf and Arm Telemetry Solution is a significant advancement in performance analysis on Windows On Arm. This integration is primarily based on PMU (Performance Monitoring Unit) events, which provide a detailed insight into the system’s performance. One of the standout features of the WindowsPerf Tool is the implementation of the Arm Topdown Methodology for μarch (microarchitecture) performance analysis. This methodology is tailored for each Arm CPU μarch. It involves the use of PMU events, metrics, and groups of metrics to provide a comprehensive analysis of the system’s performance. Furthermore, the WindowsPerf Tool is capable of platform μarchitecture detection, including Neoverse-N1, V1, and N2 CPUs.
The Arm Telemetry Solution also includes a topdown-tool that leverages the WindowsPerf as a backend for Windows On Arm. This tool applies the top-down methodology to break down CPU performance into different hierarchical levels, providing a detailed and systematic approach to performance analysis.
The topdown-tool
uses the WindowsPerf to access the PMU events and metrics on Windows On Arm, enabling it to gather and analyze performance data directly from the hardware. This integration allows the topdown-tool
to provide a comprehensive view of the system’s performance, from high-level metrics to low-level, detailed μarch events.
You can find the latest WindowsPerf installation instructions in INSTALL.md.
You can find all binary releases of WindowsPerf (wperf-driver
and wperf
application) here.
You can find the latest WindowsPerf build instructions in BUILD.md.
When contributing to this repository, please first read CONTRIBUTING.md file for more details regarding how to contribute to this project.
WindowsPerf solution contains few projects:
wperf
project.wperf-lib
.wperf-lib
.wperf-lib
.Other directories contain:
wperf
and wperf-driver
project. Mostly data structures describing IOCTRL binary protocol.
For more information regarding the project visit WindowsPerf Wiki.