Skip to content

Instantly share code, notes, and snippets.

@geerlingguy
Last active November 1, 2024 21:48
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.
Raspberry Pi Benchmark Suite - Phoronix
#!/bin/bash
#
# Benchmark script for Raspberry Pi OS.
#
# 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
# Fail on error.
set -e
# 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.
apt-get install -y php8.2-cli php8.2-xml
# Download test suite.
curl -LO https://www.phoronix-test-suite.com/releases/phoronix-test-suite-10.8.4.tar.gz
tar -xvf phoronix-test-suite-10.8.4.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

Updated to run on Debian 12 'Bookworm', with PHP 8.2 and the latest version of PTS as of today.

@geerlingguy
Copy link
Author

I also added build-linux-kernel, and right now the only non-interactive portion of the script is the pause after test installation, when the following prompt is displayed:

    Would you like to save these test results (Y/n): 

It looks like I could bypass that by setting up some defaults, e.g. /etc/phoronix-test-suite.xml with:

<BatchMode>
<SaveResults>FALSE</SaveResults>
<OpenBrowser>FALSE</OpenBrowser>
<UploadResults>FALSE</UploadResults>
<PromptForTestIdentifier>FALSE</PromptForTestIdentifier>
<PromptForTestDescription>FALSE</PromptForTestDescription>
<PromptSaveName>FALSE</PromptSaveName>
<RunAllTestCombinations>TRUE</RunAllTestCombinations>
<Configured>TRUE</Configured>
</BatchMode>

(But that would necessitate batch mode... I want to make it so I can bypass that question and not save results by default if using the suite...)

@geerlingguy
Copy link
Author

I added pts/build-linux-kernel with just defconfig but that doesn't seem to be working out... it runs both that and all deps.

  <Execute>
    <Test>pts/build-linux-kernel</Test>
    <Arguments>defconfig</Arguments>
  </Execute>

@geerlingguy
Copy link
Author

geerlingguy commented Nov 4, 2023

I took out the build-linux-kernel test because it doesn't seem to accept the argument, it just runs all options which means it takes forever.

You can run it separately:

./phoronix-test-suite benchmark pts/build-linux-kernel

@geerlingguy
Copy link
Author

Reworked the script to just run everything individually, instead of setting up a custom batch. This way it is completely automated. Well, should be, at least.

@geerlingguy
Copy link
Author

Fixed the script to make sure all the tests are installed prior to being run. Otherwise... it just errors out.

@deepak-coding-art
Copy link

I got error when try to run these test on my pi-zero 2 running Debian GNU/Linux 11 (bullseye) aarch64
For some reason when i try to install the packages

sudo apt install -y php8.2-cli php8.2-xml

got errors:

E: Unable to locate package php8.2-cli
E: Couldn't find any package by glob 'php8.2-cli'
E: Unable to locate package php8.2-xml
E: Couldn't find any package by glob 'php8.2-xml'

Does this script do not work on debian 11

@geerlingguy
Copy link
Author

@deepak-coding-art - This script is meant for Debian 12 (or current version), but you can modify the PHP versions by changing 8.2 in them to I think 8.1 or 8.0 (whichever works on Debian 11).

@deepak-coding-art
Copy link

deepak-coding-art commented Oct 21, 2024

Thanks it worked i just needed to add the deb.sury.org repository for php

@boseabhishek
Copy link

boseabhishek commented Nov 1, 2024

Hello @geerlingguy thanks for the awesome script. All the other benchmarks seems to run fine on my Ubuntu 22.04.05 (64 bit LTS) on RPI 4B except pts/build-linux-kernel which takes a very long time ( I had to terminate it twice after 3 hours or so).

Does that sound dubious? If not, any alternative suite I could use? Thanks.

@geerlingguy
Copy link
Author

@boseabhishek - It shouldn't take that long, unless maybe you have a very slow microSD card you're booting from. It normally takes 1-2 hours on a Pi 4 - see geerlingguy/sbc-reviews#4

@boseabhishek
Copy link

Thanks @geerlingguy for the link. I'm using a 64 GB USB stick to boot from and all other suites did pretty well. But, again I'll dig deeper. Thanks for your reply again.

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