Skip to content

Instantly share code, notes, and snippets.

@geerlingguy
Last active July 28, 2025 20:51
Show Gist options
  • Save geerlingguy/570e13f4f81a40a5395688667b1f79af to your computer and use it in GitHub Desktop.
Save geerlingguy/570e13f4f81a40a5395688667b1f79af to your computer and use it in GitHub Desktop.
SBC Benchmark Suite - Phoronix
#!/bin/bash
#
# Benchmark script for SBCs (Debian or Ubuntu).
#
# WARNING: This script is meant to be run as the root user.
# This script should never be run on a system/partition you
# care about. You should only run this on a system that you
# intend to use only for benchmarking and can reinstall or
# re-flash easily.
#
# It's a good idea to make sure your system is updated prior
# to running this script:
#
# sudo apt-get update
# sudo apt-get dist-upgrade -y
#
# Usage:
# sudo ./pi-general-benchmark.sh
#
# To set a different PHP_VERSION (e.g. if you're on a newer OS):
# sudo PHP_VERSION="8.3" ./pi-general-benchmark.sh
# Fail on error.
set -e
# Allow PHP_VERSION to be overridden.
PHP_VERSION="${PHP_VERSION:-8.2}"
PTS_VERSION="${PTS_VERSION:-10.8.4}"
# Set this to "~/.phoronix-test-suite" if not running as root.
PHORONIX_CONFIG_PATH="/var/lib/phoronix-test-suite"
# Verify script is running as root.
if [ "$EUID" -ne 0 ]
then echo "Please run this script as root (e.g. with sudo)."
exit
fi
# Change directories into home folder.
cd ~
# Install prerequisites.
source /etc/os-release
case $ID in
debian|ubuntu|mint)
apt-get install -y php${PHP_VERSION}-cli php${PHP_VERSION}-xml
;;
fedora|rhel|centos|rocky)
dnf install -y php-cli php-xml
;;
*)
echo -n "Unsupported Linux distribution."
;;
esac
# Download test suite.
curl -LO https://www.phoronix-test-suite.com/releases/phoronix-test-suite-${PTS_VERSION}.tar.gz
tar -xvf phoronix-test-suite-${PTS_VERSION}.tar.gz
cd phoronix-test-suite
# Accept terms and print system info.
./phoronix-test-suite system-info <<-END
y
n
n
END
# List recommended tests.
# ./phoronix-test-suite list-recommended-tests
# Batch setup
# Thanks to https://stackoverflow.com/a/77707788/100134 for the assist.
printf 'y\nn\nn\nn\nn\nn\nn\n' | ./phoronix-test-suite batch-setup
# Install test suites.
./phoronix-test-suite install pts/encode-mp3
./phoronix-test-suite install pts/x264
./phoronix-test-suite install pts/phpbench
./phoronix-test-suite install pts/build-linux-kernel
# Run standard test suites.
./phoronix-test-suite batch-run pts/encode-mp3
./phoronix-test-suite batch-run pts/phpbench
# Run test suite requiring option selection.
echo 3 | ./phoronix-test-suite batch-run pts/x264
echo 1 | ./phoronix-test-suite batch-run pts/build-linux-kernel
@geerlingguy
Copy link
Author

I've also updated the Gist to work on Fedora/RHEL/Rocky Linux/CentOS.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment