Compare commits

..

5 Commits

Author SHA1 Message Date
Mason Rowe
edfdf8e511 Modify fio build process to use EXTLIBS
Updated build-fio.yml to include EXTLIBS for make.
2025-12-29 02:28:19 -05:00
Mason Rowe
8eac4a01f4 Remove duplicate checkout steps in build-fio.yml
Removed redundant checkout steps from the workflow.
2025-12-29 01:58:19 -05:00
Mason Rowe
0e07af99a0 Add LDFLAGS for atomic library during build 2025-12-29 01:56:09 -05:00
Mason Rowe
069c70708d Modify build-fio.yml to include CFLAGS
Add CFLAGS to include linux/falloc.h during build.
2025-12-29 01:49:04 -05:00
Mason Rowe
f994de59e9 Simplify directory change command for fio build 2025-12-29 01:27:35 -05:00
2 changed files with 25 additions and 33 deletions

View File

@@ -10,9 +10,6 @@ jobs:
latest-version: ${{ steps.get-version.outputs.version }}
should-build: ${{ steps.check-version.outputs.should-build }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Get latest fio release
id: get-version
run: |
@@ -58,9 +55,6 @@ jobs:
host: arm-linux-gnueabihf
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
@@ -107,9 +101,10 @@ jobs:
cd ~
curl -L -4 --retry 5 --retry-delay 2 --connect-timeout 15 "https://github.com/axboe/fio/archive/\$VERSION.tar.gz" -o "fio.tar.gz"
tar xf fio.tar.gz
cd fio-\${VERSION#fio-}*
cd fio*
CFLAGS+=' -include linux/falloc.h'
CC=/root/\$CROSS-cross/bin/\$CROSS-gcc ./configure --disable-native --build-static
make
make EXTLIBS+=' -latomic'
# verify no external shared library links
libcheck fio

47
yabs.sh
View File

@@ -1,7 +1,7 @@
#!/bin/bash
# Yet Another Bench Script by Mason Rowe
# Initial Oct 2019; Last update Jul 2026
# Initial Oct 2019; Last update Apr 2025
# Disclaimer: This project is a work in progress. Any errors or suggestions should be
# relayed to me via the GitHub project page linked below.
@@ -12,7 +12,7 @@
# performance via fio. The script is designed to not require any dependencies
# - either compiled or installed - nor admin privileges to run.
YABS_VERSION="v2026-07-03"
YABS_VERSION="v2025-04-20"
echo -e '# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #'
echo -e '# Yet-Another-Bench-Script #'
@@ -235,7 +235,7 @@ function format_size {
echo -e
echo -e "Basic System Information:"
echo -e "---------------------------------"
UPTIME=$(uptime | awk -F'( |,|:)+' '{d=h=m=0; if ($7=="min") m=$6; else {if ($7~/^day/) {d=$6; if ($9~/^min/) m=$8; else {h=$8;m=$9}} else {h=$6;m=$7}}} {print d+0,"days,",h+0,"hours,",m+0,"minutes"}')
UPTIME=$(uptime | awk -F'( |,|:)+' '{d=h=m=0; if ($7=="min") m=$6; else {if ($7~/^day/) {d=$6;h=$8;m=$9} else {h=$6;m=$7}}} {print d+0,"days,",h+0,"hours,",m+0,"minutes"}')
echo -e "Uptime : $UPTIME"
# check for local lscpu installs
if command -v lscpu >/dev/null 2>&1; then
@@ -383,18 +383,16 @@ function catch_abort() {
# format_speed
# Purpose: This method is a convenience function to format the output of the fio disk tests which
# always returns a result in KiB/s (fio terse v3 bandwidth fields are always KiB/s regardless
# of --kb_base setting). Converts KiB/s to decimal units (KB/s, MB/s, GB/s) for display.
# Conversion: multiply KiB/s by 1024 to get bytes/s, then divide by 1000, 1000000, or
# 1000000000 to get KB/s, MB/s, or GB/s respectively.
# Thresholds (in KiB/s): >= 976563 -> GB/s, >= 977 -> MB/s, otherwise -> KB/s
# always returns a result in KB/s. If result is >= 1 GB/s, use GB/s. If result is < 1 GB/s
# and >= 1 MB/s, then use MB/s. Otherwise, use KB/s.
# Parameters:
# 1. RAW - the raw disk speed result (in KiB/s)
# 1. RAW - the raw disk speed result (in KB/s)
# Returns:
# Formatted disk speed in GB/s, MB/s, or KB/s
function format_speed {
RAW=$1 # disk speed in KiB/s
RAW=$1 # disk speed in KB/s
RESULT=$RAW
local DENOM=1
local UNIT="KB/s"
# ensure raw value is not null, if it is, return blank
@@ -403,19 +401,18 @@ function format_speed {
return 0
fi
# check if disk speed >= 1 GB/s (976563 KiB/s = 1,000,000,000 bytes/s)
if [ "$RAW" -ge 976563 ]; then
# check if disk speed >= 1 GB/s
if [ "$RAW" -ge 1000000 ]; then
DENOM=1000000
UNIT="GB/s"
RESULT=$(awk -v a="$RAW" 'BEGIN { print a * 1024 / 1000000000 }')
# check if disk speed >= 1 MB/s (977 KiB/s ~ 1,000,000 bytes/s)
elif [ "$RAW" -ge 977 ]; then
# check if disk speed < 1 GB/s && >= 1 MB/s
elif [ "$RAW" -ge 1000 ]; then
DENOM=1000
UNIT="MB/s"
RESULT=$(awk -v a="$RAW" 'BEGIN { print a * 1024 / 1000000 }')
else
# convert KiB/s to KB/s (multiply by 1.024)
RESULT=$(awk -v a="$RAW" 'BEGIN { print a * 1024 / 1000 }')
fi
# divide the raw result to get the corresponding formatted result (based on determined unit)
RESULT=$(awk -v a="$RESULT" -v b="$DENOM" 'BEGIN { print a / b }')
# shorten the formatted result to two decimal places (i.e. x.xx)
RESULT=$(echo "$RESULT" | awk -F. '{ printf "%0.2f",$1"."substr($2,1,2) }')
# concat formatted result value with units and return result
@@ -572,9 +569,9 @@ elif [ -z "$SKIP_FIO" ]; then
# Proceed only if a relevant ZFS path was found
if [[ -n "$long" ]]; then
# Get the 'Avail' space directly for the detected path and explicitly for ZFS type
# The 'Avail' column is the 5th field in `df -Th` output (-T adds a Type column, shifting fields right)
# The 'Avail' column is the 4th field in `df -Th` output
# Example: '7.3T', '104G', '17G'
avail_space_with_unit=$(df -Th | grep -w "$long" | awk '$2 == "zfs" {print $5; exit}')
avail_space_with_unit=$(df -Th | grep -w "$long" | awk '$2 == "zfs" {print $4; exit}')
# If a valid free space value was extracted
if [[ -n "$avail_space_with_unit" ]]; then
@@ -801,7 +798,7 @@ function iperf_test {
done
# Run a latency test via ping -c1 command -> will return "xx.x ms"
[[ -n $LOCAL_PING ]] && LATENCY_RUN="$(ping "$FLAGS" -c1 "$URL" 2>/dev/null | grep -o 'time=.*' | sed 's/time=//')"
[[ -n $LOCAL_PING ]] && LATENCY_RUN="$(ping -c1 "$URL" 2>/dev/null | grep -o 'time=.*' | sed s/'time='//)"
[[ -z $LATENCY_RUN ]] && LATENCY_RUN="--"
# parse the resulting send and receive speed results
@@ -975,8 +972,8 @@ function launch_geekbench {
|| GB_URL="https://cdn.geekbench.com/Geekbench-5.5.1-Linux.tar.gz"
GB_CMD="geekbench5"
else # Geekbench v6
[[ $ARCH = *aarch64* || $ARCH = *arm* ]] && GB_URL="https://cdn.geekbench.com/Geekbench-6.7.1-LinuxARMPreview.tar.gz" \
|| GB_URL="https://cdn.geekbench.com/Geekbench-6.7.1-Linux.tar.gz"
[[ $ARCH = *aarch64* || $ARCH = *arm* ]] && GB_URL="https://cdn.geekbench.com/Geekbench-6.5.0-LinuxARMPreview.tar.gz" \
|| GB_URL="https://cdn.geekbench.com/Geekbench-6.5.0-Linux.tar.gz"
GB_CMD="geekbench6"
fi
GB_RUN="True"
@@ -1040,7 +1037,7 @@ function launch_geekbench {
printf "%-15s | %-30s\n" "Full Test" "$GEEKBENCH_URL"
if [[ -n $JSON ]]; then
JSON_RESULT+='{"version":'$VERSION',"single":'${GEEKBENCH_SCORES_SINGLE:-null}',"multi":'${GEEKBENCH_SCORES_MULTI:-null}
JSON_RESULT+='{"version":'$VERSION',"single":'$GEEKBENCH_SCORES_SINGLE',"multi":'$GEEKBENCH_SCORES_MULTI
JSON_RESULT+=',"url":"'$GEEKBENCH_URL'"},'
fi