Skip to content

Instantly share code, notes, and snippets.

@geerlingguy
Last active December 8, 2025 20:14
Show Gist options
  • Select an option

  • Save geerlingguy/570e13f4f81a40a5395688667b1f79af to your computer and use it in GitHub Desktop.

Select an option

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.

@geerlingguy
Copy link
Author

geerlingguy commented Dec 8, 2025

For macOS, I will need to make a few changes, like:

  • Document that Homebrew should already be installed
  • Set PHORONIX_CONFIG_PATH="~/.phoronix-test-suite"
  • Remove the if [ "$EUID" -ne 0 ] root user requirement
  • Tweak the distro detection PHP installation bit, to add Darwin and set up brew install php

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