Yet Another Benchmark Script (YABS) - Linux Benchmarking Script using dd, iperf, & Geekbench
Hey all,
Over the past few days I started working on a benchmarking script. The goal of the script was to make something slightly different than what's already out there, which incorporates benchmark tests that we find ourselves conducting quite often, namely dd, iperf, and Geekbench.
Here is the GitHub repo where you can review the script and get some additional information:
https://github.com/masonr/yet-another-bench-script
Benchmarking Tests
The script performs three main tests:
- dd - to estimate disk performance. (disclaimer that read speeds may be heavily affected by cache)
- iperf3 - to estimate network performance using parallel threads and by testing speeds in both directions (download and upload). Both IPv4 and IPv6 iperf tests are conducted (if available)
- Geekbench 4 - to estimate total system performance by running a vast array of different CPU/memory intensive benchmarks. Both single and multi-core scores are given along with a link to view the complete system results. The URL to claim the test and add it to your Geekbench profile is written to disk.
Running the Script
The script is very easy to run and does not require any external dependencies to be installed nor elevated privileges to run:
curl -s https://raw.githubusercontent.com/masonr/yet-another-bench-script/master/yabs.sh | bash
The script has been tested on CentOS 7, Debian 9, Debian 10, Fedora 30, Ubuntu 16.04, and Ubuntu 18.04.
Skipping Test(s): Tests can be easily skipped if you don't want to run a specific test that's included with this script. More info can be found on the GitHub project page linked above.
Example Output
Here is example output from the script:
# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #
# Yet-Another-Bench-Script #
# v2019-10-06 #
# https://github.com/masonr/yet-another-bench-script #
# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #
Sun Oct 6 22:03:26 EDT 2019
Basic System Information:
---------------------------------
Processor : Intel(R) Xeon(R) CPU E3-1230 V2 @ 3.30GHz
CPU cores : 8 @ 1600.091 MHz
AES-NI : ✔ Enabled
VM-x/AMD-V : ❌ Disabled
RAM : 31G
Swap : 7.5G
Disk : 213G
dd Disk Speed Tests:
---------------------------------
| Test 1 | Test 2 | Test 3 | Avg
| | | |
Write | 361 MB/s | 357 MB/s | 357 MB/s | 358.333 MB/s
Read* | 409 MB/s | 409 MB/s | 410 MB/s | 409.333 MB/s
iperf3 Network Speed Tests (IPv4):
---------------------------------
Provider | Location (Link) | Send Speed | Recv Speed
| | |
Bouygues Telecom | Paris, FR (10G) | 766 Mbits/sec | 195 Mbits/sec
Online.net | Paris, FR (10G) | 771 Mbits/sec | 156 Mbits/sec
Severius | The Netherlands (10G) | 638 Mbits/sec | 45.5 Mbits/sec
Worldstream | The Netherlands (10G) | 748 Mbits/sec | 56.7 Mbits/sec
wilhelm.tel | Hamburg, DE (10G) | 756 Mbits/sec | 69.1 Mbits/sec
Biznet | Bogor, Indonesia (1G) | busy | busy
Hostkey | Moscow, RU (1G) | 722 Mbits/sec | 489 Mbits/sec
Velocity Online | Tallahassee, FL, US (1G) | 528 Mbits/sec | 374 Mbits/sec
Airstream Communications | Eau Claire, WI, US (10G) | 825 Mbits/sec | 156 Mbits/sec
Hurricane Electric | Fremont, CA, US (1G) | 782 Mbits/sec | busy
iperf3 Network Speed Tests (IPv6):
---------------------------------
Provider | Location (Link) | Send Speed | Recv Speed
| | |
Bouygues Telecom | Paris, FR (10G) | 463 Mbits/sec | 186 Mbits/sec
Online.net | Paris, FR (10G) | 713 Mbits/sec | 75.7 Mbits/sec
Severius | The Netherlands (10G) | 753 Mbits/sec | 73.5 Mbits/sec
Worldstream | The Netherlands (10G) | 740 Mbits/sec | 58.6 Mbits/sec
wilhelm.tel | Hamburg, DE (10G) | 744 Mbits/sec | 75.0 Mbits/sec
Airstream Communications | Eau Claire, WI, US (10G) | 473 Mbits/sec | 149 Mbits/sec
Hurricane Electric | Fremont, CA, US (1G) | busy | busy
Geekbench 4 Benchmark Test:
---------------------------------
Test | Value
|
Single Core | 4012
Multi Core | 13007
Full Test | https://browser.geekbench.com/v4/cpu/14768101
More example output:
- Hetzner Cloud (2GB Nuremberg) Ubuntu 16.04 YABS Result - https://pastebin.com/ZpigDz40
- Hetzner Cloud (2GB Falkenstein) Ubuntu 18.04 YABS Result - https://pastebin.com/1hYi5LFM
- Hetzner Cloud (2GB Helsinki) Fedora 30 YABS Result - https://pastebin.com/ev0uyBZG
- Hetzner Cloud (2GB Nuremberg) Debian 9 YABS Result - https://pastebin.com/Cpg5q44K
- Hetzner Cloud (2GB Falkenstein) Debian 10 YABS Result - https://pastebin.com/0n8agm1i
- Hetzner Cloud (2GB Helsinki) CentOS 7 YABS Result - https://pastebin.com/TKYKLy1Q
Feedback
I welcome any feedback you may have or any bug reports.
Thank you to those who provided input as this was being thought about and those who helped test the script as it was being developed -- thanks FHR, Rhys, scorpio18, Joshua, & ChrisM! Testing the script on different Linux distros was done using Hetzner Cloud.
Feel free to test it out and post your results. Thanks!
-Mason
HTTP/1.1 301 Moved Permanently
Comments
Good one
hostEONS.com - Premium Ryzen VPS, Budget SSD KVM and OpenVZ7 VPS in LA, NY, Jacksonville - Florida, Las Vegas, Dalla, Direct Admin LiteSpeed SSD Web Hosting, etc.. Free Blesta License, Direct Admin License, Windows 2019 License and more
Tested it on my personal laptop (Running MX linux).. worked perfectly. Just the right amount of information/detail. Disk speed, network speed, Geekbench. I appreciate how it's not cluttered by anything else. No doubt you had input/testing.
Awesome, thanks for the feedback, Mark! Happy to hear it worked well on MX linux as I hadn't tested that specific distro. Took quite a bit of trial and error to get things working cross-distros. Thanks again!
HTTP/1.1 301 Moved Permanently
I'm running MX 18 which is based on Debian 9, so it's not too weird of a distro (I hope).
My biggest compliment is to the information provided by your benchmark script. I can only speak for myself, but when I run a benchmark script I'm looking for disk speed and network speed primarily, and the Geekbench is a nice touch. You presented the results in an easy to understand way without being annoying or confusing (or overwhelming), so it's a genuine compliment from this end. I'm definitely bookmarking this one.
Good job on providing necessary info without the clutter.
This looks great!
Would be awesome if it also shows ping results as well
BunnyCDN - The Best CDN | Get $25 From UpCloud | Cheap VPS deals from VirMach! (aff links)
Thank you! Ping results is a pretty good idea. I will try to find a way to incorporate that in.
HTTP/1.1 301 Moved Permanently
Artnet - Poland (Gdańsk) based instant setup express dedicated servers & cloud VPS
ExoticVM.com - Find VPS in exotic locations! - Discussion Thread
Artnet - Poland (Gdańsk) based instant setup express dedicated servers & cloud VPS
ExoticVM.com - Find VPS in exotic locations! - Discussion Thread
Not bad but a bit slow on first dd.
signature for rent - ^_^
Is that HE a 10G link?
BunnyCDN - The Best CDN | Get $25 From UpCloud | Cheap VPS deals from VirMach! (aff links)
Yeah.
signature for rent - ^_^
Not sure why the speedtest didn't work.
Also, I do have a 40G NVMe and a 100G HDD, which are shown as a combined total; the speeds shown are obviously from the NVMe. Not sure if that's a common setup, or the majority of servers just have one drive to deal with.
Happy to check/retest if you want. Otherwise, nice script!
Slowly working to cure my VPS addiction.
Swap : 7.4G
Disk : 221G
dd Disk Speed Tests:
Single Core | 4963
Multi Core | 15898
Full Test | https://browser.geekbench.com/v4/cpu/14768944
Edit: this is a Worldstream server that will be used for a VPN service in a few months
Notes:
The write speed seems off? I'm running 6x500G ssd in Raid10, and getting +-800MB/s writes with a different benchmark
my / is 70GB, and my LVM pool 1.29t. I also have a HDD mounted at /hdd but it seems it doesn't count this, so that's good
You stated that the Velocity server is 1Gbit, but im getting 2Gbit+- speeds. Same for he.net. Server location is in the Netherlands
A few issues:
SYS ARM Debian 9
Scaleway Debian 10
Standard install of iperf is version 2 with this debian buster.
I suspect 'noexec' for /tmp won't be helping
Long live LowEndInfo.com
Nice! Adding ioping would be great. IOPS matters!
Thanks for the bug reports, guys! Going to try and fix those up. Will probably be messaging a few of y'all to figure out your exact system config/specs. Cheers!
HTTP/1.1 301 Moved Permanently
I'm pretty annoyed with geekbench profiles these days, since there's not much way to comment on them, connect them with particular server offers, or download all of them in a batch. Geekbench itself isn't that predictive a benchmark either. On single cpu machines passmark has been pretty good. The dual socket passmark results always seem suspicious to me though.
#lexit spread the word.
This is benchmark from PHP-friend 10GB offer:
The CPU is told to be nested virtual but on your bench script there is VM-x disabled.
I am not a profil and this is CPU flags:
Thanks for the test! A few of the output lines should be overwritten after showing up (the "performing x test..." lines), so I'm curious to find out what specific environment you're running this in.
Can you let me know the info below for your environment?
OS, Kernel, and 32 or 64 bit architecture?
Thanks, not sure how I missed that. Fixed.
Send me some info on your environment so I can debug the speedtest stuffs. It's probably failing to launch iperf for some reason.
Can you let me know your OS, Kernel, and 32 or 64 bit architecture?
The disk space is intentionally supposed to be a grand total of all space on the machine (minus tmpfs and mounted nfs partitions). Where ever the script is ran from is which disk will be tested (i.e. if /data is mounted with the HDD, then run the script from /data to benchmark the HDD speeds).
Yeah, seems that dd is more finicky with benchmarking speeds than I originally anticitipated. Going to look into an alternative to dd to benchmark speeds (possibly ioping and/or fio). Hopefully the speed results would be more reliable after that change.
As for disk space, I tried to make it so that it counts and totals up any disk space on the system (minus tmpfs and mounted nfs partitions). If you don't mind, for the disks that weren't counted, can you let me know the "Type" of the partition? -
df -T
Fixed the Velocity and HE.net link display. Couldn't find them reported anywhere, so had to make a best guess with the limited 10G servers I have access to :P. Thanks for reporting the issues and testing the script!
My guess is that ARM has issues with the downloaded binary. Since it's a pre-compiled binary and isn't installed/compiled locally. Might just have to put in a check and output that iperf tests aren't supported if ARM is the detected architecture.
I'll look into that! Might be easily doable if I switch from dd to some
Thanks for the report! Just fixed this and pushed an update to the repo. Had made a small typo in the line that detects VM-x/AMD-v.
HTTP/1.1 301 Moved Permanently
Nice script. Im kinda bored with freevps.us script, yours gives a nicer touch. Great job
https://myip.my.id/ what is my IP address.
Nice... Ran the script on a few vpses. Threw up interesting results. Will post update in the morning
Blog | Reviews| VPS Benchmarks
I should also point out that refactoring and adding comments to the code are both on my to-do list for this project. For the most part, I just went along and tinkered to try and get things working, then moved on, leaving those portions as is.
Many things in the script should probably be standardized (consistent variable names, consistent if/then statement structure, etc.) and comments added to describe what the hell it's actually doing to make the code more readable and able to be picked up by someone else that may want to contribute.
The script in its current state should be viewed as a 'beta test' of sorts. I only started working on it last week after all, so I'm sure there will be a few iterations of it moving forward as more feedback/bug reports come in.
Anyways, thanks for the interest and comments thus far everyone!
HTTP/1.1 301 Moved Permanently
Awesome.
Encountered issue with Virmach Centos
Works fine with my Upcloud Ubuntu.
Thanks for the report and test! I believe the error is because your /tmp fs has the non-executable flag. I'm going to have it put and run everything in the same directory that the script is run to avoid running into this error in the future, as it seems to be a recurring problem.
HTTP/1.1 301 Moved Permanently
IPv4 test took more than 30 minutes to complete. And now it is running IPv6 which looks like will take another 30+ minutes.
List of all VirMach VPS | VirMach Special Offers
Hmm... Something is definitely off there. Doesn't seem to be able to connect to any of the iperf locations for whatever reason. If you could, send me more info about your environment - OS, Kernel, and 32 or 64 bit architecture?
Also maybe try installing and running iperf3 locally to see if the issue persists even when it's installed natively.
HTTP/1.1 301 Moved Permanently
It's 64 bit Debian 9.
List of all VirMach VPS | VirMach Special Offers
Disabled ufw and ran network test again. By the way does "Send Speed" mean from my VPS to provider or from provider to VPS?
This is a VirMach VPS and I thought ColoCrossing doesn't support IPv6 so how come IPv6 test is showing result?
List of all VirMach VPS | VirMach Special Offers
Glad that solved it. I'll add a disclaimer to the github readme that firewalls might need to be disabled since it uses non-standard ports.
Speeds are from the perspective of the machine that you're benchmarking. So,
Send Speed means: Your VPS ----> Remote Server
Recv Speed means: Remote Server ----> Your VPS
Some of their locations do have IPv6, I believe. At least the ones that are still ServerHub. Which location do you have with them? Or have you possibly set up a HE.net IPv4-to-v6 tunnel?
HTTP/1.1 301 Moved Permanently
Searching IP assigned to this VPS on Google shows "My Server Planet LLC" and ASN "AS36352 ColoCrossing"
List of all VirMach VPS | VirMach Special Offers
Lol ohh god, someone update that immediately
Well, whatever location you're at has IPv6 connectivity as it passes the connectivity check done as part of the script:
HTTP/1.1 301 Moved Permanently
@MasonR solved my issue. I am running CSF and had to add ports 5200-5210 to my TCP_Out rules.
Slowly working to cure my VPS addiction.
Awesome, thanks @MasonR
Here's my Online.net 2.99/month server:
I think I win the read/write speeds so far
(no it's not NVME nor cached).
KnownHost - Fully Managed Shared, Reseller, WordPress, VPS, Cloud, and Dedicated Servers
KnownHost is hiring. Click here for more information.
I'd like to see some real world simulated tests that helps compare servers, like max concurrent nginx users, or max wireguard users, etc.
Also, the world really needs a better replacement for iperf. The more one uses it and sees all the bugs, the more you want to throw it against the wall and stomp on it.
Can we start archiving the results someplace other than on LET threads and geekbench.com?
#lexit spread the word.
That's something that @eva2000 excels at with his centminmod benchmark. Pretty sure he has a script you can run to do all that good stuff and see some real-world results.
HTTP/1.1 301 Moved Permanently
Awesome stuff @MasonR
For years to come families can now play "Guess what I'm idling" every Christmas.
Michael from SmallWeb - Support is only offered via ticket/email. You'll likely find me on LES or HT.
My magical BuyVM slice in Las Vegas just barely beat out your read speed. Thanks @Francisco!
Slowly working to cure my VPS addiction.
send nudes
lurking in the shadows like a wombat or some shit
What kind of SmallOS doesn't have man installed? :P
HTTP/1.1 301 Moved Permanently
FeministVM.
Michael from SmallWeb - Support is only offered via ticket/email. You'll likely find me on LES or HT.
VirMach LA 4G Special

But yet
IPv6 check seems to be broken?
BunnyCDN - The Best CDN | Get $25 From UpCloud | Cheap VPS deals from VirMach! (aff links)
Nice can never have enough benchmark/testing ^_^ Though DD and sequential disk I/O isn't that indicative compared to random read/writes i.e. fio and sysbench. I wrote a generic sysbench benchmark script at https://github.com/centminmod/centminmod-sysbench you can draw some inspiration for it you want
Yeah my centminmodbench.sh script is more tailored to real world for some tests but it's specifically written for centos and centmin mod lemp stack environment heh
Anyway I had opportunity to test run YABs on a fresh dedicated server setup as my old databasebydesign E3-1270v1's 240GB SSD disk died and they replaced the server with E3-1230v2 240GB SSD. Loaded up CentOS 7.7 64bit with Centmin Mod latest beta LEMP stack and then ran your YABs script.
* Centmin Mod LEMP Stack Quick Install Guide
Prem benchmark @MasonR I shall be using this from now on. Great Work!
BillingServ - Easy, simple, and hassle-free online invoicing solution. Contact us today.
BaseServ Certified to ISO/IEC 27001:2013
There are 2 problems with this script with me,
1- Server have 2x500gb HDD 7200 rpm sata3 nothing special but in ZFS RAIDZ1
This dd speed test result is not true...
and also same as @sanvit server have no ipv6 but I can see ipv6 test results.
Yeah, something is off. I'll get it debugged, tested, and patched later today.
Thanks for testing the script out! I agree dd isn't a truly accurate measure. Seems to be the biggest complaint so far, but I haven't found a suitable alternative which won't require external dependencies to be installed/elevated privileges. If you know of one, do tell! Goal is to keep the script as lean and dependency-free as possible -- once something needs to be installed prior or built/compiled to run the test, I've failed my goal :P
Yep, this has been addressed several times over now. What I'll probably end up doing is mimic nench and use ioping for read tests and dd for write tests. Should give a more accurate measure than dd's read.
I'll get the IPv6 stuff figured and patched up at some point today.
HTTP/1.1 301 Moved Permanently
Thanks @MasonR . Quality contribution to the community. As usual.
||||$8?🥔🥔
Markdown on Potatoes.Posting snippets of results from Hosthatch Chicago (after the node replacement / hardware changes over the weekend) and Hostdoc, Finland (HDD). I've put together results from 4 YABS tests here Other two results include Ramnode Dallas - Tinykvm and Stockservers Germany SSD)
So far, the Stockservers VPS took nearly 20 minutes to run the BM,
surprisingly the slowest of the lot.
**Hosthatch Chicago **
Mon Oct 7 16:08:57 IST 2019
Basic System Information:
———————————
Processor : Intel(R) Xeon(R) CPU E5-2690 v2 @ 3.00GHz
CPU cores : 1 @ 2999.998 MHz
AES-NI : ✔ Enabled
VM-x/AMD-V : ❌ Disabled
RAM : 987Mi
Swap : 1.0Gi
Disk : 15G
dd Disk Speed Tests:
———————————
| Test 1 | Test 2 | Test 3 | Avg
| | | |
Write | 185 MB/s | 235 MB/s | 243 MB/s | 221 MB/s
Read* | 311 MB/s | 308 MB/s | 319 MB/s | 312.667 MB/s
HostDoc - Finland (HDD)
Tue Oct 8 20:47:04 IST 2019
Basic System Information:
Processor : Intel(R) Xeon(R) CPU E3-1246 v3 @ 3.50GHz
CPU cores : 3 @ 3499.996 MHz
AES-NI : ✔ Enabled
VM-x/AMD-V : ❌ Disabled
RAM : 1.9Gi
Swap : 2.0Gi
Disk : 28G
dd Disk Speed Tests:
Write | 105 MB/s | 82.7 MB/s | 118 MB/s | 101.9 MB/s
Read* | 89.7 MB/s | 127 MB/s | 61.6 MB/s | 92.7667 MB/s
iperf3 Network Speed Tests (IPv4):
Provider | Location (Link) | Send Speed | Recv Speed
| | |
Bouygues Telecom | Paris, FR (10G) | 818 Mbits/sec | 922 Mbits/sec
Online.net | Paris, FR (10G) | 817 Mbits/sec | 899 Mbits/sec
Severius | The Netherlands (10G) | 822 Mbits/sec | 767 Mbits/sec
Worldstream | The Netherlands (10G) | busy | busy
wilhelm.tel | Hamburg, DE (10G) | 824 Mbits/sec | 778 Mbits/sec
Biznet | Bogor, Indonesia (1G) | 0.00 bits/sec | 0.00 bits/sec
Hostkey | Moscow, RU (1G) | 832 Mbits/sec | 937 Mbits/sec
Velocity Online | Tallahassee, FL, US (10G) | 741 Mbits/sec | 399 Mbits/sec
Airstream Communications | Eau Claire, WI, US (10G) | 703 Mbits/sec | 91.1 Mbits/sec
Hurricane Electric | Fremont, CA, US (10G) | 736 Mbits/sec | busy
iperf3 Network Speed Tests (IPv6):
Provider | Location (Link) | Send Speed | Recv Speed
| | |
Bouygues Telecom | Paris, FR (10G) | 814 Mbits/sec | 923 Mbits/sec
Online.net | Paris, FR (10G) | busy | busy
Severius | The Netherlands (10G) | 823 Mbits/sec | 840 Mbits/sec
Worldstream | The Netherlands (10G) | 819 Mbits/sec | 926 Mbits/sec
wilhelm.tel | Hamburg, DE (10G) | 823 Mbits/sec | 928 Mbits/sec
Airstream Communications | Eau Claire, WI, US (10G) | 704 Mbits/sec | 112 Mbits/sec
Hurricane Electric | Fremont, CA, US (10G) | 722 Mbits/sec | busy
Blog | Reviews| VPS Benchmarks