From f2d04cd6d900bc12a087922db8eff748d7ab1af2 Mon Sep 17 00:00:00 2001 From: Mason Rowe Date: Sat, 5 Oct 2019 21:55:21 -0400 Subject: [PATCH] added geekbench system performance test --- README.md | 49 +++++++++++++++++++++++++++++-------------------- yabs.sh | 40 ++++++++++++++++++++++++++++++++++------ 2 files changed, 63 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 398bbba..f54236d 100644 --- a/README.md +++ b/README.md @@ -12,51 +12,60 @@ This script isn't an attempt to be a golden standard. It's just yet another benc ## Tests Conducted -* **dd** - the dd utility is utilized to test disk performance. Both write and read speeds are evaluated by writing to and reading from a test file. \*Disclaimer: read speeds may be heavily influenced by cache depending on configuration of the host. +* **dd** - the dd utility is utilized to test disk performance. Both write and read speeds are evaluated by writing to and reading from a test file. **\***Disclaimer: read speeds may be heavily influenced by cache depending on configuration of the host. * **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 10 tries, the speed test for that location/direction is skipped. +* **Geekbench 4** - Geekbench is a benchmarking program that meastures 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 be compare to other geekbench'd systems. The claim URL to add the Geekbench 4 result to your Geekbench profile is written to a file in the directory that this script is executed from. ## Example Output ``` # ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## # # Yet-Another-Bench-Script # -# v2019-10-04 # +# v2019-10-05 # # https://github.com/masonr/yet-another-bench-script # # ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## # -Fri Oct 4 21:06:05 EDT 2019 +Sat Oct 5 21:44:13 EDT 2019 Basic System Information: --------------------------------- -Processor : Intel(R) Xeon(R) CPU E3-1230 V2 @ 3.30GHz -CPU cores : 8 @ 2096.045 MHz +Processor : Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz +CPU cores : 32 @ 1200.563 MHz AES-NI : ✔ Enabled VM-x/AMD-V : ❌ Disabled -RAM : 31G -Swap : 7.5G -Disk : 213G +RAM : 62G +Swap : 59G +Disk : 44T dd Disk Speed Tests: --------------------------------- | Test 1 | Test 2 | Test 3 | Avg | | | | -Write | 361 MB/s | 363 MB/s | 362 MB/s | 362 MB/s -Read | 407 MB/s | 410 MB/s | 412 MB/s | 409 MB/s +Write | 275 MB/s | 177 MB/s | 177 MB/s | 209 MB/s +Read* | 537 MB/s | 539 MB/s | 536 MB/s | 537 MB/s iperf3 Network Speed Tests: --------------------------------- Provider | Location (Link) | Send Speed | Recv Speed | | | -Bouygues Telecom | Paris, FR (10G) | 759 Mbits/sec | 282 Mbits/sec -Online.net | Paris, FR (10G) | 744 Mbits/sec | 166 Mbits/sec -Severius | The Netherlands (10G) | 782 Mbits/sec | 111 Mbits/sec -Worldstream | The Netherlands (10G) | busy | 75.7 Mbits/sec -wilhelm.tel | Hamburg, DE (10G) | 807 Mbits/sec | 56.7 Mbits/sec -Biznet | Bogor, Indonesia (1G) | busy | busy -Hostkey | Moscow, RU (1G) | 191 Mbits/sec | 474 Mbits/sec -Velocity Online | Tallahassee, FL, US (?G) | 860 Mbits/sec | 452 Mbits/sec -Airstream Communications | Eau Claire, WI, US (10G) | 312 Mbits/sec | 234 Mbits/sec -Hurricane Electric | Fremont, CA, US (1G) | 794 Mbits/sec | busy +Bouygues Telecom | Paris, FR (10G) | 160 Mbits/sec | 158 Mbits/sec +Online.net | Paris, FR (10G) | 165 Mbits/sec | 94.2 Mbits/sec +Severius | The Netherlands (10G) | 161 Mbits/sec | 151 Mbits/sec +Worldstream | The Netherlands (10G) | 166 Mbits/sec | 88.1 Mbits/sec +wilhelm.tel | Hamburg, DE (10G) | 160 Mbits/sec | 148 Mbits/sec +Biznet | Bogor, Indonesia (1G) | 118 Mbits/sec | 57.5 Mbits/sec +Hostkey | Moscow, RU (1G) | 148 Mbits/sec | 135 Mbits/sec +Velocity Online | Tallahassee, FL, US (1G) | 179 Mbits/sec | 133 Mbits/sec +Airstream Communications | Eau Claire, WI, US (10G) | 186 Mbits/sec | 150 Mbits/sec +Hurricane Electric | Fremont, CA, US (1G) | 168 Mbits/sec | busy + +Geekbench 4 CPU Performance Test: +--------------------------------- +Test | Value + | +Single Core | 3207 +Multi Core | 37289 +Full Test | https://browser.geekbench.com/v4/cpu/14763522 ``` diff --git a/yabs.sh b/yabs.sh index 28da612..467910d 100755 --- a/yabs.sh +++ b/yabs.sh @@ -2,7 +2,7 @@ echo -e '# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #' echo -e '# Yet-Another-Bench-Script #' -echo -e '# v2019-10-04 #' +echo -e '# v2019-10-05 #' echo -e '# https://github.com/masonr/yet-another-bench-script #' echo -e '# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #' @@ -34,9 +34,7 @@ DATE=`date -Iseconds | sed -e "s/:/_/g"` YABS_PATH=/tmp/$DATE/ mkdir -p $YABS_PATH -echo -e -echo -e "dd Disk Speed Tests:" -echo -e "---------------------------------" +echo -e "Performing dd disk performance test. This may take a couple minutes to complete..." function dd_test { I=0 @@ -68,16 +66,20 @@ touch $DATE.test 2> /dev/null if [ -f "$DATE.test" ]; then dd_test rm $DATE.test + + echo -en "\e[1A"; echo -e "\e[0K\r" + echo -e "dd Disk Speed Tests:" + echo -e "---------------------------------" printf "%-6s | %-10s | %-10s | %-10s | %-10s\n" " " "Test 1" "Test 2" "Test 3" "Avg" printf "%-6s | %-10s | %-10s | %-10s | %-10s\n" printf "%-6s | %-10s | %-10s | %-10s | %-10s\n" "Write" "${DD_WRITE_TEST_RES[0]}" "${DD_WRITE_TEST_RES[1]}" "${DD_WRITE_TEST_RES[2]}" "${DD_WRITE_TEST_AVG} ${DD_WRITE_TEST_UNIT}" printf "%-6s | %-10s | %-10s | %-10s | %-10s\n" "Read*" "${DD_READ_TEST_RES[0]}" "${DD_READ_TEST_RES[1]}" "${DD_READ_TEST_RES[2]}" "${DD_READ_TEST_AVG} ${DD_READ_TEST_UNIT}" else + echo -en "\e[1A"; echo -e "\e[0K\r" echo -e "You do not have write permission in this directory\nSwitch to a different directory to test disk speed.\nSkipping dd tests." fi - IPERF_PATH=$YABS_PATH/iperf mkdir -p $IPERF_PATH curl -s -o $IPERF_PATH/libiperf.so.0 https://iperf.fr/download/ubuntu/libiperf.so.0_3.1.3 > /dev/null @@ -128,7 +130,7 @@ IPERF_LOCS=( \ "speedtest.wtnet.de" "5200-5209" "wilhelm.tel" "Hamburg, DE (10G)" \ "iperf.biznetnetworks.com" "5201-5203" "Biznet" "Bogor, Indonesia (1G)" \ "speedtest.hostkey.ru" "5200-5203" "Hostkey" "Moscow, RU (1G)" \ - "iperf3.velocityonline.net" "5201-5210" "Velocity Online" "Tallahassee, FL, US (?G)" \ + "iperf3.velocityonline.net" "5201-5210" "Velocity Online" "Tallahassee, FL, US (1G)" \ "iperf.airstreamcomm.net" "5201-5205" "Airstream Communications" "Eau Claire, WI, US (10G)" \ "iperf.he.net" "5201-5201" "Hurricane Electric" "Fremont, CA, US (1G)" \ ) @@ -142,7 +144,9 @@ printf "%-25s | %-25s | %-15s | %-15s\n" "Provider" "Location (Link)" "Send Spee printf "%-25s | %-25s | %-15s | %-15s\n" for (( i = 0; i < IPERF_LOCS_NUM; i++ )); do + echo -e "Performing iperf3 test to ${IPERF_LOCS[i*4+2]}..." iperf_test "${IPERF_LOCS[i*4]}" "${IPERF_LOCS[i*4+1]}" + echo -en "\e[1A" IPERF_SENDRESULT_VAL=$(echo $IPERF_SENDRESULT | awk '{ print $6 }') IPERF_SENDRESULT_UNIT=$(echo $IPERF_SENDRESULT | awk '{ print $7 }') IPERF_RECVRESULT_VAL=$(echo $IPERF_RECVRESULT | awk '{ print $6 }') @@ -152,5 +156,29 @@ for (( i = 0; i < IPERF_LOCS_NUM; i++ )); do printf "%-25s | %-25s | %-15s | %-15s\n" "${IPERF_LOCS[i*4+2]}" "${IPERF_LOCS[i*4+3]}" "$IPERF_SENDRESULT_VAL $IPERF_SENDRESULT_UNIT" "$IPERF_RECVRESULT_VAL $IPERF_RECVRESULT_UNIT" done +echo -e "Performing Geekbench 4 CPU performance test. This may take a couple minutes to complete..." + +GEEKBENCH_PATH=$YABS_PATH/geekbench +mkdir -p $GEEKBENCH_PATH +curl -s http://cdn.geekbench.com/Geekbench-4.3.3-Linux.tar.gz | tar xz --strip-components=1 -C $GEEKBENCH_PATH +GEEKBENCH_TEST=$($GEEKBENCH_PATH/geekbench4 | grep "https://browser") +GEEKBENCH_URL=$(echo -e $GEEKBENCH_TEST | head -1) +GEEKBENCH_URL_CLAIM=$(echo $GEEKBENCH_URL | awk '{ print $2 }') +GEEKBENCH_URL=$(echo $GEEKBENCH_URL | awk '{ print $1 }') +sleep 10 +GEEKBENCH_SCORES=$(curl -s $GEEKBENCH_URL | grep "class='score' rowspan") +GEEKBENCH_SCORES_SINGLE=$(echo $GEEKBENCH_SCORES | awk -v FS="(>|<)" '{ print $3 }') +GEEKBENCH_SCORES_MULTI=$(echo $GEEKBENCH_SCORES | awk -v FS="(<|>)" '{ print $7 }') + +echo -en "\e[1A"; echo -e "\e[0K\r" +echo -e "Geekbench 4 CPU Performance Test:" +echo -e "---------------------------------" +printf "%-15s | %-30s\n" "Test" "Value" +printf "%-15s | %-30s\n" +printf "%-15s | %-30s\n" "Single Core" "$GEEKBENCH_SCORES_SINGLE" +printf "%-15s | %-30s\n" "Multi Core" "$GEEKBENCH_SCORES_MULTI" +printf "%-15s | %-30s\n" "Full Test" "$GEEKBENCH_URL" +[ ! -z "$GEEKBENCH_URL_CLAIM" ] && echo -e "$GEEKBENCH_URL_CLAIM" > geekbench4_claim.url 2> /dev/null + echo -e rm -rf /tmp/$DATE