A professional Linux server benchmark suite. Disk, network, and CPU performance in one clean pass — with route tracing, latency matrix, forum-ready markdown reports, structured JSON, local history, and run-to-run comparison.
Inspired by Yet-Another-Bench-Script, rebuilt with a modular architecture and modern defaults.
- Disk —
fiorandom mixed R/W (50/50) at 4k / 64k / 512k / 1m block sizes, parsed from fio's native JSON output (no fragile terse-format field indexes). Sequentialddfallback when fio is unavailable. - Network —
iperf3send/receive against a configurable server list (config/iperf_servers.conf), with retries, timeouts, and latency measurement. - CPU — Geekbench 5/6/7 wrapper. Upload to the Geekbench Browser is opt-in; scores are parsed from process output, never scraped from HTML. Raw Geekbench logs are preserved on failure for easy diagnosis. An offline openssl-based CPU test is available when you don't want Geekbench at all.
- Backtrace —
mtr/tracerouteto popular endpoints with automatic tool fallback, plus a latency matrix (IPv4 + IPv6) against well-known anycast IPs. - Server preflight — TCP-reachability check of the iperf list before burning 20 minutes on dead servers.
- System info — CPU, AES-NI, virtualization flags, RAM/swap/disk, distro, kernel, hypervisor type, IPv4/IPv6 connectivity, ISP/ASN/geo over HTTPS.
- Output — human-readable tables plus valid, escaped JSON (
--json FILE) and a markdown summary ready to paste into forums or tickets (--markdown FILE). - History — every run appends to
~/.local/share/sysbenchx/history.jsonl. - Compare —
--comparediffs key metrics against the previous run.
One command, no clone needed:
curl -sL https://raw.githubusercontent.com/anjarman20/SysBenchX/main/dist/sysbenchx | bashPass flags the same way:
curl -sL https://raw.githubusercontent.com/anjarman20/SysBenchX/main/dist/sysbenchx \
| bash -s -- --backtrace --markdown result.md --json result.jsonOr work from a clone:
git clone https://github.com/anjarman20/SysBenchX.git
cd SysBenchX
./sysbenchx.shOr build the portable single-file version yourself:
make dist
./dist/sysbenchx --skip-cpuNote: the committed
dist/sysbenchxis regenerated withmake diston every release.
./sysbenchx.sh [options]
--skip-disk skip fio disk benchmark
--skip-net skip iperf3 network benchmark
--skip-cpu skip Geekbench benchmark
--cpu-offline replace Geekbench with an offline openssl CPU test
--backtrace traceroute/mtr to popular endpoints + latency matrix
--check-servers test iperf server reachability, then exit (no benchmark)
--no-ipinfo skip ISP/ASN/geo lookup
--gb VERSION Geekbench version: 5, 6 or 7 (default 6)
--gb-upload upload Geekbench results to the Geekbench Browser
--servers SPEC iperf server list: local file path or https URL
--reduce run only three iperf locations (saves bandwidth)
--json FILE write full results as JSON to FILE
--markdown FILE also write a markdown summary (forum-ready) to FILE
--no-history disable local history
--compare compare key metrics against the previous run
--install-deps fall back to the package manager when fio/iperf3 are missing
(static binaries are fetched automatically by default)
--prefer-bin prefer downloaded binaries over system packages
--quiet suppress progress output
--debug verbose debug logging
--no-color disable colored output
# full run: everything, machine-readable + human-readable output
./sysbenchx.sh --json result.json --markdown result.md
# quick network-only check against fewer servers
./sysbenchx.sh --skip-disk --skip-cpu --reduce
# routes + latency only, no benchmarks at all
./sysbenchx.sh --skip-disk --skip-net --skip-cpu --backtrace
# benchmark, then diff against last time
./sysbenchx.sh --compare
# make sure your provider doesn't block iperf ports first
./sysbenchx.sh --check-serversBasic System Information
---------------------------------
Uptime : 12 days, 4 hours, 31 minutes
Processor : AMD EPYC 7443P 24-Core Processor
CPU cores : 2 @ 2850 MHz
AES-NI : ✔ Enabled
VM-x/AMD-V : ❌ Disabled
RAM : 2.0 GiB
...
iperf3 Network Speed Tests (IPv4)
---------------------------------
Provider | Location (Link) | Send Speed | Recv Speed | Ping
Clouvider | London UK (10G) | 12.27 Mbps | 2.31 Mbps | 181 ms
Leaseweb | Singapore SG (10G) | 22.96 Mbps | 9.86 Mbps | 25.6 ms
Latency Matrix
---------------------------------
Target | IPv4 | IPv6
1.1.1.1 | 16.6 ms | --
cloudflare.com | 13.0 ms | --
...
None required up front — same zero-config philosophy as YABS:
- System
fio/iperf3are used when already installed. - Missing tools are auto-provisioned: a static binary matching your architecture is downloaded into a temp workspace and removed on exit. No root needed, nothing touches your system.
--install-depsadditionally allows falling back to your package manager (apt/dnf/yum/apk/zypper).- If neither route works, that benchmark is skipped with a warning and the rest of the run continues.
Optional extras: mtr or traceroute for --backtrace, openssl (usually
preinstalled) for --cpu-offline. Both degrade gracefully when absent.
iperf servers live in config/iperf_servers.conf:
host|port_range|provider|location|modes
lon.speedtest.clouvider.net|5200-5209|Clouvider|London UK (10G)|IPv4+IPv6
Point --servers at any file or HTTPS URL to use your own list without
touching the code.
Results history: ~/.local/share/sysbenchx/history.jsonl
(one JSON object per line — pipe it into jq freely).
make lint # shellcheck everything
make test # unit checks (dependency-free)
make dist # single-file portable buildRequires bash >= 4. CI runs shellcheck + tests on every push.
MIT — see LICENSE.