Giter Site home page Giter Site logo

masonr / yet-another-bench-script Goto Github PK

View Code? Open in Web Editor NEW
3.8K 57.0 401.0 94.23 MB

YABS - a simple bash script to estimate Linux server performance using fio, iperf3, & Geekbench

License: Do What The F*ck You Want To Public License

Shell 100.00%
bench-script geekbench fio iperf3 bash linux benchmark disk-performance speedtest benchmark-scripts

yet-another-bench-script's Introduction

Yet-Another-Bench-Script

Presenting an attempt to create yet another Linux server benchmarking script...

Logo design by Dian Pratama

This script automates the execution of the best benchmarking tools in the industry. Included are several tests to check the performance of critical areas of a server: disk performance with fio, network performance with iperf3, and CPU/memory performance with Geekbench. The script is designed to not require any external dependencies to be installed nor elevated privileges to run. If there are any features that you would like to see added, feel free to submit an issue describing your feature request or fork the project and submit a PR!

What's New With YABS?

  • 27 Feb 2023 - Newly released Geekbench 6 is added as the default Geekbench test.
  • 26 Feb 2023 - Network information added to YABS output using ip-api.
  • 15 Aug 2022 - Added JSON output/upload support to export or auto-upload of YABS results for sharing.

How to Run

curl -sL yabs.sh | bash

or

wget -qO- yabs.sh | bash

Local fio/iperf3 Packages: If the tested system has fio and/or iperf3 already installed, the local package will take precedence over the precompiled binary.

Experimental ARM Compatibility: Initial ARM compatibility has been introduced, however, is not considered entirely stable due to limited testing on distinct ARM devices. Report any errors or issues.

High Bandwidth Usage Notice: By default, this script will perform many iperf network tests, which will try to max out the network port for ~20s per location (10s in each direction). Low-bandwidth servers (such as a NAT VPS) should consider running this script with the -r flag (for reduced iperf locations) or the -i flag (to disable network tests entirely).

Windows Users: This script can be run on Windows systems by using Windows Subsystem for Linux v2 (WSL 2). WSLv1 will not run the script and binaries correctly.

Flags (Skipping Tests, Reducing iperf Locations, Geekbench 4/5/6, etc.)

curl -sL yabs.sh | bash -s -- -flags
Flag Description
-b Forces use of pre-compiled binaries from repo over local packages
-f/-d Disables the fio (disk performance) test
-i Disables the iperf (network performance) test
-g Disables the Geekbench (system performance) test
-n Skips the network information lookup and print out
-h Prints the help message with usage, flags detected, and local package (fio/iperf) status
-r Reduces the number of iperf locations (Scaleway/Clouvider LON+NYC) to lessen bandwidth usage
-4 Runs a Geekbench 4 test and disables the Geekbench 6 test
-5 Runs a Geekbench 5 test and disables the Geekbench 6 test
-9 Runs both the Geekbench 4 and 5 tests instead of the Geekbench 6 test
-6 Re-enables the Geekbench 6 test if any of the following were used: -4, -5, or -9 (-6 flag must be last to not be overridden)
-j Prints a JSON representation of the results to the screen
-w <filename> Writes the JSON results to a file using the file name provided
-s <url> Sends a JSON representation of the results to the designated URL(s) (see section below)

Options can be grouped together to skip multiple tests, i.e. -fg to skip the disk and system performance tests (effectively only testing network performance).

Geekbench License Key: A Geekbench license key can be utilized during the Geekbench test to unlock all features. Simply put the email and key for the license in a file called geekbench.license. echo "[email protected] ABCDE-12345-FGHIJ-57890" > geekbench.license

Submitting JSON Results

Results from running this script can be sent to your benchmark results website of choice in JSON format. Invoke the -s flag and pass the URL to where the results should be submitted to:

curl -sL yabs.sh | bash -s -- -s "https://example.com/yabs/post"

JSON results can be sent to multiple endpoints by entering each site joined by a comma (e.g. "https://example.com/yabs/post,http://example.com/yabs2/post").

Sites supporting submission of YABS JSON results:

Website Example Command
YABSdb curl -sL yabs.sh | bash -s -- -s "https://yabsdb.com/add"
VPSBenchmarks curl -sL yabs.sh | bash -s -- -s https://www.vpsbenchmarks.com/yabs/upload

Example JSON output: example.json.

Tests Conducted

  • fio - the most comprehensive I/O testing software available, fio grants the ability to evaluate disk performance in a variety of methods with a variety of options. Four random read and write fio disk tests are conducted as part of this script with 4k, 64k, 512k, and 1m block sizes. The tests are designed to evaluate disk throughput in near-real world (using random) scenarios with a 50/50 split (50% reads and 50% writes per test).
  • iperf3 - the industry standard for testing download and upload speeds to various locations. This script utilizes iperf3 with 8 parallel threads and tests both download and upload speeds. If an iperf server is busy after 5 tries, the speed test for that location/direction is skipped.
  • Geekbench - Geekbench is a benchmarking program that measures system performance, which is widely used in the tech community. The web URL is displayed to be able to see complete test and individual benchmark results and allow comparison to other geekbench'd systems. The claim URL to add the Geekbench result to your Geekbench profile is written to a file in the directory that this script is executed from. By default, Geekbench 6 is the only Geekbench test performed, however, Geekbench 4 and/or 5 can also be toggled on by passing the appropriate flag.

Security Notice

This script relies on external binaries in order to complete the performance tests. The network (iperf3) and disk (fio) tests use binaries that are compiled by myself utilizing a Holy Build Box compilation environment to ensure binary portability. The reasons for doing this include ensuring standardized (parsable) output, allowing support of both 32-bit and 64-bit architectures, bypassing the need for prerequisites to be compiled and/or installed, among other reasons. For the system test, a Geekbench tarball is downloaded, extracted, and the resulting binary is run. Use this script at your own risk as you would with any script publicly available on the net. Additional information regarding the binaries, including compilation notes and steps, can be found in the bin directory's README page.

Example Output

# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #
#              Yet-Another-Bench-Script              #
#                     v2023-04-23                    #
# https://github.com/masonr/yet-another-bench-script #
# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #

Sun 23 Apr 2023 01:41:14 PM EDT

Basic System Information:
---------------------------------
Uptime     : 342 days, 18 hours, 35 minutes
Processor  : Intel(R) Xeon(R) E-2276G CPU @ 3.80GHz
CPU cores  : 12 @ 4693.667 MHz
AES-NI     : ✔ Enabled
VM-x/AMD-V : ✔ Enabled
RAM        : 15.5 GiB
Swap       : 14.9 GiB
Disk       : 864.5 GiB
Distro     : Ubuntu 20.04.6 LTS
Kernel     : 5.4.0-110-generic
VM Type    : NONE
IPv4/IPv6  : ✔ Online / ✔ Online

IPv6 Network Information:
---------------------------------
ISP        : Clouvider Limited
ASN        : AS62240 Clouvider
Host       : USA Network
Location   : New York, New York (NY)
Country    : United States

fio Disk Speed Tests (Mixed R/W 50/50):
---------------------------------
Block Size | 4k            (IOPS) | 64k           (IOPS)
  ------   | ---            ----  | ----           ----
Read       | 405.41 MB/s (101.3k) | 407.96 MB/s   (6.3k)
Write      | 406.48 MB/s (101.6k) | 410.11 MB/s   (6.4k)
Total      | 811.90 MB/s (202.9k) | 818.08 MB/s  (12.7k)
           |                      |
Block Size | 512k          (IOPS) | 1m            (IOPS)
  ------   | ---            ----  | ----           ----
Read       | 380.21 MB/s    (742) | 394.55 MB/s    (385)
Write      | 400.41 MB/s    (782) | 420.82 MB/s    (410)
Total      | 780.62 MB/s   (1.5k) | 815.37 MB/s    (795)

iperf3 Network Speed Tests (IPv4):
---------------------------------
Provider        | Location (Link)           | Send Speed      | Recv Speed      | Ping
-----           | -----                     | ----            | ----            | ----
Clouvider       | London, UK (10G)          | 1.61 Gbits/sec  | 2.39 Gbits/sec  | 77.5 ms
Scaleway        | Paris, FR (10G)           | busy            | 2.25 Gbits/sec  | 83.3 ms
Clouvider       | NYC, NY, US (10G)         | 9.10 Gbits/sec  | 8.85 Gbits/sec  | 1.21 ms

iperf3 Network Speed Tests (IPv6):
---------------------------------
Provider        | Location (Link)           | Send Speed      | Recv Speed      | Ping
-----           | -----                     | ----            | ----            | ----
Clouvider       | London, UK (10G)          | 2.00 Gbits/sec  | 21.1 Mbits/sec  | 76.7 ms
Scaleway        | Paris, FR (10G)           | 2.66 Gbits/sec  | 1.56 Gbits/sec  | 75.9 ms
Clouvider       | NYC, NY, US (10G)         | 3.42 Gbits/sec  | 7.80 Gbits/sec  | 1.15 ms

Geekbench 4 Benchmark Test:
---------------------------------
Test            | Value
                |
Single Core     | 5949
Multi Core      | 23425
Full Test       | https://browser.geekbench.com/v4/cpu/16746501

Geekbench 5 Benchmark Test:
---------------------------------
Test            | Value
                |
Single Core     | 1317
Multi Core      | 5529
Full Test       | https://browser.geekbench.com/v5/cpu/21102444

Geekbench 6 Benchmark Test:
---------------------------------
Test            | Value
                |
Single Core     | 1549
Multi Core      | 5278
Full Test       | https://browser.geekbench.com/v6/cpu/1021916

YABS completed in 12 min 49 sec

Acknowledgements

This script was inspired by several great benchmarking scripts out there, including, but not limited to, bench.sh, nench.sh, ServerBench, among others. Members of the HostBalls, LowEndSpirit, and LowEndTalk hosting-related communities play a pivotal role in testing, evaluating, and shaping this script as it matures.

License

            DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
                    Version 2, December 2004

 Copyright (C) 2019 Mason Rowe <[email protected]>

 Everyone is permitted to copy and distribute verbatim or modified
 copies of this license document, and changing it is allowed as long
 as the name is changed.

            DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. You just DO WHAT THE FUCK YOU WANT TO.

yet-another-bench-script's People

Contributors

adoyle-h avatar ajee10x avatar alfajorcito avatar antonstech avatar bkpepe avatar daniel15 avatar debcharon avatar deliciousbob avatar dqos avatar felixonmars avatar hohl avatar hyperupcall avatar knpwrs avatar masonr avatar netravnen avatar plerohellec avatar rdwz avatar su-haris avatar webdock-io avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

yet-another-bench-script's Issues

Geekbench 5 fail causes corrupt JSON

When the Geekbench 5 test fails (not enough ram)

Geekbench 5 test failed. Run manually to determine cause.

The JSON becomes corrupted at the geekbench section:

,"geekbench":]

instead of being

,"geekbench":[]

The output

{"version":"v2022-08-20","time":"20220827-073833","os":{"arch":"x64","distro":"Ubuntu 22.04 LTS","kernel":"5.15.0-1004-kvm","uptime":1876106.72},"net":{"ipv4":true,"ipv6":true},"cpu":{"model":"Intel(R) Xeon(R) CPU E5-2690 0 @ 2.90GHz","cores":1,"freq":"2899.996 MHz","aes":true,"virt":false},"mem":{"ram":1008484,"swap":0,"disk":9617654},"fio":[{"bs":"4k","speed_r":109145,"iops_r":27286,"speed_w":109433,"iops_w":27358,"speed_rw":218578,"iops_rw":54644},{"bs":"64k","speed_r":219411,"iops_r":3428,"speed_w":220566,"iops_w":3446,"speed_rw":439977,"iops_rw":6874},{"bs":"512k","speed_r":235707,"iops_r":460,"speed_w":248231,"iops_w":484,"speed_rw":483938,"iops_rw":944},{"bs":"1m","speed_r":239053,"iops_r":233,"speed_w":254974,"iops_w":248,"speed_rw":494027,"iops_rw":481}],"iperf":[{"mode":"IPv4","provider":"Clouvider","loc":"London, UK (10G)","send":"1.02 Gbits/sec","recv":"1.37 Gbits/sec"},{"mode":"IPv4","provider":"Online.net","loc":"Paris, FR (10G)","send":"658 Mbits/sec","recv":"1.16 Gbits/sec"},{"mode":"IPv4","provider":"Clouvider","loc":"NYC, NY, US (10G)","send":"1.98 Gbits/sec","recv":"2.25 Gbits/sec"},{"mode":"IPv6","provider":"Clouvider","loc":"London, UK (10G)","send":"1.30 Gbits/sec","recv":"1.45 Gbits/sec"},{"mode":"IPv6","provider":"Online.net","loc":"Paris, FR (10G)","send":"1.61 Gbits/sec","recv":"1.34 Gbits/sec"},{"mode":"IPv6","provider":"Clouvider","loc":"NYC, NY, US (10G)","send":"3.25 Gbits/sec","recv":"3.19 Gbits/sec"}],"geekbench":]}

Change Indonesia's iperf test server

Hi, can you change Indonesia's iperf server location to different one? Since it mostly appears "busy". Probably not functioning anymore?

Thanks,

No results

I ran this command on 4 of my VPS's and one of them did not return any info.

I run the command and it shows it starting with Date but that's it.

Any ideas?

Write permission error

I have a fresh install of Debian bullseye and I can't run YABS, getting the following error:

bash: line 260: /dev/null: restricted: cannot redirect output
You do not have write permission in this directory. Switch to an owned directory and re-run the script.

I am root and I have tried adding sudo as well curl -sL yabs.sh | sudo bash.

Wrong fio command breaks disk speed tests

I tried to run YABS on a system that I do not manage, and got the following output for the disk speed tests:

fio Disk Speed Tests (Mixed R/W 50/50):
---------------------------------
Block Size | 4k            (IOPS) | 64k           (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       |                   () |                   ()
Write      |                   () |                   ()
Total      | 0.00 KB/s        (0) | 0.00 KB/s        (0)
           |                      |                     
Block Size | 512k          (IOPS) | 1m            (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       |                   () |                   ()
Write      |                   () |                   ()
Total      | 0.00 KB/s        (0) | 0.00 KB/s        (0)

The culprit turns out to be a Python package called Fiona, which also has a fio command that has nothing to do with the one expected by the script:
https://github.com/Toblerity/Fiona/blob/master/docs/cli.rst

For this particular case, I think it would be useful to have a flag in YABS to force external binaries to be used even when local ones are detected.

define a custom location for the fio test

for example i have a pool mounted on /mnt/pool how would i set the fio test to run there

(Briefly) looking at the script i saw the variable $disk_path used, but could not figure out where it was being defined

Geekbench failed

[root@Backup-iz ~]# curl -sL yabs.sh | bash
# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #
#              Yet-Another-Bench-Script              #
#                     v2020-02-10                    #
# https://github.com/masonr/yet-another-bench-script #
# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #

Fri Apr 17 13:09:35 EDT 2020

Basic System Information:
---------------------------------
Processor  : Intel(R) Xeon(R) CPU E31275 @ 3.40GHz
CPU cores  : 2 @ 3400.022 MHz
AES-NI     : ✔ Enabled
VM-x/AMD-V : ❌ Disabled
RAM        : 360M
Swap       : 0B
Disk       : 9.9G

fio Disk Speed Tests (Mixed R/W 50/50):
---------------------------------
Block Size | 4kb           (IOPS) | 64kb          (IOPS)
  ------   | ---            ----  | ----           ----
Read       | 2.48 MB/s      (621) | 32.68 MB/s     (510)
Write      | 2.49 MB/s      (624) | 33.06 MB/s     (516)
Total      | 4.98 MB/s     (1.2k) | 65.74 MB/s    (1.0k)
           |                      |
Block Size | 512kb         (IOPS) | 1mb           (IOPS)
  ------   | -----          ----  | ---            ----
Read       | 84.25 MB/s     (164) | 78.99 MB/s      (77)
Write      | 88.72 MB/s     (173) | 84.75 MB/s      (82)
Total      | 172.98 MB/s    (337) | 163.74 MB/s    (159)

iperf3 Network Speed Tests (IPv4):
---------------------------------
Provider                  | Location (Link)           | Send Speed      | Recv Speed
                          |                           |                 |
Bouygues Telecom          | Paris, FR (10G)           | 933 Mbits/sec   | 737 Mbits/sec
Online.net                | Paris, FR (10G)           | 936 Mbits/sec   | 721 Mbits/sec
WorldStream               | The Netherlands (10G)     | busy            | 816 Mbits/sec
wilhelm.tel               | Hamburg, DE (10G)         | 935 Mbits/sec   | 725 Mbits/sec
Biznet                    | Bogor, Indonesia (1G)     | 387 Mbits/sec   | 182 Mbits/sec
Hostkey                   | Moscow, RU (1G)           | 923 Mbits/sec   | 925 Mbits/sec
Velocity Online           | Tallahassee, FL, US (10G) | 494 Mbits/sec   | 325 Mbits/sec
Airstream Communications  | Eau Claire, WI, US (10G)  | 603 Mbits/sec   | 500 Mbits/sec
Hurricane Electric        | Fremont, CA, US (10G)     | busy            | busy

Geekbench 5 test failed. Run manually to determine cause.

I have dozens of VPS, on half of them YABS works, on second half it doesn't. Tried to run Geekbench manually and it's killed during tests. I know that's not a YABS issue, however, maybe YABS should offer some other CPU benchmark as an option? :)

Additional fio block sizes

Would it be possible to test further block sizes for those with SSDs? I was curious to see how 1GB or 512M would bench since I'm on an NVME drive.

Overhaul informative text output to take into account the user's terminal window size

Implement a better means of outputting and clearing informative text while the script is running so that if a terminal window is sized small causing the output to be broken up onto multiple lines, the script is able to detect this and clear the correct number of lines.

The script currently only clears the previous line. A helper function will be required due to the dynamic number of characters being output to the terminal (i.e. during iperf test, the character count depends on the provider name and location).

Example garbage output:

iperf3 Network Speed Tests (IPv4):
---------------------------------
Provider        | Location (Link)           | Send Speed      | Recv Speed     
                |                           |                 |                
Performing IPv4 iperf3 send test to Clouvider (Attempt #1 of 1Performing IPv4 iperf3 recv test from Clouvider (Attempt #1 ofClouvider       | London, UK (10G)          | 940 Mbits/sec   | 920 Mbits/sec  
Performing IPv4 iperf3 send test to Online.net (Attempt #1 of Performing IPv4 iperf3 recv test from Online.net (Attempt #1 oPerforming IPv4 iperf3 recv test from Online.net (Attempt #2 oPerforming IPv4 iperf3 recv test from Online.net (Attempt #3 oOnline.net      | Paris, FR (10G)           | 932 Mbits/sec   | 917 Mbits/sec  
Performing IPv4 iperf3 send test to WorldStream (Attempt #1 ofPerforming IPv4 iperf3 recv test from WorldStream (Attempt #1 WorldStream     | The Netherlands (10G)     | 926 Mbits/sec   | 896 Mbits/sec  
Performing IPv4 iperf3 send test to Biznet (Attempt #1 of 10).Performing IPv4 iperf3 recv test from Biznet (Attempt #1 of 10Biznet          | Jakarta, Indonesia (1G)   | 733 Mbits/sec   | 213 Mbits/sec  
Performing IPv4 iperf3 send test to Clouvider (Attempt #1 of 1Performing IPv4 iperf3 recv test from Clouvider (Attempt #1 ofClouvider       | NYC, NY, US (10G)         | 884 Mbits/sec   | 600 Mbits/sec  
Performing IPv4 iperf3 send test to Velocity Online (Attempt #Performing IPv4 iperf3 recv test from Velocity Online (AttemptVelocity Online | Tallahassee, FL, US (10G) | 849 Mbits/sec   | 392 Mbits/sec  
Performing IPv4 iperf3 send test to Clouvider (Attempt #1 of 1Performing IPv4 iperf3 recv test from Clouvider (Attempt #1 ofClouvider       | Los Angeles, CA, US (10G) | 830 Mbits/sec   | 355 Mbits/sec  

Proposed solution:

  1. Add function that is passed the informative text to display. This function will count the number of characters in the string before echoing the text to the terminal window
  2. Store the terminal window size as a variable (stty size - https://stackoverflow.com/a/26855761)
  3. Compute the number of lines needed to clear the last informative text that was output to the terminal (i.e. text size / terminal size) and run the echo -en "\r\033[0K" command the resulting number of times
  • (Optional) In the new function, don't even display anything if the terminal is not running in interactive mode (i.e. output being piped to file or script being run as a cron) (https://serverfault.com/a/146747)

No free -h on CentOS 6

Great script! Forked it for our internal use.

The script uses free -h to get RAM information, however on CentOS 6 surprisingly free -h isn't available, so might have to update with free and convert the response to human-readable numbers.

Geekbench not uploading results.

Ran yabs on my PC to test it, and noticed that the script just hangs after Geekbench finishes running. All other tests run fine, but the script never finishes running.

image

Glad to provide any more information if needed.

Add support for ARM

Hi,

I noticed that currently, there are supported two architectures: x86_64 and i?86. There might be ARM servers and SBC, which are using ARM architecture.

Would it be possible to add support for it? I noticed that Geekbench is not present for ARM too much. I could find only this:

And then this: http://support.primatelabs.com/discussions/geekbench/30140-geekbench-4-on-linux-for-arm (no provided version publicly AFAIK)

Fail gracefully if locale C is not available

Fail gracefully if locale C is not available, can happen when it's a very fresh install of e.g. Debian. In my case, I set-up it up with default en_GB.UTF-8. Which causes the C locale to not be installed by default.

$ curl -s -k -g --header 'Host: raw.githubusercontent.com' https://\[2a04:4e42::133\]/masonr/yet-another-bench-script/master/yabs.sh | bash
bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)

Binary downloads from GitHub sometimes fail, causing script to crash

As reported here: https://talk.lowendspirit.com/discussion/comment/45079/#Comment_45079

Preparing system for disk tests...chmod: cannot access './2020-11-13T15_19_27+08_00/disk/fio': No such file or directory

Curl command grabbing the fio binary from the github repo is failing silently, thus the chmod fails on the non-existent file.

Proposed solution:

  1. add the "--retry #" flag to the curl command to allow multiple retries to download it (in case the first try fails)
  2. add some better error handling to detect if it wasn't able to grab it for some reason and either skip the disk test (if doable) or simply alert and exit safely

Segmentation fault (core dumped)

When I run yab.sh on CentOS 7.9, I encounter the following error.

[root@dbis ~]# bash yabs.sh 
# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #
#              Yet-Another-Bench-Script              #
#                     v2022-12-04                    #
# https://github.com/masonr/yet-another-bench-script #
# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #

Sun Jan  1 23:55:11 CST 2023

Basic System Information:
---------------------------------
Uptime     : 20 days, 10 hours, 16 minutes
Processor  : Intel(R) Core(TM) i7-9700 CPU @ 3.00GHz
CPU cores  : 2 @ 3000.003 MHz
AES-NI     : ? Enabled
VM-x/AMD-V : ? Disabled
RAM        : 4.9 GiB
Swap       : 2.0 GiB
Disk       : 67.1 GiB
Distro     : CentOS Linux 7 (Core)
Kernel     : 3.10.0-957.el7.x86_64

Generating fio test file...yabs.sh: line 355: 124589 Segmentation fault      (core dumped) $FIO_CMD --name=setup --ioengine=libaio --rw=read --bs=64k --iodepth=64 --numjobs=2 --size=$FIO_SIZE --runtime=1 --gtod_reduce=1 --filename=$DISK_PATH/test.fio --direct=1 --minimal &>/dev/null
fio Disk Speed Tests (Mixed R/W 50/50):
---------------------------------
Block Size | 4k            (IOPS) | 64k           (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       |                   () |                   ()
Write      |                   () |                   ()
Total      | 0.00 KB/s        (0) | 0.00 KB/s        (0)
           |                      |                     
Block Size | 512k          (IOPS) | 1m            (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       |                   () |                   ()
Write      |                   () |                   ()
Total      | 0.00 KB/s        (0) | 0.00 KB/s        (0)

iperf3 binary download failed. Skipping iperf network tests...

Running GB5 benchmark test... *cue elevator music*^C
** Aborting YABS. Cleaning up files...

After testing, I found that the problem is with fio_x64

[root@abc ~]# ./fio_x64 -v
Segmentation fault (core dumped)

I looked at the error message in the corefile and it reads as follows.

[root@dbis ~]# gdb corefile core.125789
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-120.el7
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
corefile: No such file or directory.
[New LWP 125789]
Core was generated by `./fio_x64 -v'.
Program terminated with signal 11, Segmentation fault.
#0  0x000000000040641a in ?? ()
(gdb)

But it's so strange that I don't encounter similar problems when using fio_x64 directly on other CentOS 7.9.

I have absolutely no clue.

curl -sL yabs.sh | bash -s -- -{fdighr4} returns illegal option

OS: ubuntu 18.04 / ubuntu 20.04

2020-11-24 11:08:26 [cch@dc034 ~]$ curl -sL yabs.sh | bash -s -- -{fdighr4}
# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #
#              Yet-Another-Bench-Script              #
#                     v2020-11-20                    #
# https://github.com/masonr/yet-another-bench-script #
# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #

Tue Nov 24 11:08:31 CST 2020
bash: illegal option -- {
2020-11-24 11:08:31 [cch@dc034 ~]$ 

Speedtest will not be executed

I'm using Debian 10.
When running the script without any flags with either of the two commands the script doesn't do any speedtests.
It does not show an error.

It will just print out the fio results and after that the geekbench results.

Possiblity to add a mail + license key for geekbench 5

Hey,
Would it be possible to add a mail + licence key for the geekbench (normally you simply need to add a -r) i did a fork that was working but now it's not the case anymore and i think it could be useful for everyone C: Awesome script by the way !

The format is like that [email protected] Z6POZ-WBGI2-ZX31T-M1241-WRAR7-F1123-DUI2E-LFOL4-6P8ZA

fio errors on ZFS systems when available space is a decimal value

If I have

df -Th .
Filesystem        Type  Size  Used Avail Use% Mounted on
rpool/ROOT/ubuntu zfs   1.5T  4.0G  1.5T   1% /

then

curl -sL yabs.sh | bash -s -- -ig

fails with

bash: line 536: 1.5: syntax error: invalid arithmetic operator (error token is ".5")

The relevant code snippet is

free_space=$(df -Th | grep -w $long | grep -i zfs | awk '{print $5}' | head -c -2)

                if [[ $size_b == 'T' ]]; then
                        free_space=$((free_space * 1024))   # this is line 536
                        size_b='G'
                fi

If instead I have

df -Th .
Filesystem        Type  Size  Used Avail Use% Mounted on
rpool/ROOT/ubuntu zfs   500G  491G  9.1G  99% /

I still get an error message

bash: line 543: ((: 9.1: syntax error: invalid arithmetic operator (error token is ".1")

but the code continues to run.
Line 543 is

if ((free_space < mul_spa)); then

Invalid backslash in uploaded json

I'm receiving invalid yabs.sh json payloads almost daily at vpsbenchmarks.com. They are invalid because one or more strings in the json include a backslash that is not used as an escape character. It looks like the \ is escaping a double quote but it was not meant to. For example:
"asn":"AS44486 Oliver Horscht is trading as \SYNLINQ\"
or
"isp":"OOO \Network of data-centers \Selectel\"

Would it be possible to escape or delete those backslashes before including them in the json strings?

Here is an example with the full json input:
yab.invalid-backslash.json

YABS assumes 'bc' will be installed

Hi,
yabs appears to use 'bc' for some calculations, but only when zfs is in use.

free_space=$(bc <<< "$free_space*1024")

bc is not installed by default so there can be cases where its invoked but not installed.


# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #
#              Yet-Another-Bench-Script              #
#                     v2023-11-24                    #
# https://github.com/masonr/yet-another-bench-script #
# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #

Sat 25 Nov 2023 21:02:05 UTC

Basic System Information:
---------------------------------
Uptime     : 32 days, 31 hours, 0 minutes
Processor  : AMD Turion(tm) II Neo N40L Dual-Core Processor
CPU cores  : 2 @ 1500.000 MHz
AES-NI     : ❌ Disabled
VM-x/AMD-V : ✔ Enabled
RAM        : 15.6 GiB
Swap       : 0.0 KiB
Disk       : 109.5 GiB
Distro     : Debian GNU/Linux 11 (bullseye)
Kernel     : 5.10.0-21-amd64
VM Type    : NONE
IPv4/IPv6  : ✔ Online / ✔ Online
bash: line 549: bc: command not found
bash: line 556: bc: command not found

I see various command checks around line 90 so hopefully this will be able to follow a similar idiom.

thanks,
Karl.

Detect if running on ZFS, in which case check for spa_asize_inflation value and multiply with workload size. Warn if larger than available disk space.

ZFS datasets will see their performance crumble and be reported up to 10x slower than what they really are in FIO tests if the FIO workload multiplied by 24 is (on a default setup) larger than available disk space. See:

openzfs/zfs#1668

This is "by design" and will not change, it seems. This means essentially that when yabs runs on a zfs backed system (say, an LXD container like we provide) the 2GB workload will be multiplied by 24 yielding 48GB free space required by ZFS in order to run at true/full throttle speeds.

To detect if on ZFS:

# df -Th
Filesystem             Type      Size  Used Avail Use% Mounted on
lxd/containers/testyabs zfs        47G  2.5G   45G   6% /

To grab the spa_asize_inflation value:

# cat /sys/module/zfs/parameters/spa_asize_inflation
24

So:

  1. Detect if on ZFS
  2. If so multiply workload (2GB) by spa_asize_inflation
  3. If larger than free disk space, warn user

Detecting this scenario and warning the user that they should get more free disk space, otherwise the test results are erroneous, would be good.

Missing zfs

Instead of:

TOTAL_DISK_RAW=$(df -t simfs -t ext2 -t ext3 -t ext4 -t btrfs -t xfs -t vfat -t ntfs -t swap --total 2>/dev/null | grep total | awk '{ print $2 }')

You should have:

TOTAL_DISK_RAW=$(df -t zfs -t simfs -t ext2 -t ext3 -t ext4 -t btrfs -t xfs -t vfat -t ntfs -t swap --total 2>/dev/null | grep total | awk '{ print $2 }')

Also, I realize YABS tests the disk from the directory it was run in (right?), but it would be super handy to at least print out the disk mount it is testing to make sure.

YABS always freezes at the same time

Hey, I'm trying to run YABS on a brand new VPS with Debian 11. However, my SSH session always freezes around the same time. I don't know how to debug this. Can I somehow find out, if YABS crashed, or if it's "just" the SSH session that breaks?

The problem is, after this happens, I can't even log back into the machine via SSH. I'm just getting SSH timeouts. It seems that YABS crashes/blocks the server completely. However in my Hoster control panel I can see that the server CPU/RAM are not maxed out at all – they seem to be idling. I assume I'm hitting some kind of "SSH cooldown period" or something, because I can't reach the server even after restarting it.

Here's the output until the point where it freezes:

➜  ~ curl -sL yabs.sh | bash
# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #
#              Yet-Another-Bench-Script              #
#                     v2023-03-24                    #
# https://github.com/masonr/yet-another-bench-script #
# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #

Wed Apr  5 09:02:23 CEST 2023

Basic System Information:
---------------------------------
Uptime     : 0 days, 9 hours, 19 minutes
Processor  : Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz
CPU cores  : 8 @ 2899.932 MHz
AES-NI     : ✔ Enabled
VM-x/AMD-V : ✔ Enabled
RAM        : 32.0 GiB
Swap       : 1.0 GiB
Disk       : 984.2 GiB
Distro     : Debian GNU/Linux 11 (bullseye)
Kernel     : 4.19.0
VM Type    : OPENVZ
Net Online : IPv4

IPv4 Network Information:
---------------------------------
ISP        : dogado GmbH
ASN        : AS45012 dogado GmbH
Host       : Providerbox
Location   : Leipzig, Saxony (SN)
Country    : Germany

fio Disk Speed Tests (Mixed R/W 50/50):
---------------------------------
Block Size | 4k            (IOPS) | 64k           (IOPS)
  ------   | ---            ----  | ----           ----
Read       | 2.57 MB/s      (643) | 38.77 MB/s     (605)
Write      | 2.59 MB/s      (648) | 39.08 MB/s     (610)
Total      | 5.16 MB/s     (1.2k) | 77.86 MB/s    (1.2k)
           |                      |
Block Size | 512k          (IOPS) | 1m            (IOPS)
  ------   | ---            ----  | ----           ----
Read       | 79.03 MB/s     (154) | 37.04 MB/s      (36)
Write      | 83.23 MB/s     (162) | 40.41 MB/s      (39)
Total      | 162.27 MB/s    (316) | 77.45 MB/s      (75)

iperf3 Network Speed Tests (IPv4):
---------------------------------
Provider        | Location (Link)           | Send Speed      | Recv Speed      | Ping
-----           | -----                     | ----            | ----            | ----
Clouvider       | London, UK (10G)          | 381 Mbits/sec   | 8.82 Gbits/sec  | 17.7 ms
Scaleway        | Paris, FR (10G)           | 381 Mbits/sec   | 6.66 Gbits/sec  | 25.1 ms
NovoServe       | North Holland, NL (40G)   | 384 Mbits/sec   | 8.39 Gbits/sec  | 15.8 ms
Uztelecom       | Tashkent, UZ (10G)        | 367 Mbits/sec   | 3.56 Gbits/sec  | 85.8 ms
Performing IPv4 iperf3 send test to Clouvider (Attempt #3 of 3)...

Latency check

It may would be nice to also check the latency for the network speed test.

How did you implement the yabs.sh website redirect?

Hey,
I see that running wget -vO- yabs.sh does a redirect to the raw github link, however opening yabs.sh directly in the browser does a redirect to the repo. Running in powershell on windows also redirects to normal github repo, not the raw page.

Do you use wget's user agent as discriminator or what else? Is there a repo showing this setup?

Thanks

Automatically save output to file

It would be cool if the output was automatically stored somewhere as a file. Maybe using tee to a tempfile of some kind.

Reasoning:
I ran the benchmark over ssh, but then I accidentally disconnected later before I could look over the whole result.

Workaround:
I could have run this instead from the start
curl -sL yabs.sh | bash | tee out.log

but automatically storing the output seems like a sane default to me. Notifying the user where it is stored seems like a good idea too, like

Output stored to /tmp/$date-yabs.log

or something

grep -P not available on Alpine Linux

I Tried to run YABS on Alpine Linux but got the following error:

grep: unrecognized option: P
BusyBox v1.36.0 (2023-03-03 16:36:18 UTC) multi-call binary.

Usage: grep [-HhnlLoqvsrRiwFE] [-m N] [-A|B|C N] { PATTERN | -e PATTERN... | -f FILE... } [FILE]...

Search for PATTERN in FILEs (or stdin)

	-H	Add 'filename:' prefix
	-h	Do not add 'filename:' prefix
	-n	Add 'line_no:' prefix
	-l	Show only names of files that match
	-L	Show only names of files that don't match
	-c	Show only count of matching lines
	-o	Show only the matching part of line
	-q	Quiet. Return 0 if PATTERN is found, 1 otherwise
	-v	Select non-matching lines
	-s	Suppress open and read errors
	-r	Recurse
	-R	Recurse and dereference symlinks
	-i	Ignore case
	-w	Match whole words only
	-x	Match whole lines only
	-F	PATTERN is a literal (not regexp)
	-E	PATTERN is an extended regexp
	-m N	Match up to N times per file
	-A N	Print N lines of trailing context
	-B N	Print N lines of leading context
	-C N	Same as '-A N -B N'
	-e PTRN	Pattern to match
	-f FILE	Read pattern from file

This option is e.g. used in line 268:

local country=$(echo "$response" | grep -Po '"country": *\K"[^"]*"')

What do you think, is it worth to rewrite the script to use grep without the -P option?

ping permission error during network test

If ping needs elevate permissions on the host and YABS is not run as a privileged user, the following output will show:

iperf3 Network Speed Tests (IPv4):
---------------------------------
Provider        | Location (Link)           | Send Speed      | Recv Speed      | Ping
-----           | -----                     | ----            | ----            | ----
ping: socket: Operation not permitted
Clouvider       | London, UK (10G)          | 98.8 Mbits/sec  | busy            |
ping: socket: Operation not permitted
Scaleway        | Paris, FR (10G)           | 107 Mbits/sec   | busy            |
ping: socket: Operation not permitted
NovoServe       | North Holland, NL (40G)   | busy            | 103 Mbits/sec   |
ping: socket: Operation not permitted
Uztelecom       | Tashkent, UZ (10G)        | busy            | busy            |
ping: socket: Operation not permitted
Clouvider       | NYC, NY, US (10G)         | busy            | busy            |
ping: socket: Operation not permitted
Clouvider       | Dallas, TX, US (10G)      | 41.2 Mbits/sec  | busy            |
ping: socket: Operation not permitted
Clouvider       | Los Angeles, CA, US (10G) | 28.8 Mbits/sec  | busy            |

process '[redacted]/Geekbench-5.4.5-Linux/geekbench_x86_64' started with executable stack

process '[redacted]/Geekbench-5.4.5-Linux/geekbench_x86_64' started with executable stack #42

I notice this in my dmesg log when I run yabs on ubuntu 22.04 . When I chased down geekbench it doesnt seem to be an open source program. I did find this https://github.com/cloudharmony/geekbench5 , but I dont believe that is the source code. Geekbench appears to be a commercial product.

So is this safe to run ?? I dont know
https://lore.kernel.org/lkml/20191208171918.GC19716@avx2/
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/fs/exec.c?id=47a2ebb7f5053387f5753b524f4920b9b829f922
It really is over my head.

Although its cool , not really a fan of running a script straight from wget/curl. yea I know I dont have to. Then the script downloads a compiled file that generates this cryptic warning. Yes I can disable the geekbench test with -g .

So is geekbench free ? I see some mentions of a license file in the yabs.sh ? Makes me wonder that there could possibly be an open source benchmark utility that could be ran instead ??

I discovered yabs when my VM provider asked me to run it . It has been helpful. thanks for the work and your time answering my questions

GeekBench 6 is unsupported on CentOS 7

Found out after diving into the issue why does GB test fails on Centos 7 machines. The same would be the case for similar older distros.

Upon running geekbench 6 manually, the following output is seen :

./geekbench_x86_64: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by ./geekbench_x86_64)

This is because CentOS 7 ships with glibc 2.17-326.el7_9, however, minimum 2.27 version is required to execute.

The similar issues are observed when trying to install latest nodejs versions which are built on newer libc versions.
Ref :

The same issues were reported in some Amazon Linux AMI's as well.

The intent of making this issue is to make aware and possibly update the support of YABS, or include a check and displaying that this distro is close to EOL, please consider upgrading to a newer distro or alternatively use alternate GB5 or GB4 for those instances.

Ability to autobench + upload results?

It would be epic if a simple comparison portal could be made, something like (the now defunct?) serverscope.io as well as enabling hosting providers to provide systems which would be periodically auto-benched and collated on this portal.

I / we might be interested in contributing to developing something like this, as existing comparison sites out there are not very vps focused and/or are broken/obsolete in various ways.

Disk size not detected on ZFS mirror

It would appear that YABS has troubles detecting disk size on ZFS Mirror created by Proxmox.

Steps to reproduce:

  1. Install Proxmox 7.1, during installation choose ZFS (RAID1)
  2. Run YABS.

zpool status:

config:

        NAME                                 STATE     READ WRITE CKSUM
        rpool                                ONLINE       0     0     0
          mirror-0                           ONLINE       0     0     0
            nvme-eui.6479a74f705011bf-part3  ONLINE       0     0     0
            nvme-eui.6479a74f705011ea-part3  ONLINE       0     0     0

YABS (notice the empty Disk):

# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #
#              Yet-Another-Bench-Script              #
#                     v2022-02-18                    #
# https://github.com/masonr/yet-another-bench-script #
# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #

Fri 01 Apr 2022 08:46:49 PM CEST

Basic System Information:
---------------------------------
Processor  : AMD Ryzen 5 3600 6-Core Processor
CPU cores  : 12 @ 3600.000 MHz
AES-NI     : ✔ Enabled
VM-x/AMD-V : ✔ Enabled
RAM        : 62.8 GiB
Swap       : 0.0 KiB
Disk       :

fio Disk Speed Tests (Mixed R/W 50/50):
---------------------------------
Block Size | 4k            (IOPS) | 64k           (IOPS)
  ------   | ---            ----  | ----           ----
Read       | 311.06 MB/s  (77.7k) | 1.64 GB/s    (25.6k)
Write      | 311.88 MB/s  (77.9k) | 1.65 GB/s    (25.8k)
Total      | 622.94 MB/s (155.7k) | 3.29 GB/s    (51.5k)
           |                      |
Block Size | 512k          (IOPS) | 1m            (IOPS)
  ------   | ---            ----  | ----           ----
Read       | 2.91 GB/s     (5.6k) | 3.53 GB/s     (3.4k)
Write      | 3.06 GB/s     (5.9k) | 3.77 GB/s     (3.6k)
Total      | 5.97 GB/s    (11.6k) | 7.30 GB/s     (7.1k)

iperf3 Network Speed Tests (IPv4):
---------------------------------
Provider        | Location (Link)           | Send Speed      | Recv Speed
                |                           |                 |
Clouvider       | London, UK (10G)          | 837 Mbits/sec   | 719 Mbits/sec
Online.net      | Paris, FR (10G)           | 926 Mbits/sec   | 783 Mbits/sec
WorldStream     | The Netherlands (10G)     | 925 Mbits/sec   | 780 Mbits/sec
WebHorizon      | Singapore (400M)          | 785 Mbits/sec   | 403 Mbits/sec
Clouvider       | NYC, NY, US (10G)         | 336 Mbits/sec   | 476 Mbits/sec
Velocity Online | Tallahassee, FL, US (10G) | 845 Mbits/sec   | 258 Mbits/sec
Clouvider       | Los Angeles, CA, US (10G) | busy            | 12.0 Mbits/sec
Iveloz Telecom  | Sao Paulo, BR (2G)        | 694 Mbits/sec   | 126 Mbits/sec

Geekbench 5 Benchmark Test:
---------------------------------
Test            | Value
                |
Single Core     | 1320
Multi Core      | 7772
Full Test       | https://browser.geekbench.com/v5/cpu/14017622

btrfs subvolume result in wrong disk calculation

My VPS only has 20G disk

Device     Start      End  Sectors Size Type
/dev/vda1   2048     4095     2048   1M BIOS boot
/dev/vda2   4096 41943006 41938911  20G Linux filesystem

But yabs.sh said I got 60G

Disk       : 60.0 GiB
# df -t simfs -t ext2 -t ext3 -t ext4 -t btrfs -t xfs -t vfat -t ntfs -t swap --total 2>/dev/null
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/vda2       20969452 12098376   7625576  62% /nix
/dev/vda2       20969452 12098376   7625576  62% /persist
/dev/vda2       20969452 12098376   7625576  62% /boot
total           62908356 36295128  22876728  62% -
# mount | fgrep vda2
/dev/vda2 on /nix type btrfs (rw,relatime,compress-force=zstd:3,space_cache=v2,subvolid=259,subvol=/@nix)
/dev/vda2 on /persist type btrfs (rw,relatime,compress-force=zstd:3,space_cache=v2,subvolid=260,subvol=/@persist)
/dev/vda2 on /boot type btrfs (rw,relatime,compress-force=zstd:3,space_cache=v2,subvolid=258,subvol=/@boot)

Three Enhancements request

Hi,
This is nice little tool helps a lot.

3 enhancement request

  1. What the current OS / Disk / partition block size is been used or running where the fio test is conducted. Show that.
  2. Display Latency of Disk with FIO data. Without Latency data it is very hard to determine the Database related usage.
  3. In your github page readme please include how to use it on Windows as most people will be able to utilize it than on windows too. I know it needs WSL v2 but it is not mentioned in your readme.

Everything else seems to be covered. :)

Regards,
Bilal Inamdar

Replace dd with fio?

dd isn't a good benchmarking tool. It only tests sequential writes which are not very common in real-world applications. Additionally, its results can be affected by caching on the host (which is impossible to bypass on a VPS).

See:
https://support.binarylane.com.au/support/solutions/articles/1000055889-how-to-benchmark-disk-i-o
https://unix.stackexchange.com/a/150681

A better option would be to use fio and test both random reads and writes. ServerScope runs a bunch of fio tests, as an example.

Fio OOM on 512MB servers?

Up until today, I've only seen yabs script get OOM errors on 384MB servers and not on 512MB RAM servers. But now I'm seeing OOM on 512MB and 1GB RAM servers running Centos 8.

Anyone else?

512MB server

[  345.019101] fio invoked oom-killer: gfp_mask=0x6280ca(GFP_HIGHUSER_MOVABLE|__GFP_ZERO), nodemask=(null), order=0, oom_score_adj=0
[  345.019103] fio cpuset=/ mems_allowed=0
[  345.019109] CPU: 0 PID: 2854 Comm: fio Tainted: G                 ---------r-  - 4.18.0-193.19.1.el8_2.x86_64 #1
[  345.019110] Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 07/28/2017
[  345.019112] Call Trace:
[  345.019155]  dump_stack+0x5c/0x80
[  345.019169]  dump_header+0x6e/0x27a
[  345.019176]  ? try_to_free_pages+0xe8/0x1c0
[  345.019178]  oom_kill_process.cold.28+0xb/0x10
[  345.019180]  out_of_memory+0x1ba/0x490
[  345.019184]  __alloc_pages_slowpath+0xc40/0xd60
[  345.019189]  __alloc_pages_nodemask+0x245/0x280
[  345.019195]  alloc_pages_vma+0x74/0x1d0
[  345.019199]  do_anonymous_page+0x91/0x360
[  345.019202]  __handle_mm_fault+0x662/0x6a0
[  345.019205]  handle_mm_fault+0xda/0x200
[  345.019213]  __do_page_fault+0x22d/0x4e0
[  345.019217]  do_page_fault+0x32/0x110
[  345.019223]  ? page_fault+0x8/0x30
[  345.019224]  page_fault+0x1e/0x30

1024MB server:

Basic System Information:
---------------------------------
Processor  : Intel(R) Xeon(R) CPU           X7560  @ 2.27GHz
CPU cores  : 1 @ 1743.800 MHz
AES-NI     : ❌ Disabled
VM-x/AMD-V : ✔ Enabled
RAM        : 1.0Gi
Swap       : 0B
Disk       : 25G

Generating fio test file...main: line 229:   964 Killed                  $FIO_CMD --name=setup --ioengine=libaio --rw=read --bs=4k --iodepth=64 --numjobs=2 --size=2G --runtime=1 --gtod_reduce=1 --filename=$DISK_PATH/test.fio --direct=1 --minimal &> /dev/null
fio Disk Speed Tests (Mixed R/W 50/50):
---------------------------------
Block Size | 4k            (IOPS) | 64k           (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       |                   () |                   ()
Write      |                   () |                   ()
Total      | 0.00 KB/s        (0) | 0.00 KB/s        (0)
           |                      |                     
Block Size | 512k          (IOPS) | 1m            (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       |                   () |                   ()
Write      |                   () |                   ()
Total      | 0.00 KB/s        (0) | 0.00 KB/s        (0)

lscpu not present on alpine linux

ARM compatibility is considered *experimental*

Basic System Information:
---------------------------------
Uptime     : 0 days, 0 hours, 9 minutes
bash: line 218: lscpu: command not found
Processor  : 
bash: line 224: lscpu: command not found
bash: line 225: lscpu: command not found

Maybe /proc/cpuinfo could be read instead? 🤔

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.