Linaro Logo

WindowsPerf Release 3.3.0

 Przemyslaw Wirkus

Przemyslaw Wirkus

Monday, February 5, 20243 min read

Submit

We are happy to announce the latest WindowsPerf release version 3.3.0. This major release is a continuation of WindowsPerf development effort. For previous release information check this content out.

What’s new? Addition of disassembly analysis to WindowsPerf allows developers to dive deep into the assembly-level details of their WOA aka Windows on Arm code. By examining the disassembled instructions, they can identify bottlenecks, inefficient loops, and potential optimizations.

High-lights from 3.3.0 release

Disassemble support for sampling 

The disassemble feature in wperf allows you to view the disassembly of a program’s code. This can be useful for understanding how the program works, identifying performance bottlenecks, and optimising the code. New feature has been added for sampling / record. Users can now with help of llvm-objdump emit disassembler for annotate. To use the disassemble feature, you can run the wperf command with the —disassemble option. Disassemble also implies annotate (—annotate).  See Using the disassemble option documentation for more details.

Support for double-dash — to wperf command line parser. 

Double-dash marks the end of the wperf command line option list. After double-dash, the sampled process name and its verbatim command line options should be placed. From this release we’ve added support for double-dash — to wperf.exe command line parser. Note: This change breaks the current wperf command line format! See wperf ”—” (double-dash) support documentation for more details.

Driver improvements

  • We’ve made significant improvements to WindowsPerf Kernel Driver stability:

    • Fixed issues with IOCTL input/output buffer misuse.
    • Improvements to hardware resource allocation.
  • Timeline feature can now output JSON, in addition to CSV output file.

  • We’ve fixed a memory leak inside our PDB / PE file APIs. Users who run e.g. `wperf-lib` based sampling experienced significant memory leaks.

  • We’ve improved how we detect PMU and SPE with the wperf test command. Users can now see in more detail which PMU / SPE hardware is on their ARM64 host.
    Note: we do not support SPE yet!

WindowsPerf: what’s next 

Linaro is planning to have a major release every three months with the next release 4.0.0 coming in late July-August 2024. During the time between the releases, we will be able to implement 2-3 new major features (derived from our requirements), improve documentation, extend regression testing and fix issues.

What to expect in the next releases?

  • Lock/unlock feature where WindowsPerf will exclusively use PMU resources and gracefully handle (and reject) concurrent `wperf` requests to the driver. This simple improvement will benefit those who run e.g. long lasting timelines and do not want their work to be interrupted by concurrent `wperf` calls.
  • We are working on adding support for Event Tracing for Windows (ETW) to WidnowsPerf. The integration of ETW into WindowsPerf will significantly enhance performance analysis capabilities for ARM64-based systems. WindowsPerf’s ETW integration will align with existing Windows performance analysis tools such as WPR/WPA.

Where to find us?

For source code and binary releases please visit our WindowsPerf webpage at GitLab. Additional project resources include WindowsPerf Wiki and WindowsPerf JIRA project board.

If you have any questions, issues you would like to raise please visit our WindowsPerf GitLab issue page and create a new issue with a clear description of the problem you’re facing or issue you want help with.