Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!


nixbench server benchmarking tool
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.

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

«1

Comments

  • Okay, so first question...
    How to use/excute it?

  • jgillichjgillich Member
    edited August 2017

    qtwrk said: 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

    Thanked by 1phpmin
  • jgillichjgillich Member
    edited August 2017

    @qtwrk said:
    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.

  • @jgillich said:

    @qtwrk said:
    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"

  • kepederkepeder Member
    edited August 2017

    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

    nixbench 0.1 - github.com/jgillich/nixbench
    
    Host
    ----
    
    OS        : linux
    Platform  : debian 8.8
    Virt      : kvm
    CPU       : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz
    Cores     : 8
    Clock     : 3800 Mhz
    
    
    Disk
    ----
    
    1. run   : 140 MB/s
    2. run   : 157 MB/s
    3. run   : 154 MB/s
    4. run   : 155 MB/s
    5. run   : 151 MB/s
    Average  : 151 MB/s
    
    
    Geekbench
    ---------
    
    Single-Core Score  : 3219
    Multi-Core Score   : 8142
    Result URL         : https://browser.geekbench.com/v4/cpu/3669415
    
    
    Net
    ---
    
    CDN                           : 811 Mbit/s
    Amsterdam, The Netherlands    : 599 Mbit/s
    Dallas, USA                   : 98 Mbit/s
    Frankfurt, Germany            : 183 Mbit/s
    Hong Kong, China              : 37 Mbit/s
    London, United Kingdoms       : 574 Mbit/s
    Melbourne, Australia          : 39 Mbit/s
    Oslo, Norway                  : 99 Mbit/s
    Paris, France                 : 600 Mbit/s
    Querétaro Mexico              : 14 Mbit/s
    San Jose, USA                 : 89 Mbit/s
    Sao Paulo, Brazil             : 27 Mbit/s
    Seoul, Korea                  : 25 Mbit/s
    Singapore, Singapore          : 25 Mbit/s
    Tokyo, Japan                  : 25 Mbit/s
    Toronto, Canada               : 108 Mbit/s
    Washington, USA               : 24 Mbit/s
    
  • I'm really surprise with all speed download until I realize it Mbit not MB

  • @sibaper said:
    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:

    curl -sS https://raw.githubusercontent.com/jgillich/nixbench/master/nixbench.sh | sh
    

    @sibaper said:
    I'm really surprise with all speed download until I realize it Mbit not MB

    I changed it to MB/s to match bench.sh.

    Thanked by 1sibaper
  • TomTom Member

    Very nice written in Golang! ;-)

  • No bad

    [root@test ~]# curl -sS https://raw.githubusercontent.com/jgillich/nixbench/master/nixbench.sh | sh
    nixbench 0.3 - https://github.com/jgillich/nixbench
    
    Host
    ----
    
    OS        : linux
    Platform  : centos 7.2.1511
    CPU       : Intel(R) Xeon(R) CPU E3-1270 v6 @ 3.80GHz
    Cores     : 4
    Clock     : 3792 Mhz
    
    
    Disk
    ----
    
    1. run   : 392 MB/s
    2. run   : 441 MB/s
    3. run   : 365 MB/s
    4. run   : 453 MB/s
    5. run   : 399 MB/s
    Average  : 410 MB/s
    
    
    Geekbench
    ---------
    
    Single-Core Score  : 3161
    Multi-Core Score   : 7300
    Result URL         : https://browser.geekbench.com/v4/cpu/3674235
    
    
    Net
    ---
    
    CDN: 992 Mbit/s
    Amsterdam, The Netherlands: 857 Mbit/s
    Dallas, USA: 98 Mbit/s
    Frankfurt, Germany: 853 Mbit/s
    Hong Kong, China: 46 Mbit/s
    London, United Kingdoms: 817 Mbit/s
    Melbourne, Australia: 56 Mbit/s
    Oslo, Norway: 337 Mbit/s
    Paris, France: 979 Mbit/s
    Querétaro Mexico: 83 Mbit/s
    San Jose, USA: 58 Mbit/s
    Sao Paulo, Brazil: 47 Mbit/s
    Seoul, Korea: 30 Mbit/s
    Singapore, Singapore: 28 Mbit/s
    Tokyo, Japan: 34 Mbit/s
    Toronto, Canada: 157 Mbit/s
    Washington, USA: 73 Mbit/s
    
  • rocketrocket Member
    edited August 2017

    Looks pretty awesome

    nixbench 0.3 - https://github.com/jgillich/nixbench
    
    Host
    ----
    
    OS        : linux
    Platform  : centos 7.3.1611
    CPU       : Intel(R) Xeon(R) CPU E5-2690 0 @ 2.90GHz
    Cores     : 2
    Clock     : 2899 Mhz
    
    
    Disk
    ----
    
    1. run   : 1028 MB/s
    2. run   : 1070 MB/s
    3. run   : 924 MB/s
    4. run   : 1013 MB/s
    5. run   : 1033 MB/s
    Average  : 1014 MB/s
    
    
    Geekbench
    ---------
    
    Single-Core Score  : 2810
    Multi-Core Score   : 5111
    Result URL         : https://browser.geekbench.com/v4/cpu/3674213
    
    
    Net
    ---
    
    CDN                           : 143 MB/s
    Amsterdam, The Netherlands    : 64 MB/s
    Dallas, USA                   : 14 MB/s
    Frankfurt, Germany            : 70 MB/s
    Hong Kong, China              : 6 MB/s
    London, United Kingdoms       : 70 MB/s
    Melbourne, Australia          : 5 MB/s
    Oslo, Norway                  : 32 MB/s
    Paris, France                 : 79 MB/s
    Querétaro Mexico              : 4 MB/s
    San Jose, USA                 : 2 MB/s
    Sao Paulo, Brazil             : 2 MB/s
    Seoul, Korea                  : 5 MB/s
    Singapore, Singapore          : 5 MB/s
    Tokyo, Japan                  : 3 MB/s
    Toronto, Canada               : 16 MB/s
    Washington, USA               : 3 MB/s
    
  • Nice one thanks but there's no fallback for errors.

    Net
    ---
    
    2017/08/11 23:45:43 error: Get http://speedtest.wdc01.softlayer.com/downloads/test100.zip: dial tcp ***.***.***.***:80: i/o timeout
    

    If you encounter an error on the speed test, from example from softlayer, you dont have the "cake" = no Net Results :/

    Net
    ---
    
    2017/08/11 23:45:43 error: Get http://speedtest.wdc01.softlayer.com/downloads/test100.zip: dial tcp ***.***.***.***:80: i/o timeout
    [root@srv src]#
    

    jgillich said: 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:

  • scarecrowscarecrow Member
    edited August 2017

    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?

  • jgillichjgillich Member
    edited August 2017

    scarecrow said: 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

    Only with the yaml output, with the default output they are omitted. I'll consider showing two decimals.

    scarecrow said: Is there any reason you chose Melbourne instead of Sydney?

    No, none at all. Why is Sydney preferable?

    Thanked by 1scarecrow
  • scarecrowscarecrow Member
    edited August 2017

    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.

  • jgillichjgillich Member
    edited August 2017

    @AuroraZ said:
    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.

    Thanked by 1AuroraZ
  • I've got no problem running this script. Really likes the Geekbench integration ;)

    nixbench - https://github.com/jgillich/nixbench
    
    Host
    ----
    
    OS        : linux
    Platform  : debian 9.1
    CPU       : Intel(R) Xeon(R) CPU E5-1650 v2 @ 3.50GHz
    Cores     : 12
    Clock     : 3900 Mhz
    RAM       : 32138 MB
    
    
    CPU
    ---
    
    Sha256  : 4.87 seconds
    Gzip    : 4.95 seconds
    
    
    Disk
    ----
    
    1. run   : 142 MB/s
    2. run   : 145 MB/s
    3. run   : 143 MB/s
    4. run   : 146 MB/s
    5. run   : 143 MB/s
    Average  : 144 MB/s
    
    
    Geekbench
    ---------
    
    Single-Core Score  : 4069
    Multi-Core Score   : 20484
    Result URL         : https://browser.geekbench.com/v4/cpu/3682940
    
    
    Net
    ---
    
    CDN                           : 100.03 MB/s
    Amsterdam, The Netherlands    : 14.58  MB/s
    Dallas, USA                   : 12.34  MB/s
    Frankfurt, Germany            : 3.53   MB/s
    Hong Kong, China              : 6.75   MB/s
    London, United Kingdoms       : 16.88  MB/s
    Melbourne, Australia          : 5.11   MB/s
    Oslo, Norway                  : 14.09  MB/s
    Paris, France                 : 16.58  MB/s
    Querétaro Mexico              : 9.69   MB/s
    San Jose, USA                 : 9.95   MB/s
    Sao Paulo, Brazil             : 6.91   MB/s
    Seoul, Korea                  : 5.59   MB/s
    Singapore, Singapore          : 5.15   MB/s
    Tokyo, Japan                  : 6.74   MB/s
    Toronto, Canada               : 61.82  MB/s
    Washington, USA               : 15.45  MB/s
    
  • @AuroraZ said:
    Getting an exit status 1 on my machine. This happens when it goes for the geekbench test.

    I saw these error on Debian 7

  • caracalcaracal Member
    edited August 2017
    net/http: request canceled (Client.Timeout exceeded while reading body)
    

    Getting this on an OVH SGP Discovery VPS. Thrice now. Might be a too slow network to one of the mirrors?

  • caracal said: 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:

    • Failing speed tests will now simply show "failed" instead of aborting
    • Geekbench is now disabled by default, you can get the previous behavior with the --all flag, but also selectively enable benchmarks: nixbench -m disk -m net -m cpu (comma separation not yet supported unfortunately)
    • Progress bar was removed, and I'm not sure about adding it back. Opinions?

    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.

    Thanked by 1sipe
  • I think geekbench should be enabled by default. Its quite important info when comparing results.

    Thanked by 1FredQc
  • @stefeman said:
    I think geekbench should be enabled by default. Its quite important info when comparing results.

    This.

  • TomTom Member

    @stefeman said:
    I think geekbench should be enabled by default. Its quite important info when comparing results.

    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.

  • jgillichjgillich Member
    edited August 2017

    v0.6:

    • Geekbench reverted to run by default
    • Multi-threaded cpu benchmark
    • Added AES benchmark
    • CPU results now display MB/s instead of total time
    • Fixed freebsd-arm and openbsd platforms

    stefeman said: I think geekbench should be enabled by default. Its quite important info when comparing results.

    I definitely agree, Geekbench is the primary reason why I started this. But there are good reasons why I decided to disable it:

    • Platform support is limited to Linux, if I'm not mistaken there is no command line version for WIndows and macOS. I want to support most UNIX-like operating systems including the BSDs and Solaris/Illumos.
    • The scores are scraped from their website, which could easily break if they change anything
    • EULA does not allow redistribution, the scripted download process is also prone to breaking (this happened to bench.sh)
    • It's proprietary software, not everyone likes that

    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.

    Thanked by 1sipe
  • cpsdcpsd Member

    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.

  • @cpsd said:
    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.

  • cpu
    ---
    Sha256 (1x) :  114.57 MB/s
    Gzip (1x)   :  122.31 MB/s
    AES (1x)    :  506.74 MB/s
    
    Sha256 (2x) :  156.78 MB/s
    Gzip (2x)   :  159.21 MB/s
    AES (2x)    :  516.71 MB/s
    
    
    disk
    ----
    1. run   : 589 MB/s
    2. run   : 592 MB/s
    3. run   : 671 MB/s
    4. run   : 664 MB/s
    5. run   : 603 MB/s
    Average  : 624 MB/s
    Geekbench 4.1.0 Tryout : http://www.geekbench.com/
    
    Geekbench 4 is in tryout mode.
    
    Geekbench 4 requires an active Internet connection when in tryout mode, and
    automatically uploads test results to the Geekbench Browser. Other features
    are unavailable in tryout mode.
    
    Buy a Geekbench 4 license to enable offline use and remove the limitations of
    tryout mode.
    
    If you would like to purchase Geekbench you can do so online:
    
      https://store.primatelabs.com/v4
    
    If you have already purchased Geekbench, enter your email address and license
    key from your email receipt with the following command line:
    
      build.pulse/dist/Geekbench-4.1.0-Linux/geekbench4 -r <email address>
    <license key>
    
      Running Gathering system information
    System Information
      Operating System        Linux 2.6.32-042stab123.1 x86_64
      Model                   N/A
      Motherboard             N/A
      Processor               Intel Xeon E5-2660 @ 1.65 GHz
                              1 Processor, 8 Cores, 2 Threads
      Processor ID            GenuineIntel Family 6 Model 45 Stepping 7
      L1 Instruction Cache    32.0 KB
      L1 Data Cache           32.0 KB
      L2 Cache                256 KB
      L3 Cache                20.0 MB
      Memory                  512 MB
      BIOS
      Compiler                Clang 3.9.1 (tags/RELEASE_391/final)
    
    Single-Core
      Running AES
      Running LZMA
      Running JPEG
      Running Canny
      Running Lua
      Running Dijkstra
      Running SQLite
      Running HTML5 Parse
      Running HTML5 DOM
      Running Histogram Equalization
      Running PDF Rendering
      Running LLVM
      Running Camera
      Running SGEMM
      Running SFFT
      Running N-Body Physics
      Running Ray Tracing
      Running Rigid Body Physics
      Running HDR
      Running Gaussian Blur
      Running Speech Recognition
      Running Face Detection
      Running Memory Copy
      Running Memory Latency
      Running Memory Bandwidth
    
    Multi-Core
      Running AES
      Running LZMA
      Running JPEG
      Running Canny
      Running Lua
      Running Dijkstra
      Running SQLite
      Running HTML5 Parse
      Running HTML5 DOM
      Running Histogram Equalization
      Running PDF Rendering
      Running LLVM
      Running Camera
      Running SGEMM
      Running SFFT
      Running N-Body Physics
      Running Ray Tracing
      Running Rigid Body Physics
      Running HDR
      Running Gaussian Blur
      Running Speech Recognition
    
    exit status 255
    
Sign In or Register to comment.