Skip to content

Commit

Permalink
Merge pull request #1015 from ArmDeveloperEcosystem/main
Browse files Browse the repository at this point in the history
Production publish
  • Loading branch information
jasonrandrews authored Jun 20, 2024
2 parents 6d6873f + 64a9673 commit 617456d
Show file tree
Hide file tree
Showing 66 changed files with 4,305 additions and 194 deletions.
49 changes: 48 additions & 1 deletion .wordlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2860,4 +2860,51 @@ uninitializedConstruct
whitepapers
xN
OgMk
vrr
vrr
AE
Boundness
CBOR
Gemma
HuggingFace
KLEIDIAI
Kaggle
Kleidi
KleidiAI
KleidiAI's
MPKI
MediaPipe
Starlark
Stech
ThirdAI
ThirdAI's
ThirdAILabs
UniversalDeepTransformer
XLSX
XNNPack
XXXXXXXXXXXXXX
atlassian
cancelled
cdn
chipset
genai
inode
kleidi
kleidiAI
linkstatic
llm
lts
mediapipe
microarchitecture
mispredicts
opencv
pathologies
rpms
sl
strobed
tgz
thirdai
untar
xnn
xnnpack
xzf
MacBook
Binary file modified bin/pagefind
Binary file not shown.
Binary file modified bin/pagefind.aarch64
Binary file not shown.
Binary file modified bin/pagefind.arm64
Binary file not shown.
Binary file modified bin/pagefind.exe
Binary file not shown.
4 changes: 2 additions & 2 deletions content/install-guides/acfl.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,11 +101,11 @@ Fetch the `ACfL` installers:
#### Ubuntu Linux:

```bash { target="ubuntu:latest" }
wget https://developer.arm.com/-/media/Files/downloads/hpc/arm-compiler-for-linux/24-04/arm-compiler-for-linux_24.04_Ubuntu-22.04_aarch64.tar
wget https://developer.arm.com/-/cdn-downloads/permalink/Arm-Compiler-for-Linux/Version_24.04/arm-compiler-for-linux_24.04_Ubuntu-22.04_aarch64.tar
```
#### Red Hat Linux:
```bash { target="fedora:latest" }
wget https://developer.arm.com/-/media/Files/downloads/hpc/arm-compiler-for-linux/24-04/arm-compiler-for-linux_24.04_RHEL-8_aarch64.tar
wget https://developer.arm.com/-/cdn-downloads/permalink/Arm-Compiler-for-Linux/Version_24.04/arm-compiler-for-linux_24.04_RHEL-8_aarch64.tar
```

### Install
Expand Down
7 changes: 5 additions & 2 deletions content/install-guides/docker/docker-woa.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ minutes_to_complete: 15
author_primary: Jason Andrews

### Link to official documentation
official_docs: https://docs.docker.com/engine/
official_docs: https://docs.docker.com/desktop/

weight: 4 # Defines page ordering. Must be 1 for first (or only) page.
tool_install: false # Set to true to be listed in main selection page, else false
Expand Down Expand Up @@ -44,7 +44,10 @@ Additional models of Windows on Arm computers are expected to be available in mi

### How do I install and test Docker Desktop for Windows on Arm?

Download [Docker Desktop for Windows on Arm](https://desktop.docker.com/win/main/arm64/149282/Docker%20Desktop%20Installer.exe) and run the installer.
The current version is 4.31.0 and you can
download [Docker Desktop for Windows on Arm](https://desktop.docker.com/win/main/arm64/153195/Docker%20Desktop%20Installer.exe) and run the installer.

Check the [Docker Desktop release notes](https://docs.docker.com/desktop/release-notes/) for the latest release information.

Once the installation is complete, you can test it by running `docker` in a Windows Command Prompt or PowerShell Prompt:

Expand Down
20 changes: 10 additions & 10 deletions content/install-guides/license/ubl_license_admin.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: UBL Local License Server (LLS) Setup
title: UBL Local License Server (LLS) setup
minutes_to_complete: 15
official_docs: https://developer.arm.com/documentation/107573
author_primary: Ronan Synnott
Expand All @@ -23,15 +23,15 @@ https://developer.arm.com/support/licensing/user-based

## License server set up

UBL license server software is supported on the following host operating systems:
* Red Hat Enterprise Linux / CentOS 7 and 8
* Ubuntu 20.04 LTS
UBL license server software is supported on a variety of operating systems or virtual machines.

The license server uses a number of standard Linux utilities, including Python and Java.

The license server uses a number of standard Linux [utilities](https://developer.arm.com/documentation/107573/latest/Getting-started-with-user-based-licensing/Hardware-and-software-requirements), including Python and Java.
```console
sudo apt update
sudo apt install -y openjdk-11-jre-headless python-is-python3
```
See [Hardware and software requirements](https://developer.arm.com/documentation/107573/latest/Installing-and-populating-the-license-server/Hardware-and-software-requirements) in the [User-based Licensing Administration Guide](https://developer.arm.com/documentation/107573).

### Download and install server software

Expand All @@ -41,10 +41,10 @@ https://lm.arm.com/downloads
```
Expand the tarball (named `flexnetls-armlmd-<version>.tar.gz`), and install the license server software.
```console
tar -xf flexnetls-armlmd-1.2023060.0.tar.gz
sudo ./flexnetls-armlmd-1.2023060.0/install_license_server
tar -xf flexnetls-armlmd-1.2024050.0.tar.gz
sudo ./flexnetls-armlmd-1.2024050.0/install_license_server
```
Additional options are described in the [License Server Administration Guide](https://developer.arm.com/documentation/107573/latest/Getting-started-with-user-based-licensing/Install-your-license-server).
Additional options are described in the [License Server Administration Guide](https://developer.arm.com/documentation/107573/latest/Installing-and-populating-the-license-server/Install-your-license-server).

The installer will automatically start the license server software. When complete, you will see output similar to:
```output
Expand All @@ -70,7 +70,7 @@ armlm_change_admin_password
{{% notice Note %}}
The administrator password is only stored locally. If you forget the password, you must uninstall and reinstall the license server.

See the [License Server Administrator Guide](https://developer.arm.com/documentation/107573/1-2023600/License-server-administration/Reset-the-administrator-password).
See the [License Server Administrator Guide](https://developer.arm.com/documentation/107573/latest/License-server-administration/Reset-the-administrator-password).
{{% /notice %}}


Expand All @@ -96,7 +96,7 @@ which will output all available hostids, and highlight as `selected` the one tha
} ]
}
```
If you wish to change the `selected` hostid, edit the `/server/local-configuration.yaml` file. See the [documentation](https://developer.arm.com/documentation/107573/latest/Getting-started-with-user-based-licensing/Configure-your-license-server) for full details.
If you wish to change the `selected` hostid, edit the `/server/local-configuration.yaml` file. See the [documentation](https://developer.arm.com/documentation/107573/1-2024500/Installing-and-populating-the-license-server/Configure-your-license-server) for full details.
```yml
# Specify the hostid to be used. Syntax: 001122334455/ETHERNET. Has to be one
# of the hostids reported by armlm_show_hostid.
Expand Down
197 changes: 197 additions & 0 deletions content/install-guides/streamline-cli.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,197 @@
---
### Title the install tools article with the name of the tool to be installed
### Include vendor name where appropriate
title: Streamline CLI Tools

### Optional additional search terms (one per line) to assist in finding the article
additional_search_terms:
- profiling
- profiler
- Linux
- Server
- Neoverse

### Estimated completion time in minutes (please use integer multiple of 5)
minutes_to_complete: 10

author_primary: Julie Gaskin

### Link to official documentation
official_docs: https://developer.arm.com/documentation/109847/latest/

### PAGE SETUP
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
---

The Streamline CLI tools are native command-line tools that are designed to run directly on an Arm server running Linux. The tools provide a software profiling methodology that gives you clear and actionable performance data. You can use this data to guide the optimization of the heavily used functions in your software.

## Before you begin

Use the Arm Sysreport utility to determine whether your system configuration supports hardware-assisted profiling. Follow the instructions in [Get ready for performance analysis with Sysreport][1] to discover how to download and run this utility.

[1]: https://learn.arm.com/learning-paths/servers-and-cloud-computing/sysreport/

The `perf counters` entry in the generated report indicates how many CPU counters are available. The `perf sampling` entry indicates if SPE is available. You will achieve the best profiles in systems with at least 6 available CPU counters and SPE.

The Streamline CLI tools can be used in systems without any CPU counters, but can only return a basic hot-spot profile based on time-based sampling.
No top-down methodology metrics will be available.

The Streamline CLI tools can give top-down metrics in systems with as few as 3 available CPU counters. The effective sample rate for each metric will be lower, because you need to time-slice the counters to capture all of the requested metrics. This means that you need to run your application for longer to get the same number of samples for each metric. Metrics that require more input counters than are available cannot be captured.

The Streamline CLI tools can be used without SPE. Load operation data source metrics will not be available, and branch mispredict metrics might be less
accurate.

## Building your application

Your application should be a release build, but needs to include symbol information. Build your application with the `-g` option to include symbol information. Arm recommends that you disable link-time-optimization to make the profile easier to understand.

If you are using the `workflow_topdown_basic option`, ensure that your application workload is at least 20 seconds long, in order to give the core time to capture all of the metrics needed. This time increases linearly as you add more metrics to capture.

## Install Streamline CLI Tools

1. Download and extract the Streamline CLI tools on your Arm server:

```sh
wget https://artifacts.tools.arm.com/arm-performance-studio/2024.2/Arm_Streamline_CLI_Tools_9.2.0_linux_arm64.tgz 
tar -xzf Arm_Streamline_CLI_Tools_9.2.0_linux_arm64.tgz 
```

1. The `sl-format.py` Python script requires Python 3.8 or later, and depends on several third-party modules. We recommend creating a Python virtual environment containing these modules to run the tools. For example:

```sh
# From Bash
python3 -m venv sl-venv
source ./sl-venv/bin/activate
# From inside the virtual environment
python3 -m pip install -r ./streamline_cli_tools/bin/requirements.txt
```

{{% notice Note%}}
The instructions in this guide assume you have added the `<install>/bin/` directory to your `PATH` environment variable, and that you run all Python commands from inside the virtual environment.
{{% /notice %}}

## Applying the kernel patch

For best results, we provide a Linux kernel patch that modifies the behavior of Linux perf to improve support for capturing function-attributed top-down
metrics on Arm systems. This patch provides two new capabilities:

* It allows a new thread to inherit the perf counter group configuration of its parent.
* It decouples the perf event-based sampling window size from the overall sample rate. This allows strobed mark-space sampling patterns where the tool can capture a small window without using a high sample rate.

Without the patch it is possible to capture profiles. However, not all capture options are available and capturing top-down metrics will rely on high
frequency sampling. The following options are available:

* System-wide profile with top-down metrics.
* Single threaded application profile with top-down metrics.
* Multi-process/thread application profile **without** top-down metrics.

With the patch applied, it is possible to collect the following profiles:

* System-wide profile with top-down metrics.
* Single threaded application profile with top-down metrics.
* Multi-process/thread application profile **with** top-down metrics.

The following instructions show you how to install the patch on Amazon Linux 2023.
You might need to adapt them slightly to other Linux distributions.

### Manual application to the source tree

To apply the patch to the latest 6.7 kernel, you can use `git`:

```sh
git apply v6.7-combined.patch
```

or `patch`:

```sh
patch -p 1 -i v6.7-combined.patch
```

### Manual application to an RPM-based distribution

Follow these steps to integrate these patches into an RPM-based distribution's kernel:
1. Remove any existing `rpmbuild` directory, renaming as appropriate:
```sh
rm -fr rpmbuild
```
1. Fetch the kernel sources:
```sh
yum download --source kernel
```
1. Install the sources binary:
```sh
rpm -i kernel-<VERSION>.src.rpm
```
1. Enter the `rpmbuild` directory that is created:
```sh
cd rpmbuild
```
1. Copy the patch into the correct location. Replace the 9999 patch number with the next available patch number in the sequence:
```sh
cp vX.Y-combined.patch SOURCES/9999-strobing-patch.patch
```
1. Open the specs file in your preferred editor:
```sh
nano SPECS/kernel.spec
```
1. Search for the list of patches starting with `Patch0001`, and append the line for the new patch to the end of the list. Replace 9999 with the patch number used earlier:
```sh
Patch9999: 9999-strobing-patch.patch
```
1. Search for the list of patch apply steps starting with `ApplyPatch`, and append the line for the new patch to the end of the list. Replace 9999 with the patch number used earlier:
```sh
ApplyPatch 9999-strobing-patch.patch
```
1. Save the changes and exit the editor.
1. Build the kernel and other rpms:
```sh
rpmbuild -ba SPECS/kernel.spec
```
1. Install the built packages:
```sh
sudo rpm -ivh --force RPMS/aarch64/*.rpm
```
1. Reboot the system:
```sh
sudo reboot
```
1. Validate that the patch has been applied correctly:
```sh
ls -l /sys/bus/event_source/devices/*/format/strobe_period
```
This should list at least one CPU PMU device supporting the strobing features, for example:
```output
/sys/bus/event_source/devices/armv8_pmuv3_0/format/strobe_period
```
You are now ready to use Streamline CLI Tools. Refer to [Profiling for Neoverse with Streamline CLI Tools](/learning-paths/servers-and-cloud-computing/profiling-for-neoverse/) to get started.
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Content that deviates significantly from these guidelines will need to be revise

Voice or tone describes the way something is expressed. This is different from describing the facts that you are writing about. The same idea can be described in a variety of voices, for example, formal or informal.

Learning Paths should be written in a clear, simple, and informal voice. You should write in a voice that anticipates the needs of your reader and is not pedantic or formal. However, do not write like you are speaking, because that is too informal.
Learning Paths should be written in a clear, simple, and informal voice. You should write in a voice that anticipates the needs of your reader and is not pedantic or formal. However, do not write in a verbal style, as that is too informal.

If you write in a clear, simple, and informal voice, your content will be easy to understand.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,11 +75,11 @@ If there are large factual or reproducibility errors in your contribution, we wi

## Updating Learning Paths

Learning Paths should be always up to date and high quality. Over time software may change and instructions may be out of date.
Learning Paths should be always up to date and high quality. Over time software may change and instructions may become outdated.

Learning Path content is automatically monitored for out of date material. We may contact you to confirm a Learning Path is still up to date or to request some modifications to a Learning Path that has become out of date.
Learning Path content is automatically monitored for out of date material. We may contact you to confirm a Learning Path is still current, or requires revision.

Community members may also submit feedback on Learning Paths so we appreciate any help on keeping content current.
Community members can also submit feedback on Learning Paths and highlight information that has become outdated. We appreciate feedback.

Keep an eye out for requests and please respond as needed.

Expand Down
Loading

0 comments on commit 617456d

Please sign in to comment.