Skip to content

Latest commit

 

History

20 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SysBenchX

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.

Features

  • Diskfio random 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). Sequential dd fallback when fio is unavailable.
  • Networkiperf3 send/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.
  • Backtracemtr/traceroute to 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--compare diffs key metrics against the previous run.

Quick start

One command, no clone needed:

curl -sL https://raw.githubusercontent.com/anjarman20/SysBenchX/main/dist/sysbenchx | bash

Pass flags the same way:

curl -sL https://raw.githubusercontent.com/anjarman20/SysBenchX/main/dist/sysbenchx \
  | bash -s -- --backtrace --markdown result.md --json result.json

Or work from a clone:

git clone https://github.com/anjarman20/SysBenchX.git
cd SysBenchX
./sysbenchx.sh

Or build the portable single-file version yourself:

make dist
./dist/sysbenchx --skip-cpu

Note: the committed dist/sysbenchx is regenerated with make dist on every release.

Usage

./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

Examples

# 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-servers

Sample output

Basic 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      | --
...

Dependencies

None required up front — same zero-config philosophy as YABS:

  1. System fio/iperf3 are used when already installed.
  2. 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.
  3. --install-deps additionally allows falling back to your package manager (apt/dnf/yum/apk/zypper).
  4. 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.

Configuration

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).

Development

make lint    # shellcheck everything
make test    # unit checks (dependency-free)
make dist    # single-file portable build

Requires bash >= 4. CI runs shellcheck + tests on every push.

License

MIT — see LICENSE.

About

System Benchmark eXplorer,A modern, all-in-one Linux system benchmark and diagnostic tool.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages