Repository navigation
Comparison with Other Bench Scripts
YABS is one of several one-line Linux benchmark scripts. They overlap a lot — all print system information and all test the disk and network in some way — but they differ in which tools they wrap and therefore in what their numbers mean. This page is a neutral map of the field so you can read other scripts' output, choose the right tool for a question, and understand why YABS results cannot be compared with bench.sh or nench results.
| YABS | bench.sh (teddysun) | nench.sh (n-st) | ServerBench / vpsbench / busytest family | |
|---|---|---|---|---|
| First released | Oct 2019 | 2015 | 2017 | early–mid 2010s |
| Run command | curl -sL yabs.sh | bash |
wget -qO- bench.sh | bash |
curl -s wget.racing/nench.sh | bash |
varies |
| CPU test | Geekbench 4/5/6/7 (single + multi, public result URL) | none | timed SHA-256, bzip2 and AES (OpenSSL) passes over 500 MB from /dev/zero (single-thread, seconds) |
none or simple loops |
| Disk test |
fio, random mixed 50/50 at 4k/64k/512k/1m, IOPS + MB/s, direct I/O; dd fallback |
dd sequential write 1 GiB ×3 (conv=fdatasync) |
ioping latency/seq read + dd sequential write 1 GiB (conv=fdatasync) |
dd sequential write |
| Network test | iperf3, 8 parallel streams, upload and download, 7 public servers, IPv4 + IPv6, ping | Ookla speedtest CLI to ~12 Speedtest.net nodes (download, upload, latency) | 9 × 100 MB curl downloads (Cachefly, Leaseweb, Softlayer, OVH, Online.net ...), IPv4 and IPv6, 10 s timeout |
wget downloads from mirrors |
| Needs installed tools | bash + coreutils + curl/wget (+ tar for Geekbench); downloads static fio/iperf3 |
downloads Ookla speedtest binary |
curl, gawk, coreutils, util-linux, procps; downloads static ioping
|
wget |
| Root required | no | no | no | no |
| Machine-readable output | JSON (-j/-w/-s) + several databases accept it |
no | no | no |
| Architectures | x64, x86, aarch64, arm, riscv64 | x86/ARM (wherever the Ookla binary exists) | x86_64 (static ioping binary) | x86 |
| Typical runtime | 5–15 min | 2–5 min | 1–3 min | 1–3 min |
| Data moved | tens of GB on fast ports (use -r/-i) |
a few GB | ~1 GB | ~1 GB |
Other tools people reach for, which are not one-liners but overlap in purpose:
| Tool | What it adds | Where it falls short for VPS shopping |
|---|---|---|
sysbench (cpu, memory, fileio, oltp) |
Standardised CPU prime loop, memory bandwidth, database-style I/O; good for A/B between two hosts | Scores depend heavily on version and flags; not widely posted so little to compare against |
| UnixBench | Classic whole-system index | Old, single-number, very long runtime, sensitive to compiler |
| Phoronix Test Suite | Hundreds of real-application benchmarks | Heavy, slow, needs dependencies |
| ServerScope (defunct) | fio-based web service with result storage; an inspiration for YABS's fio test and JSON uploads | No longer operating |
| VPSBenchmarks "Private Trials" | Multi-day endurance, web and database workloads, run by a third party | Paid / not something you run yourself in a minute |
| ioping / fio by hand | Latency percentiles, long sustained runs, your own mix and block sizes | You have to know what you are doing; nothing to compare with |
| iperf3 to your own server | Honest throughput between two endpoints you control | Needs a second machine |
- A bench.sh or nench "I/O speed" of 500 MB/s is a sequential write with one request in flight (
dd). It tells you how fast a big file copies. It says nothing about random I/O, and because it is a single stream it undersells NVMe badly. - A YABS 1m Total is the closest analogue (large blocks, but random and mixed read/write, 128 requests in flight) and will usually be higher than a
ddfigure on the same disk. - A YABS 4k IOPS figure has no counterpart in the other scripts at all; it is the number that predicts database and web-application responsiveness.
- nench's
iopingoutput (request latency in microseconds/milliseconds and a "seq read" MB/s) is useful but cache-affected, which is exactly why YABS droppediopingin January 2020 after a brief trial.
- bench.sh uses Ookla's Speedtest, which measures what a browser-style client would see to a nearby consumer speed-test node: multiple connections, short duration, optimised for showing the port's peak. Results are often higher than YABS to far locations and similar nearby.
- nench measures the throughput of one HTTP download per location; on fast ports this is bounded by the single-stream TCP window and by the mirror, so 1 Gbit/s servers often show 200–600 Mbit/s.
- YABS pushes 8 parallel TCP streams in both directions to dedicated iperf3 servers. It is the only one of the three that measures upload properly and the only one that shows what a server (as opposed to a client) can do.
Only YABS and nench test the CPU at all, and in very different ways. nench's timed hash/compression/encryption passes over 500 MB is a quick single-core sanity check in seconds (lower is better). Geekbench runs a battery of real-world workloads, produces single- and multi-core scores calibrated against a reference machine, and publishes a page you can compare against millions of other results. That comparability is the main reason YABS chose it, despite Geekbench being closed-source, needing ~1 GiB RAM, and uploading results publicly.
YABS did not set out to replace bench.sh or nench — its README still credits both as inspiration and its author called it "just yet another bench script to add to your arsenal". What it set out to do was bundle the three tools the low-end hosting community was already running by hand (iperf3, fio, Geekbench) into something as easy to run as bench.sh. The trade-off it accepted is longer runtime and heavier bandwidth use in exchange for numbers that are closer to how a server is actually used. See History and Design Principles.
| You want to know... | Use |
|---|---|
| "Is this new VPS roughly what I paid for?" | YABS (full run) |
| "How does it compare with what others got on the same plan?" | YABS + a results database, or the Geekbench Browser link |
| "Quick sanity check in 60 seconds on a tiny bandwidth plan" |
yabs.sh -i (no network), or nench |
| "What does a typical consumer speed test say from this box?" | bench.sh |
| "Is my disk's tail latency acceptable for a database?" |
fio by hand with latency percentiles, or ioping
|
| "Will my application be faster here?" | Your application, timed |
Repository · Issues · Binary releases · Usage stats · curl -sL yabs.sh | bash · Licensed under the WTFPL
Using YABS
- Getting Started
- Command-Line Flags
- Understanding the Output
- Interpreting Results
- Benchmarks Are Snapshots
- JSON Output and Integrations
The tests
Internals
Help and project
Background