Definition:
The Ampere Performance Toolkit (APT) is an open-source performance benchmarking and optimization suite developed by Ampere Computing designed to help developers measure, analyze, and tune application performance specifically on AArch64 (ARM64) architecture — particularly on Ampere’s cloud-native processors like Ampere Altra and Ampere Altra Max.
APT is a one-stop performance lab for ARM64 — giving developers the tools to benchmark workloads, identify bottlenecks, and extract maximum performance from Ampere-based cloud infrastructure.
Background — Why APT Exists Most performance tooling was historically built around x86 (Intel/AMD) processors. As ARM64 servers rapidly entered cloud infrastructure (AWS Graviton, Ampere Altra, etc.), developers needed:
Problem: ❌ x86-tuned benchmarks don’t accurately reflect ARM64 behavior ❌ No unified toolkit for cloud-native ARM64 workloads ❌ Hard to compare performance across different processor architectures ❌ Developers manually assembling dozens of separate tools
APT solves this: ✅ ARM64-native benchmarks and profiling ✅ Unified single toolkit, not a patchwork of tools ✅ Designed for cloud-native workloads (web, AI/ML, databases) ✅ Open-source and freely available on GitHub
Example:
Benchmarking a Web API Server Imagine you’re deploying a high-traffic REST API on an Ampere Altra cloud instance and want to validate performance before going to production.
# Clone the toolkit from GitHub
git clone https://github.com/AmpereComputing/ampere-performance-toolkit
cd ampere-performance-toolkit
# Install dependencies (auto-detects ARM64 environment)
./install.sh
# Verify ARM64 detection
apt-info
# Output:
# Architecture : aarch64 ✅
# CPU Model : Ampere Altra Q80-30
# CPU Cores : 80
# Memory : 256 GB
# OS : Ubuntu 22.04 LTS
# apt-config.yaml — define what to test
workloads:
- name: web-server-benchmark
type: http
tool: wrk
target: http://localhost:8080/api/users
duration: 60s
threads: 16
connections: 512
- name: memory-bandwidth
type: memory
tool: STREAM
iterations: 10
- name: cpu-compute
type: cpu
tool: coremark
threads: 80 # use all Altra cores
- name: database-queries
type: database
tool: sysbench
db: postgresql
tables: 10
table_size: 1000000
threads: 32
duration: 120s
report:
format: [html, json]
output: ./results/
apt run --config apt-config.yaml
# Console output:
========================================
Ampere Performance Toolkit v2.1.0
Target: Ampere Altra Q80-30 (aarch64)
========================================
[1/4] Running: web-server-benchmark
→ wrk -t16 -c512 -d60s http://localhost:8080/api/users
→ Progress: ████████████████████ 100%
→ Result: 142,847 req/s ✅
[2/4] Running: memory-bandwidth
→ STREAM benchmark (10 iterations)
→ Progress: ████████████████████ 100%
→ Result: 187.4 GB/s ✅
[3/4] Running: cpu-compute
→ CoreMark (80 threads)
→ Progress: ████████████████████ 100%
→ Result: 384,200 CoreMark ✅
[4/4] Running: database-queries
→ sysbench PostgreSQL (32 threads, 120s)
→ Progress: ████████████████████ 100%
→ Result: 89,432 TPS ✅
========================================
All benchmarks complete ✅
Report: ./results/apt-report-2024-01-15.html
========================================
APT Performance Report — Ampere Altra Q80-30
════════════════════════════════════════════════
📈 Web Server Throughput
Result: 142,847 req/s
Baseline: 120,000 req/s (previous deployment)
Delta: +19.0% improvement ✅
💾 Memory Bandwidth
Result: 187.4 GB/s
STREAM Triad score — excellent for 80-core config ✅
⚠️ Bottleneck Detected — CPU Cache Misses
L3 cache miss rate: 8.2% (threshold: 5.0%) ⚠️
Recommendation:
→ Consider NUMA-aware memory allocation
→ Review data structure locality in hot paths
→ Tune thread affinity to physical cores
🗄️ Database Throughput
Result: 89,432 TPS
Baseline: 91,000 TPS
Delta: -1.7% regression ⚠️
Recommendation:
→ Profile PostgreSQL connection pool settings
→ Review pg_bouncer configuration for ARM64