Skip to content

Commit

Permalink
Merge pull request #1361 from ArmDeveloperEcosystem/main
Browse files Browse the repository at this point in the history
Production update
  • Loading branch information
pareenaverma authored Oct 30, 2024
2 parents 39951d0 + 446888f commit 0736fbe
Show file tree
Hide file tree
Showing 39 changed files with 628 additions and 91 deletions.
3 changes: 3 additions & 0 deletions assets/contributors.csv
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,6 @@ Cyril Rohr,RunsOn,crohr,cyrilrohr,,
Rin Dobrescu,Arm,,,,
Przemyslaw Wirkus,Arm,PrzemekWirkus,przemyslaw-wirkus-78b73352,,
Nader Zouaoui,Day Devs,nader-zouaoui,nader-zouaoui,@zouaoui_nader,https://daydevs.com/
Alaaeddine Chakroun,Day Devs,Alaaeddine-Chakroun,alaaeddine-chakroun,,https://daydevs.com/
Koki Mitsunami,Arm,,,,
Chen Zhang,Zilliz,,,,
Binary file added content/install-guides/_images/about-wpa.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
50 changes: 22 additions & 28 deletions content/install-guides/windows-perf-vs-extension.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,38 +28,33 @@ multi_install: FALSE # Set to true if first page of multi-page article, else fal
multitool_install_part: false # Set to true if a sub-page of a multi-page article, else false
layout: installtoolsall # DO NOT MODIFY. Always true for tool install articles
---
[WindowsPerf](/install-guides/wperf/) is a lightweight performance profiling tool inspired by Linux Perf, and specifically tailored for Windows on Arm. It leverages the AArch64 Performance Monitoring Unit (PMU) and its hardware counters to offer precise profiling capabilities.

## Introduction
Recognizing the complexities of command-line interaction, the WindowsPerf GUI is a Visual Studio 2022 extension created to provide a more intuitive, integrated experience within the Integrated Development Environment (IDE). This tool enables developers to interact with WindowsPerf, adjust settings, and visualize performance data seamlessly in Visual Studio.

WindowsPerf is a lightweight performance profiling tool inspired by Linux Perf, and specifically tailored for Windows on Arm. It leverages the ARM64 PMU (Performance Monitor Unit) and its hardware counters to offer precise profiling capabilities.

Recognizing the complexities of command-line interaction, the WindowsPerf GUI is a Visual Studio 2022 extension created to provide a more intuitive, integrated experience within the integrated development environment (IDE). This tool enables developers to interact with WindowsPerf, adjust settings, and visualize performance data seamlessly in Visual Studio.

## A Glimpse of the available features
## Overview of key features

The WindowsPerf GUI extension is composed of several key features, each designed to streamline the user experience:

- **WindowsPerf Configuration**: Connect directly to `wperf.exe` for a seamless integration. Configuration is accessible via `Tools -> Options -> Windows Perf -> WindowsPerf Path`.
- **Host Data**: Understand your environment with `Tools -> WindowsPerf Host Data`, offering insights into tests run by WindowsPerf.
- **Output Logging**: All commands executed through the GUI are logged, ensuring transparency and aiding in performance analysis.
- **Sampling UI**: Customize your sampling experience by selecting events, setting frequency and duration, choosing programs for sampling, and comprehensively analyzing results.
- **WindowsPerf Configuration**: Connect directly to `wperf.exe` for a seamless integration. Configuration is accessible by selecting **Tools > Options > Windows Perf > WindowsPerf Path**.
- **Host Data**: Understand your environment by selecting **Tools** then **WindowsPerf Host Data**. This offers insights into tests run by WindowsPerf.
- **Output Logging**: All commands executed through the GUI are logged, ensuring transparency and supporting performance analysis.
- **Sampling UI**: Customize your sampling experience by selecting events, setting frequency and duration, choosing programs for sampling, and comprehensively analyzing results. See screenshot below.

![Sampling preview #center](../_images/wperf-vs-extension-sampling-preview.png "Sampling settings UI Overview")


- **Counting Settings UI**: Build a `wperf stat` command from scratch using the configuration interface, then view the output in the IDE or open it with Windows Performance Analyzer (WPA)


![Counting preview #center](../_images/wperf-vs-extension-counting-preview.png "_Counting settings UI Overview_")
- **Counting Settings UI**: Build a `wperf stat` command from scratch using the configuration interface, then view the output in the IDE or open it with Windows Performance Analyzer (WPA). See screenshot below.


## Getting Started
![Counting preview #center](../_images/wperf-vs-extension-counting-preview.png "Counting settings UI Overview")

### Prerequisites
## Before you begin

- **Visual Studio 2022**: Ensure you have Visual Studio 2022 installed on your Windows on Arm device.
- **WindowsPerf**: Download and install WindowsPerf by following the [WindowsPerf install guide](/install-guides/wperf/).
- **LLVM** (Recommended): You can install the LLVM toolchain by following the [LLVM toolchain for Windows on Arm install guide](/install-guides/llvm-woa).
Before installing WindowsPerf Visual Studio Extension, check the following:
1. Ensure Visual Studio 2022 is installed on your Windows on Arm device.
2. Download and install WindowsPerf by following the [WindowsPerf install guide](/install-guides/wperf/).
3. (Recommended) You can install the LLVM toolchain by following the [LLVM toolchain for Windows on Arm install guide](/install-guides/llvm-woa).

{{% notice llvm-objdump %}}
The disassembly feature needs to have `llvm-objdump` available at `%PATH%` to work properly.
Expand All @@ -69,11 +64,10 @@ The disassembly feature needs to have `llvm-objdump` available at `%PATH%` to wo

To install the WindowsPerf Visual Studio Extension from Visual Studio:

1. Open Visual Studio 2022
2. Go to the `Extensions` menu
3. Select **Manage Extensions**
4. Click on the search bar ( or tap `Ctrl` + `L` ) and type `WindowsPerf`
5. Click on the install button and restart Visual Studio
1. Open Visual Studio 2022.
2. Go to the **Extensions** menu and select **Manage Extensions**.
4. Click on the search bar (Ctrl+L) and type `WindowsPerf`.
5. Click on the **Install** button and restart Visual Studio.

![WindowsPerf install page #center](../_images/wperf-vs-extension-install-page.png)

Expand All @@ -83,7 +77,7 @@ You can also install the WindowsPerf Visual Studio Extension from GitHub.

Download the installation file directly from the [GitHub release page](https://github.com/arm-developer-tools/windowsperf-vs-extension/releases).

Unzip the downloaded file and double click on the `WindowsPerfGUI.vsix` file
Unzip the downloaded file and double click on the `WindowsPerfGUI.vsix` file.

{{% notice Note %}}
Make sure that any previous version of the extension is uninstalled and that Visual Studio is closed before installing the extension.
Expand All @@ -97,10 +91,10 @@ Building the source is not required, but offered as an alternative installation

### WindowsPerf Setup

To get started, you must link the GUI with the executable file `wperf.exe` by navigating to `Tools -> Options -> WindowsPerf -> WindowsPerf Path`. This step is crucial for utilizing the GUI, and the extension will not work if you don't do it.
To get started, you must link the GUI with the executable file `wperf.exe` by navigating to **Tools > Options > WindowsPerf > WindowsPerf Path**. This step is crucial for utilizing the GUI, and the extension will not work if you don't do it.

## Uninstall the WindowsPerfGUI extension

In Visual Studio go to `Extensions` -> `Manage Extensions` -> `Installed` -> `All` -> `WindowsPerfGUI` and select "Uninstall".
In Visual Studio go to **Extensions > Manage Extensions > Installed > All > WindowsPerfGUI** and select **Uninstall**.

Please note that this will be scheduled by Visual Studio. You may need to close VS instance and follow uninstall wizard to remove the extension.
As this will be scheduled by Visual Studio, you might need to close the VS instance and follow the uninstall wizard to remove the extension.
139 changes: 139 additions & 0 deletions content/install-guides/windows-perf-wpa-plugin.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
---
### Title the install tools article with the name of the tool to be installed
### Include vendor name where appropriate
title: Windows Performance Analyzer (WPA) Plugin
minutes_to_complete: 15

draft: true

official_docs: https://github.com/arm-developer-tools/windowsperf-wpa-plugin

author_primary: Alaaeddine Chakroun

### Optional additional search terms (one per line) to assist in finding the article
additional_search_terms:
- perf
- profiling
- profiler
- windows
- woa
- windows on arm
- windows performance analyzer
- wpa

### FIXED, DO NOT MODIFY
weight: 1 # Defines page ordering. Must be 1 for first (or only) page.
tool_install: true # Set to true to be listed in main selection page, else false
multi_install: FALSE # Set to true if first page of multi-page article, else false
multitool_install_part: false # Set to true if a sub-page of a multi-page article, else false
layout: installtoolsall # DO NOT MODIFY. Always true for tool install articles
---

## What is the Windows Performance Analyzer plugin?

The Windows Performance Analyzer plugin connects Windows Perf to the Windows Performance Analyzer (WPA).

[WindowsPerf](https://github.com/arm-developer-tools/windowsperf) is a lightweight performance profiling tool inspired by Linux Perf and designed for Windows on Arm.

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.

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.

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

The WindowsPerf GUI extension is composed of several key features, each designed to streamline the user experience:

### What is the timeline view?

The timeline view visualizes the `wperf stat` timeline data plotted by event group.

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

### What is the telemetry view?

The telemetry view displays telemetry events grouped by unit.

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

## How do I install the WPA plugin?

Before using the WPA plugin, make sure you have installed WPA.

### Windows Performance Analyzer

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).

{{% notice Note %}}
The WPA plugin requires WPA version `11.0.7.2` or higher.
{{% /notice %}}

Run the downloaded `adksetup.exe` program.

Specify the default installation location and accept the license agreement.

Make sure that "Windows Performance Toolkit" is checked under "Select the features you want to install".

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

Finally, click Install.

### Windows Performance Analyzer plugin

The plugin is a single `.dll` file.

Download a `.zip` file from the [GitHub releases page](https://github.com/arm-developer-tools/windowsperf-wpa-plugin/releases).

To download the latest version from the command prompt:

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

Extract the `.dll` file from the downloaded `.zip` file.

```console
tar -xmf wpa-plugin-1.0.2.zip
```

You now have the file `WPAPlugin.dll` in your `wpa-plugin` directory.

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

###### 1. Copy the plugin dll to the CustomDataSources directory next to the WPA executable.

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

###### 2. Set an environment variable

Set the `WPA_ADDITIONAL_SEARCH_DIRECTORIES` environment variable to the location of the DLL file.

###### 3. Start WPA from the command line and pass the plugin directory location using a flag.

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

```bash
wpa -addsearchdir "%USERPROFILE%\plugins"
```
## How can I verify the WPA plugin is installed?

To verify the plugin is loaded, launch WPA and the plugin should appear under `Help > About Windows Performance Analyzer`

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

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

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

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

```console
wpa -i "%USERPROFILE%\\Downloads\\timeline_long.json"
```
## How do I uninstall the WPA plugin?

To uninstall the plugin simply delete the `WPAPlugin.dll` file.

Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,7 @@ A GitLab Runner works with GitLab CI/CD to run jobs in a pipeline. It acts as an
3. Multi-architecture support: GitLab runners support multiple architectures including - `x86/amd64` and `arm64`

## What is Google Axion?
Axion is Google’s first Arm-based server processor, built using the Armv9 Neoverse V2 CPU. The VM instances are part of the `C4A` family of compute instances. To learn more about Google Axion refer to this [blog](https://cloud.google.com/blog/products/compute/introducing-googles-new-arm-based-cpu).

Note: These `C4A` VM instances are in public preview and needs a signup to be enabled in your Google Cloud account/project.
Axion is Google’s first Arm-based server processor, built using the Armv9 Neoverse V2 CPU. The VM instances are part of the `C4A` family of compute instances. To learn more about Google Axion refer to this [page](cloud.google.com/products/axion).

## Install GitLab runner on a Google Axion VM

Expand Down
3 changes: 0 additions & 3 deletions content/learning-paths/cross-platform/gitlab/_index.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
---
title: Build a CI/CD pipeline with GitLab on Google Axion
draft: true
cascade:
draft: true

minutes_to_complete: 30

Expand Down
10 changes: 5 additions & 5 deletions content/learning-paths/servers-and-cloud-computing/csp/google.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ layout: "learningpathall"

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.

This section is to help you get started with [Google Cloud Compute Engine](https://cloud.google.com/compute) compute services, using Arm-based [Tau T2A](https://cloud.google.com/tau-vm) Virtual Machines. This is a general-purpose compute platform, essentially your own personal computer in the cloud.
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.

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

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

## Browse for an appropriate instance

Google Cloud offers a wide range of instance types, covering all performance (and pricing) points. For an overview of the Tau T2A instance types, see the [General-purpose machine family](https://cloud.google.com/compute/docs/general-purpose-machines#t2a_machines) overview.
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.

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

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

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

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` from the pull-down menu.
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.

![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")

### Machine configuration

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

![google5 #center](images/gcp_instance.png "Select an appropriate T2A machine type")
![google5 #center](images/gcp_instance_new.png "Select an appropriate C4A machine type")

### Boot disk configuration

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ resource "google_project_iam_member" "project" {
resource "google_compute_instance" "bastion_host" {
project = var.project
name = "bastion-vm"
machine_type = "t2a-standard-1"
machine_type = "c4a-standard-1"
zone = var.zone
tags = ["public"]
boot_disk {
Expand All @@ -91,7 +91,7 @@ resource "google_compute_instance" "bastion_host" {
resource "google_compute_instance" "private" {
project = var.project
name = "bastion-private"
machine_type = "t2a-standard-1"
machine_type = "c4a-standard-1"
zone = var.zone
allow_stopping_for_update = true
tags = ["private"]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ provider "google" {

resource "google_compute_instance" "vm_instance" {
name = "instance-arm"
machine_type = "t2a-standard-1"
machine_type = "c4a-standard-1"

boot_disk {
initialize_params {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
---
title: Optimize MLOps with Arm-hosted GitHub Runners
draft: true
cascade:
draft: true

minutes_to_complete: 60

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
---
title: Learn how to migrate an x86 application to multi-architecture with Arm on Google Kubernetes Engine (GKE)
title: Learn how to migrate an x86 application to multi-architecture with Arm-based on Google Axion Processor on GKE

minutes_to_complete: 30

who_is_this_for: This is an advanced topic for software developers who are looking to migrate their existing x86 containerized applications to Arm

learning_objectives:
- Add Arm-based nodes to an existing x86-based GKE cluster
- Add Arm-based nodes (Google Axion) to an existing x86-based GKE cluster
- Rebuild an x86-based application to make it multi-arch and run on Arm
- Learn how to add taints and tolerations to GKE clusters to schedule application pods on architecture specific nodes
- Run a multi-arch application across multiple architectures on a single GKE cluster
Expand Down
Loading

0 comments on commit 0736fbe

Please sign in to comment.