Skip to content

Commit 427b635

Browse files
Merge pull request #3158 from bccbrendan/bccbrendan/performix-system-characterization-lp
Add Learning Path for Performix System Characterization Recipe
2 parents 444b69f + 67bdecd commit 427b635

21 files changed

Lines changed: 246 additions & 0 deletions
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
---
2+
title: Set up Performix and the target machine
3+
weight: 2
4+
5+
### FIXED, DO NOT MODIFY
6+
layout: learningpathall
7+
---
8+
9+
## Understand the System Characterization recipe
10+
11+
The System Characterization recipe runs a set of low-level benchmarks, diagnostic scripts, and system tests to analyze performance on Arm-based platforms. It evaluates key hardware characteristics, including memory latency and bandwidth, and is especially useful for platform bring-up, system tuning, and architectural comparisons. It helps developers and system architects gather early, repeatable insight into performance-critical subsystems.
12+
13+
The latency sweep plot below shows one of the benchmarks that System Characterization provides: the average latency of memory accesses across varying working-set sizes, revealing the latency of each cache level in the memory hierarchy.
14+
15+
![Arm Performix latency sweep plot showing cache-level transitions#center](./latency-sweep-plot.webp "Latency Sweep")
16+
17+
## Before you begin
18+
19+
Make sure Arm Performix is installed on your host machine. The host machine is your local computer where the Arm Performix GUI runs, and it can be a Windows, macOS, or Linux machine. The target machine is the Linux server you wish to benchmark and characterize.
20+
21+
If you do not have Arm Performix installed, see the [Arm Performix install guide](/install-guides/performix/).
22+
23+
From the host machine, open Arm Performix and navigate to the **Targets** tab. Set up an SSH connection to the target you want to benchmark, and test the connection.
24+
25+
The System Characterization recipe requires Python and the `numactl` utility on the target machine.
26+
Connect to your target machine using SSH and install these required OS packages.
27+
28+
For Ubuntu and other Debian-based distributions, run the following command:
29+
30+
```bash
31+
sudo apt-get install python3 python3-venv numactl -y
32+
```
33+
34+
## What you've learned and what's next
35+
36+
In this section:
37+
- You set up the target machine and established an SSH connection.
38+
- You installed the packages required to run the System Characterization recipe.
39+
40+
Next, you'll run the recipe and inspect how your hardware platform performs.
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
---
2+
title: Benchmark your platform with System Characterization
3+
weight: 3
4+
5+
### FIXED, DO NOT MODIFY
6+
layout: learningpathall
7+
---
8+
9+
## Run the System Characterization recipe
10+
11+
To understand your platform's memory performance in its current configuration, run the System Characterization recipe in Arm Performix.
12+
13+
![Arm Performix System Characterization configuration screen with benchmark selection options#center](./preparing-target.webp "System Characterization Configuration")
14+
15+
You can collect the default benchmark set, gather only static system configuration details, or select individual benchmarks to run.
16+
17+
Select the target you configured in the setup section. If this is your first run on this target, you might need to select **Install Tools** to copy the collection tools to the target. After the tools are installed, the target status changes to ready.
18+
19+
The **Workload type** field is fixed at **Profile the whole system**. System Characterization examines the full platform; it does not profile an individual application or workload.
20+
21+
At the bottom of the recipe configuration page, Arm Performix runs a pre-run check to confirm that required packages such as `numactl` are installed.
22+
23+
![Arm Performix pre-run check confirming required packages are installed#center](./pre-run-check-succeeds.webp "Pre-Run Check")
24+
25+
When the configuration is complete, select **Run Recipe** to launch the workload and collect performance data. Arm Performix shows a progress indicator with an estimated completion time. If you manually select many benchmarks, the run can take around 30 minutes.
26+
27+
![Arm Performix System Characterization progress view while collecting benchmarks#center](./collecting-benchmarks.webp "Collecting Benchmarks")
28+
29+
## View the run results
30+
31+
The System Characterization recipe generates several result views. Arm Performix presents tabular data in views such as **Idle Latency** and **Peak Bandwidth**. Raw data, `.csv` files, and plots are available through the **Open Run Directory** button on the **Summary** tab. The next sections walk through several of these results.
32+
33+
![Arm Performix System Characterization summary view after report generation#center](./report-generated.webp "Results Summary for Run")
34+
35+
## What you've learned and what's next
36+
37+
In this section:
38+
- You ran the System Characterization recipe on your target machine.
39+
- You viewed the results generated for the run.
40+
41+
Next, you'll examine benchmark data collected from the individual tests.
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
---
2+
title: View benchmark results in the Performix UI
3+
weight: 4
4+
5+
### FIXED, DO NOT MODIFY
6+
layout: learningpathall
7+
---
8+
9+
## View the run results in the Performix GUI
10+
11+
Because the System Characterization recipe uses the standalone Arm System Characterization Tool (ASCT), it creates an output directory for all ASCT results and imports a subset of those results into the GUI. At the time of writing, Performix presents the data in tabular form and links to the output directory for plots and raw data.
12+
13+
### Idle Latency
14+
15+
In **Idle Latency**, ASCT reports memory latency for each non-uniform memory access (NUMA) node while the system is idle. You can use this view to spot bottlenecks caused by workload placement and to identify which nodes are closest to memory resources.
16+
17+
![Arm Performix Idle Latency table showing NUMA-node memory latency#center](./idle-latency.webp "Idle Latency Results")
18+
19+
### Peak Bandwidth
20+
21+
**Peak Bandwidth** shows the maximum measured memory bandwidth for different read and write patterns, and compares those results with the theoretical peak bandwidth of the system.
22+
23+
![Arm Performix Peak Bandwidth table comparing measured and theoretical bandwidth#center](./peak-bandwidth.webp "Peak Bandwidth Results")
24+
25+
### Cross-NUMA Bandwidth
26+
27+
**Cross-NUMA Bandwidth** shows the bandwidth achieved when memory requests cross NUMA node boundaries.
28+
29+
![Arm Performix Cross-NUMA Bandwidth table showing inter-node bandwidth#center](./cross-numa-bandwidth.webp "Cross-NUMA Bandwidth Results")
30+
31+
### Latency Sweep
32+
33+
The latency sweep benchmark measures latency by data size to map the cache hierarchy and identify appropriate data sizes for other benchmarks. It highlights the performance characteristics of each level of the cache and memory hierarchy.
34+
35+
![Arm Performix Latency Sweep table mapping latency across data sizes#center](./latency-sweep-table.webp "Latency Sweep Table")
36+
37+
### Bandwidth Sweep
38+
39+
The bandwidth sweep benchmark varies the data size used to generate memory accesses and measures the bandwidth delivered by each level of the memory hierarchy.
40+
41+
![Arm Performix Bandwidth Sweep table mapping bandwidth across data sizes#center](./bandwidth-sweep-table.webp "Bandwidth Sweep Table")
42+
43+
### Core-to-Core Latency
44+
45+
The core-to-core latency benchmark measures the latency of moving data from one core to another. Because the number of core pairs grows quickly, this benchmark runs on only a subset of system cores by default.
46+
47+
![Arm Performix Core-to-Core Latency table showing latency between selected cores#center](./core-to-core-ui.webp "Core-to-Core Latency Table")
48+
49+
### System Information
50+
51+
This table shows the system information collected by ASCT, including CPU, memory, and storage details.
52+
53+
![Arm Performix System Information table with CPU, memory, and storage details#center](./system-information.webp "System Information")
54+
55+
## What you've learned and what's next
56+
57+
In this section:
58+
- You viewed benchmark results from ASCT in the Arm Performix results view.
59+
60+
Next, you'll inspect plots from the ASCT output directory that are not yet displayed directly in the Performix UI.
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
---
2+
title: View raw benchmark results and generated plots
3+
weight: 5
4+
5+
### FIXED, DO NOT MODIFY
6+
layout: learningpathall
7+
---
8+
9+
## View the System Characterization results directory
10+
11+
The previous section showed how to view and interpret the tabular benchmark results in Arm Performix. Performix also provides a link to the underlying Arm System Characterization Tool run directory so you can inspect plots that are not yet available in the GUI and access the underlying `.json` data files for integration with other tools.
12+
13+
Click the **Open Run Directory** button on the **Summary** page of your run.
14+
15+
![Arm Performix Summary view with the Open Run Directory button#center](./report-generated.webp "Open Run Directory")
16+
17+
This opens a file browser that contains `.png` and `.json` files for the various benchmarks.
18+
19+
![File browser opened to the Arm System Characterization run directory#center](./run-directory.webp "Run Directory")
20+
21+
## Some example plots
22+
23+
### Latency Sweep
24+
25+
The latency sweep plot shows how the size of a memory access pattern affects memory latency. Red bars indicate the points at which different cache levels become active.
26+
27+
![Arm System Characterization latency sweep plot showing cache-level transitions#center](./latency-sweep-plot.webp "Latency Sweep")
28+
29+
### Bandwidth Sweep
30+
31+
The `bandwidth.png` file shows the results of the bandwidth sweep benchmark.
32+
33+
![Arm System Characterization bandwidth sweep plot across data sizes#center](./bandwidth-sweep-plot.webp "Bandwidth Sweep")
34+
35+
The plot shows how certain memory access sizes can significantly affect system memory bandwidth.
36+
37+
### Core-to-Core Latency
38+
39+
The `core_latency_heatmap_local.png` plot shows a color-coded heatmap of which core combinations incur higher latency.
40+
41+
![Arm System Characterization core-to-core latency heatmap across selected cores#center](./core-to-core-latency-plot.webp "Core-to-Core Latency")
42+
43+
## What you've learned and what's next
44+
45+
In this section:
46+
- You viewed several plots generated by ASCT.
47+
48+
You're now ready to analyze and optimize your own platform with Arm Performix and the Arm System Characterization Tool recipe.
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
---
2+
title: Understand system characteristics with Arm Performix
3+
4+
5+
minutes_to_complete: 60
6+
7+
who_is_this_for: This is an introductory topic for anyone who wants to understand the performance characteristics of a hardware system.
8+
9+
learning_objectives:
10+
- Run Arm Performix's System Characterization recipe to understand hardware configuration and performance
11+
- Interpret memory latency and bandwidth benchmark results
12+
- View the output directory to inspect generated plots and raw results
13+
14+
prerequisites:
15+
- A target machine to benchmark. The Arm System Characterization Tool, included with Performix, is cross-platform and cross-OS.
16+
17+
author:
18+
- Brendan Long
19+
- David Wong
20+
21+
### Tags
22+
skilllevels: Introductory
23+
subjects: Performance and Architecture
24+
armips:
25+
- Neoverse
26+
tools_software_languages:
27+
- Arm Performix
28+
- Arm System Characterization Tool
29+
- Runbook
30+
31+
operatingsystems:
32+
- Linux
33+
34+
further_reading:
35+
- resource:
36+
title: "Find CPU Cycle Hotspots with Arm Performix"
37+
link: /learning-paths/servers-and-cloud-computing/cpu_hotspot_performix/
38+
type: documentation
39+
- resource:
40+
title: Arm Performix User Guide
41+
link: https://developer.arm.com/documentation/110163/latest
42+
type: documentation
43+
44+
### FIXED, DO NOT MODIFY
45+
# ================================================================================
46+
weight: 1 # _index.md always has weight of 1 to order correctly
47+
layout: "learningpathall" # All files under learning paths have this same wrapper
48+
learning_path_main_page: "yes" # This should be surfaced when looking for related content. Only set for _index.md of learning path content.
49+
---
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
# ================================================================================
3+
# FIXED, DO NOT MODIFY THIS FILE
4+
# ================================================================================
5+
weight: 21 # Set to always be larger than the content in this path to be at the end of the navigation.
6+
title: "Next Steps" # Always the same, html page title.
7+
layout: "learningpathall" # All files under learning paths have this same wrapper for Hugo processing.
8+
---
73.6 KB
Loading
90.2 KB
Loading
38.7 KB
Loading
26.3 KB
Loading

0 commit comments

Comments
 (0)