Skip to content

Commit 766801c

Browse files
committed
ASCT install guide
1 parent 03f9f49 commit 766801c

1 file changed

Lines changed: 284 additions & 0 deletions

File tree

content/install-guides/asct.md

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

0 commit comments

Comments
 (0)