arm-developer-tools / windowsperf

WindowsPerf is (Linux perf inspired) Windows on Arm performance profiling tool
BSD 3-Clause "New" or "Revised" License
10 stars 3 forks source link
arm arm64 perf performance performance-analysis performance-metrics performance-monitoring performance-optimization profiling visual-studio windows-arm windows-on-arm windowsperf woa woa64

WindowsPerf

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:

Arm Telemetry Solution Integration

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.

WindowsPerf Installation

You can find the latest WindowsPerf installation instructions in INSTALL.md.

WindowsPerf Releases

You can find all binary releases of WindowsPerf (wperf-driver and wperf application) here.

Building WindowsPerf

You can find the latest WindowsPerf build instructions in BUILD.md.

Contributing

When contributing to this repository, please first read CONTRIBUTING.md file for more details regarding how to contribute to this project.

WindowsPerf Modules

WindowsPerf solution contains few projects:

Other directories contain:

Project resources

For more information regarding the project visit WindowsPerf Wiki.

References

Blogs And Announcements

Linaro Connect (Madrid) 2024:

Arm Learning Path

Arm CPU Telemetry Solution Documentation

Arm Neoverse PMU Guides

Arm Telemetry Specifications

Other