Skip to content

Commit f2e4cf7

Browse files
Merge pull request #2864 from jasonrandrews/review3
Install Guide for ASCT
2 parents 3534833 + 35d19b1 commit f2e4cf7

2 files changed

Lines changed: 294 additions & 0 deletions

File tree

18.9 KB
Loading

content/install-guides/asct.md

Lines changed: 294 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,294 @@
1+
---
2+
title: Arm System Characterization Tool
3+
4+
additional_search_terms:
5+
- ASCT
6+
- Neoverse
7+
- benchmarking
8+
- performance analysis
9+
- memory latency
10+
- memory bandwidth
11+
- storage performance
12+
13+
minutes_to_complete: 15
14+
15+
test_maintenance: false
16+
17+
# No official documentation
18+
official_docs: https://learn.arm.com/install-guides/asct/
19+
20+
author: Jason Andrews
21+
22+
### PAGE SETUP
23+
weight: 1 # Defines page ordering. Must be 1 for first (or only) page.
24+
tool_install: false # Set to true to be listed in main selection page, else false
25+
multi_install: false # Set to true if first page of multi-page article, else false
26+
multitool_install_part: false # Set to true if a sub-page of a multi-page article, else false
27+
layout: installtoolsall # DO NOT MODIFY. Always true for tool install articles
28+
29+
build:
30+
list: false
31+
render: true
32+
---
33+
34+
The Arm System Characterization Tool (ASCT) is a command-line utility for running low-level benchmarks, diagnostic scripts, and system tests to analyze and debug performance on Arm-based platforms. ASCT provides a standardized environment for evaluating key hardware characteristics and is especially suited for platform bring-up, system tuning, and architectural comparison tasks.
35+
36+
ASCT provides capabilities for:
37+
- Memory latency and bandwidth benchmarking across NUMA nodes
38+
- Storage I/O performance testing
39+
- System hardware and software configuration reporting
40+
- Core-to-core latency measurements
41+
- Cache hierarchy mapping through sweep operations
42+
43+
ASCT is available for Linux on Arm (AArch64) systems and requires Python 3.10 or later.
44+
45+
## What should I do before installing ASCT?
46+
47+
ASCT requires a Linux system running on Arm hardware. Confirm you are using an Arm computer with 64-bit Linux by running:
48+
49+
```bash
50+
uname -m
51+
```
52+
53+
The output should be:
54+
55+
```output
56+
aarch64
57+
```
58+
59+
If you see a different result, you are not using an Arm computer running 64-bit Linux.
60+
61+
### Install prerequisites
62+
63+
Before installing ASCT, ensure you have the required system packages:
64+
65+
```bash
66+
sudo apt update
67+
sudo apt install python3 python3-pip python-is-python3 gcc make numactl fio linux-tools-generic linux-tools-$(uname -r) -y
68+
```
69+
70+
These packages are required for:
71+
- `python3` - Python 3.10 or later for running ASCT
72+
- `gcc` and `make` - For compiling benchmark components
73+
- `numactl` - For NUMA-aware memory benchmarks
74+
- `fio` - Version 3.36 or later for storage benchmarks
75+
- `linux-tools-generic` and `linux-tools-$(uname -r)` - Linux Perf for performance analysis
76+
77+
For more information about installing Perf on different Linux distributions, see the [Perf install guide](/install-guides/perf/).
78+
79+
## How do I download and install ASCT?
80+
81+
ASCT is distributed as a Python package and requires Python 3.10 or later.
82+
83+
### Download ASCT
84+
85+
Download the latest ASCT release from the [artifacts.tools.arm.com](https://artifacts.tools.arm.com/asct/dist/) page.
86+
87+
For example, to download version 0.4.2:
88+
89+
```bash
90+
wget https://artifacts.tools.arm.com/asct/dist/0.4.2/asct-0.4.2+3b955c2.tar.gz
91+
```
92+
93+
### How do I install ASCT using uv?
94+
95+
The recommended installation method uses [uv](https://github.com/astral-sh/uv), a fast Python package installer. First, install `uv`:
96+
97+
```bash
98+
curl -LsSf https://astral.sh/uv/install.sh | sh
99+
```
100+
101+
Install ASCT system-wide using:
102+
103+
```bash
104+
UV_TOOL_BIN_DIR=/usr/local/bin sudo -E $(which uv) tool install asct-0.4.2+3b955c2.tar.gz
105+
```
106+
107+
This installs ASCT to `/usr/local/bin` making it available system-wide. Installing to `/usr/local/bin` instead of the default `~/.local/bin` allows you to run ASCT with `sudo`, which is required for some benchmarks to access system resources and configure huge pages.
108+
109+
### How do I verify that ASCT is installed?
110+
111+
After installing ASCT, verify the installation by checking the version:
112+
113+
```bash
114+
asct version
115+
```
116+
117+
The output is similar to:
118+
119+
```output
120+
ASCT 0.4.2+3b955c2
121+
```
122+
123+
You can also display the help information:
124+
125+
```bash
126+
asct --help
127+
```
128+
129+
The output displays available commands and benchmarks.
130+
131+
## How do I use ASCT?
132+
133+
ASCT provides several commands for benchmarking and system analysis, including `run`, `system-info`, `list`, `diff`, and `sysreg`.
134+
135+
Some benchmarks require `sudo` or root privileges to configure huge pages and access certain system information. You can run ASCT without `sudo`, but some benchmarks might be unavailable or limited in functionality.
136+
137+
### Get system information
138+
139+
To generate a system information report:
140+
141+
```bash
142+
sudo asct system-info
143+
```
144+
145+
To save the system information in JSON format:
146+
147+
```bash
148+
sudo asct system-info --format json --output-dir my_output
149+
```
150+
151+
### List available benchmarks
152+
153+
To see all available benchmarks and their associated keywords:
154+
155+
```bash
156+
asct list
157+
```
158+
159+
### Run benchmarks
160+
161+
To run the default set of benchmarks:
162+
163+
```bash
164+
sudo asct run
165+
```
166+
167+
To run all available benchmarks (including optional ones):
168+
169+
```bash
170+
sudo asct run all
171+
```
172+
173+
To run specific benchmarks by name:
174+
175+
```bash
176+
sudo asct run latency-sweep idle-latency
177+
```
178+
179+
Each benchmark has associated keywords that describe its characteristics. You can use these keywords to run groups of related benchmarks without specifying each one individually.
180+
181+
To run all benchmarks tagged with the `memory` keyword:
182+
183+
```bash
184+
sudo asct run memory
185+
```
186+
187+
To run all benchmarks tagged with both `latency` and `bandwidth` keywords:
188+
189+
```bash
190+
sudo asct run latency bandwidth
191+
```
192+
193+
Common keywords include `memory`, `storage`, `latency`, `bandwidth`, `sweep`, and `long-runtime`. Use `asct list` to see which keywords are associated with each benchmark.
194+
195+
To exclude benchmarks by keyword, prepend the keyword with the `^` character:
196+
197+
```bash
198+
sudo asct run all ^bandwidth
199+
```
200+
201+
This runs all benchmarks except those tagged with the `bandwidth` keyword.
202+
203+
To save benchmark results in CSV format:
204+
205+
```bash
206+
sudo asct run --format csv --output-dir results
207+
```
208+
209+
By default, ASCT saves output in a directory named `data.<YYYYMMDD_HHMMSS_microseconds>` in the current working directory. Use `--output-dir` to specify a custom location.
210+
211+
### Compare results
212+
213+
To compare results from multiple ASCT runs:
214+
215+
```bash
216+
asct diff --output-dir results1 --output-dir results2
217+
```
218+
219+
## What are the available benchmarks?
220+
221+
ASCT includes several categories of benchmarks:
222+
223+
Memory benchmarks:
224+
- `latency-sweep` (`ls`) - Measures memory latency across data sizes from 128 bytes to 1 GiB, revealing cache hierarchy transitions. Uses 1 GiB huge pages to reduce TLB impact. Calculates optimal data sizes for L1, L2, LLC, and DRAM.
225+
- `idle-latency` (`il`) - Reports a matrix of idle memory latency across NUMA nodes
226+
- `peak-bandwidth` (`pb`) - Measures peak memory bandwidth
227+
- `cross-numa-bandwidth` (`cnb`) - Measures cross-NUMA node memory bandwidth
228+
- `bandwidth-sweep` (`bs`) - Sweeps bandwidth by data size to map cache hierarchy
229+
- `loaded-latency` (`ll`) - Measures memory latency under load conditions (not run by default)
230+
- `c2c-latency` (`ccl`) - Measures core-to-core communication latency
231+
232+
Storage benchmarks:
233+
- `storage-request-size-sweep` (`srss`) - Sweeps I/O request sizes to measure performance
234+
- `storage-io-depth-sweep` (`sids`) - Sweeps I/O queue depths to find optimal settings
235+
- `storage-process-count-sweep` (`spcs`) - Sweeps process counts to measure scaling
236+
- `storage-access-pattern-sweep` (`saps`) - Evaluates different workload profiles including sequential and random access (not run by default)
237+
238+
You can filter benchmarks using keywords like `latency`, `bandwidth`, `memory`, `storage`, `sweep`, or `long-runtime`.
239+
240+
## What output formats are supported?
241+
242+
ASCT supports three output formats:
243+
- `stdout` - Human-readable console output (default)
244+
- `csv` - Individual CSV files for each benchmark (for example, `benchmark-name.csv`)
245+
- `json` - Single combined JSON file (`report.json`) containing all results
246+
247+
Specify the format using the `--format` or `-f` option:
248+
249+
```bash
250+
sudo asct run --format json
251+
```
252+
253+
## What other options are available?
254+
255+
ASCT provides several additional options:
256+
257+
- `--log-level` or `-L` - Set logging verbosity (debug, info, warning, error, critical)
258+
- `--log-file` - Save logs to a specific file
259+
- `--force` - Overwrite existing output directory
260+
- `--quiet` or `-q` - Disable all output to stdout and stderr
261+
- `--no-progress-bar` - Use single-line updates instead of animated progress bar
262+
- `--dry-run` - Show which benchmarks would run without executing them
263+
- `--no-cache` - Disable cached benchmark data
264+
- `--clear-cache` - Clear cached benchmark data
265+
266+
Setting `--log-level` to `debug` is useful if the tests are not running due to permission settings or a missing software dependency.
267+
268+
Some of the tests also generate graphs.
269+
270+
An example of a bandwidth graph is shown below:
271+
272+
![Example bandwidth sweep benchmark output showing memory bandwidth measurements across different data sizes on an Arm system, with a graph displaying bandwidth in GB/s on the y-axis and data size in MB on the x-axis](/install-guides/_images/asct-bw.webp)
273+
274+
## How do I uninstall ASCT?
275+
276+
If you installed ASCT using `uv`, remove it with:
277+
278+
```bash
279+
sudo -E $(which uv) tool uninstall asct
280+
```
281+
282+
## Where can I find more information?
283+
284+
Use the built-in help command to get detailed information about any ASCT command:
285+
286+
```bash
287+
asct help <command>
288+
```
289+
290+
For example:
291+
292+
```bash
293+
asct help run
294+
```

0 commit comments

Comments
 (0)