ABS benchmarks CPU, memory, disk, and fsync on a Linux VPS, then gives one simple verdict: keep, keep with caution, avoid, or incomplete.
curl -fsSL https://raw.githubusercontent.com/getaskclaw/abs/main/abs.sh | bashTerminal output is Chinese by default. A normal run usually finishes within three minutes after dependencies are installed. ABS may install sysbench, fio, python3, and curl.
# English output
curl -fsSL https://raw.githubusercontent.com/getaskclaw/abs/main/abs.sh | bash -s -- --lang en
# Do not install missing tools
curl -fsSL https://raw.githubusercontent.com/getaskclaw/abs/main/abs.sh | bash -s -- -n
curl | bashexecutes downloaded code directly. To inspect it first:curl -fsSLo abs.sh https://raw.githubusercontent.com/getaskclaw/abs/main/abs.sh less abs.sh bash abs.sh --lang en
English mode keeps the stable result codes:
==================== ABS RESULT ====================
SCORE : FULL 1568 (local only; network reference 136)
VERDICT : MAYBE - disk component is weak (component score 306); weak durable-write/fsync
LOCAL : FULL 1568 (local only: cpu,mem,disk,fsync; network excluded)
NETWORK : SANITY 136 (Cloudflare HTTP; reference only, not in score)
====================================================
- KEEP: local performance is healthy
- MAYBE: usable, but has a clear weakness
- AVOID: weak local performance or a critical bottleneck
- INCOMPLETE: CPU, memory, disk, or fsync data is missing
FULL means all core tests completed; it does not mean the VPS is fast. Do not compare a PARTIAL - not comparable result with a full result.
- CPU: single-thread and all-thread throughput
- Memory: sequential read and write
- Disk: sequential, 4K QD1, and pressure tests
- fsync: durable 4K writes
- Network: a short Cloudflare reference check
40% CPU + 15% memory + 30% 4K QD1 disk + 15% fsync
Network never changes the headline score. ABS also applies a component floor: below 250 forces AVOID; below 500 prevents KEEP.
Compare results only when ABS version, profile, thread count, fio size, and DIRECT setting match. Only a full local result with DIRECT=1 is directly comparable.
# Quick check, about 60 seconds
curl -fsSL https://raw.githubusercontent.com/getaskclaw/abs/main/abs.sh | bash -s -- --quick
# Full test, about 5–8 minutes
curl -fsSL https://raw.githubusercontent.com/getaskclaw/abs/main/abs.sh | bash -s -- --full
# Skip network; the local score remains valid
curl -fsSL https://raw.githubusercontent.com/getaskclaw/abs/main/abs.sh | bash -s -- --no-network
# Save JSON
curl -fsSL https://raw.githubusercontent.com/getaskclaw/abs/main/abs.sh | bash -s -- --json-file result.json
# Cloudflare plus three public iperf3 regions
curl -fsSL https://raw.githubusercontent.com/getaskclaw/abs/main/abs.sh | bash -s -- --network-fullRun bash abs.sh --lang en --help for every option.
- Terminal output defaults to Chinese; use
--lang enorABS_LANG=enfor English results.tsvmetric names andresult.jsonfields and values remain stable English- Language selection does not change scoring or machine output
If dependency installation fails, ABS prints a short cause, a repair hint when known, and the log path, then continues with an incomplete result. In an interactive terminal, ABS attaches sudo to /dev/tty, so curl | bash can still prompt for the sudo password; headless runs use non-interactive sudo and fail quickly. ABS does not run system repair commands such as dpkg --configure -a automatically.
The default Cloudflare check downloads 10 MB and uploads 5 MB of zero data. Each attempt has a 45-second timeout and one retry. Use --network-full or --network-yabs for broader network checks.
- ABS uploads no benchmark result
- Logs use a private random
/tmp/abs.*directory - Disk test files use a separate temporary directory and are removed afterward
- Existing
abs.test*andabs-dd.testfiles are preserved - A
ddfallback may run when fio is missing, but it is not scored - Minimal Alpine systems need Bash first:
apk add bash
python3 -m unittest -v tests/test_abs.pyGitHub Actions runs the suite on every push and pull request.
MIT