New on LowEndTalk? Please Register and read our Community Rules.
All new Registrations are manually reviewed and approved, so a short delay after registration may occur before your account becomes active.
All new Registrations are manually reviewed and approved, so a short delay after registration may occur before your account becomes active.
nixbench server benchmarking tool
For a VPS comparison site (coming soon-ish), I wanted a simple benchmarking tool. Initially I started with bench.sh from FreeVPS, but since it is written in bash, it's fairly difficult to extend (for me) and I wanted a few more things like machine readable output and Geekbench (which is currently broken).
So I wrote my own tool in Go. Features:
- Simple dd-like write speed test
- Geekbench with automatic score parsing
- Network speed test to locations all around the world
- Optional yaml output
Here is how its output looks:
nixbench 0.1 - github.com/jgillich/nixbench
Host
----
OS : linux
Platform : ubuntu 16.04
Virt :
CPU : Intel(R) Xeon(R) CPU E5-26xx (Sandy Bridge)
Cores : 2
Clock : 2099 Mhz
Disk
----
1. run : 291 MB/s
2. run : 310 MB/s
3. run : 459 MB/s
4. run : 422 MB/s
5. run : 351 MB/s
Average : 367 MB/s
Geekbench
---------
Single-Core Score : 2061
Multi-Core Score : 3717
Result URL : https://browser.geekbench.com/v4/cpu/3666474
Net
---
CDN : 477 Mbit/s
Amsterdam, The Netherlands : 366 Mbit/s
Dallas, USA : 96 Mbit/s
Frankfurt, Germany : 142 Mbit/s
Hong Kong, China : 29 Mbit/s
London, United Kingdoms : 397 Mbit/s
Melbourne, Australia : 41 Mbit/s
Oslo, Norway : 237 Mbit/s
Paris, France : 427 Mbit/s
Querétaro Mexico : 72 Mbit/s
San Jose, USA : 87 Mbit/s
Sao Paulo, Brazil : 46 Mbit/s
Seoul, Korea : 30 Mbit/s
Singapore, Singapore : 38 Mbit/s
Tokyo, Japan : 45 Mbit/s
Toronto, Canada : 126 Mbit/s
Washington, USA : 35 Mbit/s
Consider this a alpha version, I'm looking to improve it based on feedback. So I'm posting here, what features would you guys like to see?
Source and binary is available at: https://github.com/jgillich/nixbench/releases
Comments
Okay, so first question...
How to use/excute it?
The releases link has a Linux x86_64 binary, for other platforms you'd have to build from source with Go (didn't test anything else yet but FreeBSD and Windows should work)Edit: added cross compiled binaries for most platforms.
Usage is fairly simple, no arguments to get the regular output,
--yaml
to get yaml output.--help
works as well.I'll put together a proper readme soon that will include this information, but usage is pretty standard.
one advice , maybe you should add timeout and progress bar for net test ...
because somehow , I don't know if it's bug or just network too slow , it's been hang in there for half hour or so
I didn't realize there is no timeout by default, fixed. But not sure about adding a progress bar, it downloads less than 2 GB which should not take more than a few minutes on a decent connection.
yes well , not every VPS is "decent" , or at least some percentage or something to tell people that thing is downloading , I mean , just like "wget"
I testet the script on a dedicated server I just bought from Hetzner (EX41S-SSD (30 TB) @ 39 euro/mo:
Intel® Core™ i7-6700 Quad-Core Skylake 64 GB DDR4 RAM 2 x 250 GB 6 Gb/s SSD (Software-RAID 1) 1 Gbit/s bandwidth
Here is my results Good tool btw!
nixbench 0.1 - github.com/jgillich/nixbench
Host
OS: linux Platform: ubuntu 16.04 Virt: kvm CPU: Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz Cores: 8 Clock: 4200 Mhz
Disk
1. run : 304 MB/s 2. run : 301 MB/s 3. run : 303 MB/s 4. run : 322 MB/s 5. run : 310 MB/s Average : 308 MB/s
Geekbench
Single-Core Score : 5025 Multi-Core Score : 18202 Result URL : https://browser.geekbench.com/v4/cpu/3667691
Net
CDN: 792 Mbit/s Amsterdam, The Netherlands: 657 Mbit/s Dallas, USA: 88 Mbit/s Frankfurt, Germany: 649 Mbit/s Hong Kong, China: 36 Mbit/s London, United Kingdoms: 527 Mbit/s Melbourne, Australia: 35 Mbit/s Oslo, Norway: 231 Mbit/s Paris, France: 579 Mbit/s Querétaro Mexico: 80 Mbit/s San Jose, USA: 68 Mbit/s Sao Paulo, Brazil: 40 Mbit/s Seoul, Korea: 36 Mbit/s Singapore, Singapore: 31 Mbit/s Tokyo, Japan: 38 Mbit/s Toronto, Canada: 111 Mbit/s Washington, USA: 48 Mbit/s
tested with online.net special E3-1240v2
I'm really surprise with all speed download until I realize it Mbit not MB
Same. LOL
bps is definitely the way to go, though.
There's now also this one-liner to run it:
I changed it to MB/s to match bench.sh.
Very nice written in Golang! ;-)
No bad
Looks pretty awesome
Nice one thanks but there's no fallback for errors.
If you encounter an error on the speed test, from example from softlayer, you dont have the "cake" = no Net Results
Here is how its output looks:
Great tool, is it possible to get the Net test to show a decimal as well? eg Frankfurt, Germany : 150.9 MB/s instead of just 150 MB/s.
Is there any reason you chose Melbourne instead of Sydney?
Only with the yaml output, with the default output they are omitted. I'll consider showing two decimals.
No, none at all. Why is Sydney preferable?
Probably for me it is. Sydney has a slightly bigger population. If I remember correctly bench.sh 2.1 had Sydney. But its your project and all I can say is thanks.
I just thought you might be in Melbourne.
Getting an exit status 1 on my machine. This happens when it goes for the geekbench test.
v0.4.3 will print the Geekbench output when it fails, hopefully it contains a hint.
I've got no problem running this script. Really likes the Geekbench integration
I saw these error on Debian 7
Getting this on an OVH SGP Discovery VPS. Thrice now. Might be a too slow network to one of the mirrors?
Changelog for 0.5:
--all
flag, but also selectively enable benchmarks:nixbench -m disk -m net -m cpu
(comma separation not yet supported unfortunately)Are there any other benchmarks you guys would like to see? AES is already planned for the CPU module. With most providers using SSDs, I'm not sure how useful random IO would be.
I think geekbench should be enabled by default. Its quite important info when comparing results.
This.
I have mixed opinions, it's not available on all OSes and takes a hell of a long time. I vote if it's enabled on default, it's the last task that runs.
v0.6:
I definitely agree, Geekbench is the primary reason why I started this. But there are good reasons why I decided to disable it:
Yes, the Geekbench scoring system makes it easy to compare systems. Which is why I want to do something similar, but fully open source and portable. Until that happens, Geekbench will run by default again.
Hi.
I tried the latest version "https://github.com/jgillich/nixbench/releases/download/v0.6/nixbench-linux-amd64" and there is some problem which closes it before start.
P.S. I can run without any problem 0.52 version.
Oops, I forgot to rename an instance of the modules flag so it ran none. Fixed.