Benchkit
Benchkit is a developer-centric toolkit module for Android with a plethora of tools for in-depth profiling and benchmarking. Many of the tools are focused on kernel benchmarking, but userspace (i.e. Android) benchmarking is also covered by some of them. This module aims to make empirical data-driven development more accessible so people can make optimal tuning decisions based on real results.
The only supported CPU architecture is little-endian AArch64, which includes almost all modern Android phones.
Contents
Command-line utilities:
- Bonnie++: General filesystem and I/O benchmark
- callbench:
Measure the speed of simple time syscalls (with and without vDSO) and basic in-memory I/O using
mmap(2)
andread(2)
. A 32-bit version is available ascallbench32
for 32-bit vDSO testing. - cyclictest: Measure timer jitter, useful for real-time latency testing
- Dhrystone: Simple CPU integer performance benchmark typically used for calculating CPU capacities for an EAS energy model
- Flexible I/O Tester (
fio
): Flexible generic I/O tester that can simulate a variety of configurable workloads - GTcycles: Measure the frequency of the CPU’s generic timer
- Hackbench: Scheduler wakeup latency and pipe benchmark
- IOzone: General filesystem and I/O benchmark
- memcpy:
Measure memory bandwidth using libc’s
memcpy(3)
function - perf:
Profiling tool (from Linux 4.9) for kernel and userspace. Some microbenchmarks are also available in
perf bench
. - rt-app:
Flexible real-time application simulator designed to replicate typical mobile workloads in a reproducible manner. Some reference tests from ARM are available in
/system/etc/rt-app
. - schbench: Scheduler wakeup latency benchmark
- stress-ng: Stress-test various hardware and kernel subsystems
- sysbench: Scriptable database and system performance benchmark with several built-in tests
- hyperfine: Advanced benchmark runner that makes it easy to run benchmarks in a statistically sound manner and export results into machine-readable formats
- synthmark: Benchmark CPU performance with real-time audio workloads (by Google; CLI version)
Android apps:
- JankBenchX: joshuous’ modified version of AOSP JankBench for automatic reproducible UIBench testing
- TouchLatency: Test touch latency and jank in simple scenes (from AOSP)
- UIBench: Google’s AOSP app for testing various mobile workloads and UI rendering tasks
- Audio Latency Test (shows as “Latency Test”): Test end-to-end (i.e. speaker to microphone) audio latency (from Superpowered)
- SynthMark: Benchmark CPU performance with real-time audio workloads (by Google; GUI version)
- OboeTester: Various audio-related tests including latency and glitch testing (by Google)
Links
Credits
- ARM for LISA and Workload Automation
- celtare21 for the IOzone executable
- The respective authors of all tests included in this module