Phoronix Test Suite
Phoronix Test Suite is a free and open-source benchmark software for Linux and other operating systems which is developed by Michael Larabel and Matthew Tippett. Phoronix Test Suite integrates with https://openbenchmarking.org/ where tests, suites of tests and uploaded benchmarks from users are available.
Usage
Phoronix Test Suite can be activated using the following module file:
module load phoronixtestsuite/pts9.8.0/binary
The Phoronix Test Suite executable is phoronix-test-suite
but is aliased to the command p
. The Phoronix Test Suite can be launched during an interactive session with X Window support (e.g. an interactive qrshx
session) or used in batch jobs when appropriately configured.
Introduction
Phoronix Test Suite contains a very large number of benchmarks which can be used to become familiar with the software.
A list of these tests/test suites can be found here: https://openbenchmarking.org/tests
A summary of common commands can be found here: https://www.phoronix-test-suite.com/documentation/phoronix-test-suite.html
A Phoronix Test Suite cheat sheet can be found at: https://gist.github.com/anshula/728a76297e4a4ee7688d
Concepts to be aware of include:
You can save your results locally or also upload your results to the OpenBenchmarking website which may be useful for comparison.
Benchmark tests are typically discrete by a single program but may have multiple test modes to characterise different aspects of that program.
Test suites are a group of benchmark tests.
You will not be able to install dependencies with sudo - you will need to install these yourself, load them and override the check in phoronix for dependencies by setting the following environment variable:
SKIP_EXTERNAL_DEPENDENCIES=1
.Any dependencies will need to be installed / handled by you e.g. python, conda and tensorflow for the pts/ai-benchmark benchmark.
You can set the test name and unique identifier for a test interactively when running the program or with the following environment variables when in batch jobs:
TEST_RESULTS_NAME="My Test Name"
,TEST_RESULTS_IDENTIFIER="My Unique ID"
.
Common commands include:
p list-all-tests
to list all benchmark tests.p info yourtestnamehere
to get info about a given a benchmark test.p benchmark yourtestorsuitenamehere
to run a benchmark test.p install yourtestnamehere
to install a benchmark test.p upload yourtestnamehere
to upload your benchmark test results.p build-suite
to start building a custom suite of your own benchmark tests, you can also use this to pre-select options for benchmarks when batch testing.p batch-setup
to setup phoronix running batch jobs (set this up if doing batch jobs.)p batch-benchmark yourtestorsuitenamehere
to run a batch benchmark job.
Phoronix Test Suite example benchmarks / suites
Interactive jobs
The Phoronix Test Suite can be called like a normal executable when in an interactive session requested via qrshx
Simply entering the command p
will list the commands which are available.
As an example, you can start the CPU stress testing benchmark, stress-ng with the following command:
p benchmark stress-ng
Batch jobs
Here is an example batch submission script which is running a custom build CPU test suite called sharccpu
which reserves a node exclusively for 24 hours (this will take a long time to queue):
#!/bin/bash
#SBATCH --time=24:00:00
#SBATCH --mem=40000
#SBATCH --ntasks-per-node=40
#SBATCH --nodes=1
#SBATCH --exclusive
#SBATCH --mail-type=ALL
#SBATCH --mail-user= yourusername@sheffield.ac.uk
#SBATCH --job-name=Phoronix-CPU-test
export SKIP_EXTERNAL_DEPENDENCIES=1
module load phoronixtestsuite/pts9.8.0/binary
#Add the over all test name i.e. where the unique tests will be grouped
export TEST_RESULTS_NAME="Sheffield HPC CPU Test"
#Construct the test ID aka the unique name for each test
CPUMODEL=`lscpu | grep "Model name:" | sed -e "s/^Model name:[[:space:]]*//"`
CLUSTERNAME="Bessemer " # Edit me if needed
TESTID="$CLUSTERNAME $CPUMODEL"
export TEST_RESULTS_IDENTIFIER=$TESTID
p batch-benchmark sharccpu
Installation notes
PHP and several modules are required for Phoronix Test Suite to function, PHP has been manually compiled from source alongside these modules and any dependencies.
The sourcefiles for this will be located within:
/usr/local/packages/live/noeb/phoronixtestsuite/source/
The module file can be found at the following location:
/usr/local/modulefiles/live/noeb/phoronixtestsuite/pts9.8.0/binary
The Makefile can be found at the following location:
/usr/local/packages/live/noeb/phoronixtestsuite/source/php/php-src-8.0.0-dev/Makefile
The PHP_INI_SCAN_DIR environment variable is set in the module file to direct PHP to load the required PHP extensions:
gd
sockets
pcntl
bz2
The ./configure for this compiling is as follows:
./configure --prefix=/usr/local/packages/live/noeb/phoronixtestsuite/php-8.0.0-dev/ --with-curl --with-openssl --with-xmlrpc --with-zip --with-zlib
Please ensure that the PKG_CONFIG_PATH environment variable is set correctly:
export PKG_CONFIG_PATH=/usr/local/packages/live/noeb/phoronixtestsuite/php-8.0.0-dev/lib/pkgconfig/:/usr/local/packages/live/noeb/phoronixtestsuite/php-8.0.0-dev/lib64/pkgconfig/
Compiling and installing PHP modules will require you to first load the Phoronix Module then follow the instructions (with respect to phpize and onward) in this link: https://ma.ttias.be/how-to-compile-and-install-php-extensions-from-source/