Skip to content

Commit 50d6be1

Browse files
author
Your Name
committed
Merge remote-tracking branch 'upstream/main'
2 parents 96fe376 + ebbb191 commit 50d6be1

File tree

10 files changed

+165
-44
lines changed

10 files changed

+165
-44
lines changed

content/install-guides/windows-perf-wpa-plugin.md

Lines changed: 31 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
### Title the install tools article with the name of the tool to be installed
33
### Include vendor name where appropriate
4-
title: Windows Performance Analyzer (WPA) Plugin
4+
title: Windows Performance Analyzer (WPA) plugin
55
minutes_to_complete: 15
66

77
official_docs: https://github.com/arm-developer-tools/windowsperf-wpa-plugin
@@ -29,37 +29,40 @@ layout: installtoolsall # DO NOT MODIFY. Always true for tool install articles
2929

3030
## What is the Windows Performance Analyzer plugin?
3131

32-
The Windows Performance Analyzer plugin connects Windows Perf to the Windows Performance Analyzer (WPA).
32+
The Windows Performance Analyzer (WPA) plugin connects [Windows Perf](/learning-paths/laptops-and-desktops/windowsperf/) to the Windows Performance Analyzer. Windows Perf is a lightweight performance profiling tool inspired by Linux Perf and designed for Windows on Arm.
3333

34-
[WindowsPerf](https://github.com/arm-developer-tools/windowsperf) is a lightweight performance profiling tool inspired by Linux Perf and designed for Windows on Arm.
34+
Windows Performance Analyzer is a useful tool that supports developers with diagnostics and performance tuning. It generates data tables and graphs of Event Tracing for Windows (ETW) events, which are recorded in one of three ways:
35+
- Windows Performance Recorder (WPR)
36+
- Xperf
37+
- or through an assessment that's run in the Assessment Platform.
38+
39+
WPA can open event trace log (ETL) files, which you can use for analysis.
3540

36-
Windows Performance Analyzer (WPA) is a tool that creates graphs and data tables of Event Tracing for Windows (ETW) events that are recorded by Windows Performance Recorder (WPR), Xperf, or an assessment that is run in the Assessment Platform. WPA opens event trace log (ETL) files for analysis.
37-
38-
The WPA plugin is built using the [Microsoft Performance Toolkit SDK](https://github.com/microsoft/microsoft-performance-toolkit-sdk), a collection of tools to create and extend performance analysis applications. The plugin parses json output from WidowsPerf so that it can be visualized in WPA.
41+
The WPA plugin is built using the [Microsoft Performance Toolkit SDK](https://github.com/microsoft/microsoft-performance-toolkit-sdk), a collection of tools to create and extend performance analysis applications. The plugin parses JSON output from Windows Perf so that it can be visualized in WPA.
3942

4043
## What are some of the features of the WPA plugin?
4144

42-
The WindowsPerf GUI extension is composed of several key features, each designed to streamline the user experience:
45+
The WindowsPerf GUI extension includes features, which are designed to streamline the user experience:
4346

44-
### What is the timeline view?
47+
### Timeline view
4548

46-
The timeline view visualizes the `wperf stat` timeline data plotted by event group.
49+
The timeline view visualizes the `wperf stat` timeline data plotted by event group:
4750

4851
![Timeline By Core Table](/install-guides/_images/wpa-timeline-by-core.png)
4952

50-
### What is the telemetry view?
53+
### Telemetry view
5154

52-
The telemetry view displays telemetry events grouped by unit.
55+
The telemetry view displays telemetry events grouped by unit:
5356

5457
![Telemetry Table](/install-guides/_images/wpa-telemetry-table.png)
5558

5659
## How do I install the WPA plugin?
5760

58-
Before using the WPA plugin, make sure you have installed WPA.
61+
Before installing the plugin, you need to make sure you have installed WPA:
5962

60-
### Windows Performance Analyzer
63+
### Install WPA
6164

62-
WPA is included in the Windows Assessment and Deployment Kit (Windows ADK) that can be downloaded from [Microsoft](https://go.microsoft.com/fwlink/?linkid=2243390).
65+
WPA is included in the Windows Assessment and Deployment Kit (Windows ADK), which you can download from [Microsoft](https://go.microsoft.com/fwlink/?linkid=2243390).
6366

6467
{{% notice Note %}}
6568
The WPA plugin requires WPA version `11.0.7.2` or higher.
@@ -69,46 +72,46 @@ Run the downloaded `adksetup.exe` program.
6972

7073
Specify the default installation location and accept the license agreement.
7174

72-
Make sure that "Windows Performance Toolkit" is checked under "Select the features you want to install".
75+
Make sure that **Windows Performance Toolkit** is checked under **Select the features you want to install**.
7376

7477
![WPA Installation](/install-guides/_images/wpa-installation.png)
7578

76-
Finally, click Install.
79+
Finally, click **Install**.
7780

78-
### Windows Performance Analyzer plugin
81+
### Install the WPA plugin
7982

80-
The plugin is a single `.dll` file.
83+
Now you're ready to install the plugin, which is a single `.dll` file.
8184

82-
Download a `.zip` file from the [GitHub releases page](https://github.com/arm-developer-tools/windowsperf-wpa-plugin/releases).
85+
Download the `.zip` file from the [Windows Perf WPA plugin GitHub releases page](https://github.com/arm-developer-tools/windowsperf-wpa-plugin/releases) on GitHub.
8386

84-
To download the latest version from the command prompt:
87+
Alternatively, you can download the latest version using command prompt:
8588

8689
```console
8790
mkdir wpa-plugin
8891
cd wpa-plugin
8992
curl -L -O https://github.com/arm-developer-tools/windowsperf-wpa-plugin/releases/download/1.0.2/wpa-plugin-1.0.2.zip
9093
```
9194

92-
Extract the `.dll` file from the downloaded `.zip` file.
95+
Now extract the `.dll` file from the downloaded `.zip` file.
9396

9497
```console
9598
tar -xmf wpa-plugin-1.0.2.zip
9699
```
97100

98-
You now have the file `WPAPlugin.dll` in your `wpa-plugin` directory.
101+
The file `WPAPlugin.dll` is now in your `wpa-plugin` directory.
99102

100103
There are three ways you can install the `WPAPlugin.dll` file:
101104

102-
###### 1. Copy the plugin dll to the CustomDataSources directory next to the WPA executable.
105+
#### 1. Copy the .dll file to the CustomDataSources directory next to the WPA executable.
103106

104107
The default location is:
105108
`C:\\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\CustomDataSources`
106109

107-
###### 2. Set an environment variable
110+
#### 2. Set an environment variable.
108111

109-
Set the `WPA_ADDITIONAL_SEARCH_DIRECTORIES` environment variable to the location of the DLL file.
112+
Set the `WPA_ADDITIONAL_SEARCH_DIRECTORIES` environment variable to the location of the `.dll` file.
110113

111-
###### 3. Start WPA from the command line and pass the plugin directory location using a flag.
114+
#### 3. Start WPA from the command line and pass the plugin directory location using a flag.
112115

113116
Use the `-addsearchdir` flag for `wpa`:
114117

@@ -118,13 +121,13 @@ wpa -addsearchdir "%USERPROFILE%\plugins"
118121
119122
## How can I verify the WPA plugin is installed?
120123

121-
To verify the plugin is loaded, launch WPA and the plugin should appear under `Help > About Windows Performance Analyzer`
124+
To verify the plugin is loaded, launch WPA and the plugin should appear under **Help > About Windows Performance Analyzer**.
122125

123126
![WPA installation confirmation](/install-guides/_images/about-wpa.png)
124127

125128
## How can I run the WPA plugin from the command line?
126129

127-
To open a json file directly from the command line, you can use the `-i` flag to specify the file path to open.
130+
To open a JSON file directly from the command line, you can use the `-i` flag to specify the file path to open.
128131

129132
For example: to open `timeline_long.json` in your downloads directory, run the command:
130133

content/learning-paths/laptops-and-desktops/windowsperf/_index.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: Get started with WindowsPerf
33

4-
minutes_to_complete: 15
4+
minutes_to_complete: 20
55

66
who_is_this_for: This is an introductory topic for software developers working on laptops and desktops and new to the Arm architecture.
77

@@ -19,6 +19,7 @@ skilllevels: Introductory
1919
subjects: Performance and Architecture
2020
armips:
2121
- Cortex-A
22+
- Neoverse
2223
operatingsystems:
2324
- Windows
2425
tools_software_languages:

content/learning-paths/laptops-and-desktops/windowsperf/_review.md

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ review:
1919
- "False"
2020
correct_answer: 1
2121
explanation: >
22-
The available counters may vary between processors. Use `wprof -l` to generate a list of available counters.
22+
The available counters may vary between processors. Use `wperf list` to generate a list of available counters.
2323
2424
- questions:
2525
question: >
@@ -41,6 +41,26 @@ review:
4141
explanation: >
4242
Some `wperf` commands such as `list`, `test` or `stat` can output data in JSON format.
4343
44+
- questions:
45+
question: >
46+
Command `wperf sample` can be used together with `--annotate` or `--disassemble` command line options.
47+
answers:
48+
- "True"
49+
- "False"
50+
correct_answer: 1
51+
explanation: >
52+
Yes, you can add annotate and disassemble output to `wperf sample` command.
53+
54+
- questions:
55+
question: >
56+
Command `wperf record` can be used together with `--annotate` or `--disassemble` command line options.
57+
answers:
58+
- "True"
59+
- "False"
60+
correct_answer: 1
61+
explanation: >
62+
Yes, you can add annotate and disassemble output to `wperf record` command.
63+
4464
4565
# ================================================================================
4666
# FIXED, DO NOT MODIFY

content/learning-paths/laptops-and-desktops/windowsperf/windowsperf.md

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,19 @@ weight: 2
66

77
# Overview
88

9-
[WindowsPerf](https://gitlab.com/Linaro/WindowsPerf/windowsperf) is a (Linux [perf](https://perf.wiki.kernel.org) 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.
9+
[WindowsPerf](https://github.com/arm-developer-tools/windowsperf) is a (Linux [perf](https://perf.wiki.kernel.org) 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.
1010

1111
Learn more in this [blog](https://community.arm.com/arm-community-blogs/b/infrastructure-solutions-blog/posts/announcing-windowsperf) announcing the first release.
1212

1313
## WindowsPerf architecture
1414

1515
`WindowsPerf` is composed of two main components:
16-
- [wperf](https://gitlab.com/Linaro/WindowsPerf/windowsperf/-/tree/main/wperf) a command line interface (CLI) sometimes referred as "user-space app" and
17-
- [wperf-driver](https://gitlab.com/Linaro/WindowsPerf/windowsperf/-/tree/main/wperf-driver) a (signed) Kernel-Mode Driver Framework (KMDF) driver.
16+
- [wperf](https://github.com/arm-developer-tools/windowsperf/tree/main/wperf) a command line interface (CLI) sometimes referred as "user-space app" and
17+
- [wperf-driver](https://github.com/arm-developer-tools/windowsperf/tree/main/wperf-driver) a (signed) Kernel-Mode Driver Framework (KMDF) driver.
1818

1919
## WindowsPerf releases
2020

21-
You can find all binary releases of `WindowsPerf` [here](https://gitlab.com/Linaro/WindowsPerf/windowsperf/-/releases).
21+
You can find all binary releases of `WindowsPerf` [here](https://github.com/arm-developer-tools/windowsperf/releases).
2222

2323
# Installation
2424

@@ -106,6 +106,30 @@ wperf test
106106
You can output `wperf test` command in JSON format. Use `--json` command line option to enable JSON output.
107107
{{% /notice %}}
108108

109+
## Obtain plain text information about specified event, metric, or group of metrics.
110+
111+
Command line option `man` prints on screen information about specified event, metric, or group of metrics.
112+
113+
```command
114+
wperf man l1d_cache_mpki
115+
```
116+
117+
```output
118+
CPU
119+
neoverse-n1
120+
NAME
121+
l1d_cache_mpki - L1D Cache MPKI
122+
EVENTS
123+
inst_retired, l1d_cache_refill
124+
DESCRIPTION
125+
This metric measures the number of level 1 data cache accesses missed per
126+
thousand instructions executed.
127+
FORMULA
128+
l1d_cache_refill / inst_retired * 1000
129+
UNIT
130+
MPKI
131+
```
132+
109133
## Generate sample profile
110134

111135
Specify the `event` to profile with `-e`. Groups of events, known as `metrics` can be specified with `-m`.
@@ -139,4 +163,4 @@ You can output `wperf stat` command in JSON format. Use `--json` command line op
139163
{{% /notice %}}
140164

141165

142-
Example use cases are provided in the WindowsPerf [documentation](https://gitlab.com/Linaro/WindowsPerf/windowsperf/-/blob/main/wperf/README.md#counting-model).
166+
Example `wperf stat` command use cases are provided in the WindowsPerf [documentation](https://github.com/arm-developer-tools/windowsperf/tree/main/wperf#counting-model).
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
---
2+
layout: learningpathall
3+
title: WindowsPerf cheat sheet
4+
weight: 2
5+
---
6+
7+
# WindowsPerf cheat sheet
8+
9+
The cheat sheet for the `wperf` command line tool focuses specifically on counting and sampling commands. It includes `wperf stat` for counting occurrences of specific PMU events and `wperf sample` and `wperf record` for sampling PMU event. Each command is explained with practical example.
10+
11+
## WindowsPerf cheat sheet (PMU Counting Examples)
12+
13+
- Count events `inst_spec`, `vfp_spec`, `ase_spec` and `ld_spec` on core #0 for 3 seconds:
14+
15+
```command
16+
wperf stat -e inst_spec,vfp_spec,ase_spec,ld_spec -c 0 --timeout 3
17+
```
18+
19+
- Count metric `imix` (metric events will be grouped) and additional event `l1i_cache` on core #7 for 10.5 seconds:
20+
21+
```command
22+
wperf stat -m imix -e l1i_cache -c 7 --timeout 10.5
23+
```
24+
25+
- Count in timeline mode (output counting to CSV file) metric `imix` 3 times on core #1 with 2 second intervals (delays between counts). Each count will last 5 seconds:
26+
27+
```command
28+
wperf stat -m imix -c 1 -t -i 2 -n 3 --timeout 5
29+
```
30+
31+
## WindowsPerf cheat sheet (PMU Sampling Examples)
32+
33+
- Launch and pin `python_d.exe –c 10**10**100` to core no. 1 and sample given image name:
34+
35+
```command
36+
start /affinity 2 python_d.exe -c 10**10**100
37+
wperf sample -e ld_spec:100000 -c 1 --pe_file python_d.exe --image_name python_d.exe
38+
```
39+
40+
Same workflow can be wrapped with `wperf record` command, see example below:
41+
42+
- Launch `python_d.exe -c 10**10**100` process and start sampling event `ld_spec` with frequency `100000` on core no. 1 for 30 seconds.
43+
44+
```command
45+
wperf record -e ld_spec:100000 -c 1 --timeout 30 -- python_d.exe -c 10**10**100
46+
```
47+
48+
{{% notice Hint%}}
49+
Add `--annotate` or `--disassemble` to `wperf record` command line parameters to increase sampling "resolution".
50+
{{% /notice %}}
51+
52+
## WindowsPerf cheat sheet (SPE Examples)
53+
54+
Use Arm SPE optional extension to sample on core no. 1 process `python_d.exe`. SPE filter `load_filter` / `ld` enables collection of load sampled operations, including atomic operations that return a value to a register.
55+
56+
Note: Double-dash operator `--` can be used with SPE as well to launch the process.
57+
58+
```command
59+
wperf record -e arm_spe_0/ld=1/ -c 1 -– python_d.exe -c 10**10**100
60+
```
61+
62+
Above command can be replaces by below two commands:
63+
64+
```command
65+
start /affinity 2 python_d.exe -c 10**10**100
66+
wperf sample -e arm_spe_0/ld=1/ -c 1 --pe_file python_d.exe --image_name python_d.exe
67+
```
68+
69+
{{% notice Hint%}}
70+
Add `--annotate` or `--disassemble` to `wperf record` command line parameters to increase sampling "resolution".
71+
{{% /notice %}}

content/learning-paths/servers-and-cloud-computing/csp/google.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ layout: "learningpathall"
1111

1212
As with most cloud service providers, Google Cloud offers a pay-as-you-use [pricing policy](https://cloud.google.com/pricing), including a number of [free](https://cloud.google.com/free/docs/free-cloud-features) services.
1313

14-
This section is to help you get started with [Google Cloud Compute Engine](https://cloud.google.com/compute) compute services, using Arm-based Virtual Machines. Google Cloud offers two generations of Arm-based VMs, `C4A` is the latest generation based on [Google Axion](cloud.google.com/products/axion), Google’s first Arm-based server processor, built using the Armv9 Neoverse V2 CPU. The previous generation VMs are based on Ampere Altra processor and part of [Tau T2A](https://cloud.google.com/tau-vm) family of Virtual Machines.
14+
This section is to help you get started with [Google Cloud Compute Engine](https://cloud.google.com/compute) compute services, using Arm-based Virtual Machines. Google Cloud offers two generations of Arm-based VMs, `C4A` is the latest generation based on [Google Axion](https://cloud.google.com/products/axion), Google’s first Arm-based server processor, built using the Armv9 Neoverse V2 CPU. The previous generation VMs are based on Ampere Altra processor and part of [Tau T2A](https://cloud.google.com/tau-vm) family of Virtual Machines.
1515

1616
Detailed instructions are available in the Google Cloud [documentation](https://cloud.google.com/compute/docs/instances).
1717

@@ -23,7 +23,7 @@ If using an organization's account, you will likely need to consult with your in
2323

2424
## Browse for an appropriate instance
2525

26-
Google Cloud offers a wide range of instance types, covering all performance (and pricing) points. For an overview of the `C4A` instance types, see this [page](cloud.google.com/products/axion). Similarly, to know more about the `T2A` instance types, see the [General-purpose machine family](https://cloud.google.com/compute/docs/general-purpose-machines#t2a_machines) overview.
26+
Google Cloud offers a wide range of instance types, covering all performance (and pricing) points. For an overview of the `C4A` instance types, see the [General-purpose machine family](https://cloud.google.com/compute/docs/general-purpose-machines#c4a_series). Similarly, to know more about the `T2A` instance types, see this [page](https://cloud.google.com/compute/docs/general-purpose-machines#t2a_machines).
2727

2828
Also note which [regions](https://cloud.google.com/compute/docs/regions-zones#available) these servers are available in.
2929

@@ -49,15 +49,15 @@ Select an appropriate `region` and `zone` that support Arm-based servers.
4949

5050
![google3 #center](https://github.com/ArmDeveloperEcosystem/arm-learning-paths/assets/71631645/f2a19cd0-7565-44d3-9e6f-b27bccad3e86 "Select an appropriate region and zone")
5151

52-
To view the latest information on which available regions and zones support Arm-based servers, see the [Compute Engine documentation](https://cloud.google.com/compute/docs/regions-zones#available). To filter for Arm-based machines, click on `Select a machine type`, then select `T2A` or `C4A` from the pull-down menu.
52+
To view the latest information on which available regions and zones support Arm-based servers, see the [Compute Engine documentation](https://cloud.google.com/compute/docs/regions-zones#available). To filter for Arm-based machines, click on `Select a machine type`, then select `C4A` or `T2A` from the pull-down menu.
5353

54-
![google4 #center](https://github.com/ArmDeveloperEcosystem/arm-learning-paths/assets/71631645/5b1683dc-724f-4c60-aea6-dc945c7bf6bc "Check which regions and zones support Arm-based machines")
54+
![google4 #center](images/axion-series.png "Check which regions and zones support Arm-based machines")
5555

5656
### Machine configuration
5757

5858
Select `C4A` from the `Series` pull-down menu. Then select an appropriate `Machine type` configuration for your needs.
5959

60-
![google5 #center](images/gcp_instance_new.png "Select an appropriate C4A machine type")
60+
![google5 #center](images/axion-instance.png "Select an appropriate C4A machine type")
6161

6262
### Boot disk configuration
6363

229 KB
Loading
166 KB
Loading
Binary file not shown.

0 commit comments

Comments
 (0)