Benchmarking

Related articles
Improving performance
Stress testing
Benchmarking is the act of measuring performance and comparing the results to another system's results or a widely accepted standard through a unified procedure. This unified method of evaluating system performance can help answer questions such as:
Is the system performing as it should?
What driver version should be used to get optimal performance?
Is the system capable of doing task x?
Many tools can be used to determine system performance, the following provides a list of tools available.
Standalone tools
UnixBench
Install
unixbench
AUR
, to run the benchmark run
ubench
.
See also:
https://github.com/kdlucas/byte-unixbench
https://github.com/kdlucas/byte-unixbench/blob/master/UnixBench/USAGE
interbench
interbench is an application designed to benchmark interactivity in Linux. It is designed to measure the effect of changes in Linux kernel design or system configuration changes such as CPU, I/O scheduler and filesystem changes and options.
Tip
With careful benchmarking, different hardware can be compared.
interbench is available in the
AUR
:
interbench
AUR
.
See also:
Realtime process management
Advanced traffic control
Linux-pf
fio
fio
(Flexible I/O Tester) is a utility that can simulate various workloads such as several threads issuing reads using asynchronous I/O. Fio spawns a number of threads or processes doing a particular type of I/O action as specified by the user.
Docs
Example usage:
# fio --filename=/mnt/test.fio --size=8GB --direct=1 --rw=randrw --bs=4k --ioengine=libaio --iodepth=256 --runtime=120 --numjobs=4 --time_based --group_reporting --name=iops-test-job --eta-newline=1
ttcp
ttcp (Test TCP) measures point-to-point bandwidth over any network connection. The program must be provided on both nodes between which bandwidth is to be determined.
Various flavors of ttcp can be found in the
AUR
:
ttcp
AUR
nuttcp
AUR
iperf
iperf is an easy to use point-to-point bandwidth testing tool that can use either TCP or UDP. It has nicely formatted output and a parallel test mode.
iperf
can be installed, or a different version of iperf is available with
iperf3
.
time
The
time(1)
command provides timing statistics about the command run by displaying the time that passed between invocation and termination.
time
contains the
time
command and some shells provide
time
as a builtin command.
$ time tar -zxvf archive.tar.gz
hdparm
Storage media can be benchmarked with
hdparm
(
hdparm
). Using hdparm with the
-Tt
switch, one can time sequential reads. This method is independent of partition alignment!
# hdparm -Tt /dev/sd
X
/dev/sd
X
:
Timing cached reads:   x MB in  y seconds = z MB/sec
Timing buffered disk reads:  x MB in  y seconds = z MB/sec
Note
One should run the above command 2-3 times and manually average the results for an accurate evaluation of read speed, per
hdparm(8) § T
.
gnome-disks
There is a graphical benchmark called gnome-disks contained in the
gnome-disk-utility
package that will give min/max/ave reads along with average access time and a nice graphical display. This method is independent of partition alignment!
# gnome-disks
Users will need to navigate through the GUI to the benchmark button (
"More actions..."
>
"Benchmark Volume..."
).
Example
KDiskMark
kdiskmark
is an HDD and SSD benchmark tool with a very friendly graphical user interface. KDiskMark with its presets and powerful GUI calls Flexible I/O Tester and handles the output to provide an easy to view and interpret comprehensive benchmark result.
systemd-analyze
$ systemd-analyze plot > boot.svg
Will plot a detailed graphic with the boot sequence: kernel time, userspace time, time taken by each service.
Example
dd
The
dd
utility can be used to measure both reads and writes. This method is dependent on partition alignment! In other words, if you failed to properly align your partitions, this fact will be seen here since you are writing and reading to a mounted filesystem.
Note
This method requires the command to be executed from a mounted partition on the device of interest!
First, enter a directory on the SSD with at least 1.1 GB of free space (and one that gives your user wrx permissions) and write a test file to measure write speeds and to give the device something to read:
$ dd if=/dev/zero of=
/path/to/SSD/
tempfile bs=1M count=1024 conv=fdatasync,notrunc status=progress
1024+0 records in
1024+0 records out
v
bytes (
w
MB,
x
MiB) copied,
y
s,
z
MB/s
Tip
See
dd-benchmark
for an explanation on the requirement to
sync
and further related
dd
options.
Next, clear the buffer-cache to accurately measure read speeds directly from the device:
# echo 3 > /proc/sys/vm/drop_caches
$ dd if=tempfile of=/dev/null bs=1M count=1024 status=progress
1024+0 records in
1024+0 records out
v
bytes (
w
MB,
x
MiB) copied,
y
s,
z
MB/s
Now that the last file is in the buffer, repeat the command to see the speed of the buffer-cache:
$ dd if=tempfile of=/dev/null bs=1M count=1024 status=progress
1024+0 records in
1024+0 records out
v
bytes (
w
MB,
x
MiB) copied,
y
s,
z
MB/s
Note
One should run the above command 4-5 times and manually average the results for an accurate evaluation of the buffer read speed.
Finally, delete the temp file
$ rm tempfile
Note
Some SSD controllers have compression hardware, which may skew benchmark results. See
https://www.pugetsystems.com/labs/articles/SSDs-Advertised-vs-Actual-Performance-179/
dcfldd
Dcfldd does not print the average speed in MB/s like good old dd does but with
time
you can work around that.
Time the run clearing the disk:
# time dcfldd if=/dev/zero of=/dev/sdX bs=4M
18944 blocks (75776Mb) written.dcfldd:: No space left of device
real     16m17.033s
user     0m0.377s
sys      0m51.160s
Calculate MB/s by dividing the output of the dcfldd command by the time in seconds. For this example: 75776Mb / (16.4 min * 60) = 77.0 MB/s.
7z
7z benchmark command can be used to measure the CPU speed in MIPS and also to check RAM for errors. Just install
7-Zip
and run the command below. More detailed information can be found at
[1]
.
$ 7z b
peakperf
peakperf-git
AUR
is a microbenchmark that achieves peak performance on x86_64 CPUs. Some issues may reduce the performance provided by your CPU, like CPU cooling. With peakperf you can check if your CPU provides the full power it is capable of doing.
You can calculate the performance (measured in GFLOP/s) you should get using your CPU (see
[2]
) and compare it with the performance that peakperf gives you. If both values are the same (or very similar), your CPU behaves as it should.
Note
Even though the goal of peakperf is to test the CPU, it is also a great way to test your cooling, since it will throttle your CPU to the limit.
cryptsetup
cryptsetup
benchmark can be used to measure the speed of various cryptographic algorithms (ciphers).
$ cryptsetup benchmark
kcapi
libkcapi
AUR
allows user-space to access the Linux kernel crypto API. The package provides several binaries, in particular kcapi-speed to benchmark hash, symmetric ciphers, AEAD ciphers, hash-based and cipher-based rng.
To list available ciphers:
$ kcapi-speed -l
Usage example of benchmarking AES using AES-NI in ECB mode 128bit keys tested for 10 seconds and using 1024 blocks to process
$ kcapi-speed -c 'AES(AESNI) ECB(ASM) 128' -b 1024 -t 3
Output for both decription and encryption:
AES(AESNI) ECB(ASM) 128 |d|   16384 bytes|                5.41 GB/s|330631 ops/s
AES(AESNI) ECB(ASM) 128 |e|   16384 bytes|                5.47 GB/s|334185 ops/s
Software suites
Bonnie++
bonnie++
is a C++ rewrite of the
original Bonnie
benchmarking suite is aimed at performing several tests of hard drive and filesystem performance.
See also:
Author's site
Wikipedia:Bonnie++
IOzone
IOzone is useful for performing a broad filesystem analysis of a vendor’s computer platform.
This program is available in the
AUR
:
iozone
AUR
.
The following can approximate the output of several tests of
CrystalDiskMark
, a popular Windows benchmarking utility:
Sequential 1M read/write:
iozone -e -I -s 1g -r 1m -i 0 -i 1
Sequential 128k read/write:
iozone -e -I -s 1g -r 128k -i 0 -i 1
Random 4k read/write:
iozone -e -I -s 1g -r 4k -i 0 -i 2 -i 1
Results will be in Kb/s so divide by 1024 to get them in MB/s.
See also BBS Article:
iozone to evaluate I/O schedulers... results NOT what you would expect!
.
HardInfo
hardinfo2
can gather information about your system's hardware and operating system, perform benchmarks, and generate printable reports either in HTML or in plain text formats. HardInfo performs CPU and FPU benchmarks and has a very clean GTK-based interface.
Phoronix Test Suite
The
Phoronix Test Suite
is the most comprehensive testing and benchmarking platform available that provides an extensible framework for which new tests can be easily added. The software is designed to effectively carry out both qualitative and quantitative benchmarks in a clean, reproducible, and easy-to-use manner.
The Phoronix Test Suite is based upon the extensive testing and internal tools developed by Phoronix.com since 2004 along with support from leading tier-one computer hardware and software vendors. This software is open-source and licensed under the GNU GPLv3.
Originally developed for automated Linux testing, support to the Phoronix Test Suite has since been added for OpenSolaris, Apple macOS, Microsoft Windows, and BSD operating systems. The Phoronix Test Suite consists of a lightweight processing core (pts-core) with each benchmark consisting of an XML-based profile and related resource scripts. The process from the benchmark installation, to the actual benchmarking, to the parsing of important hardware and software components is heavily automated and completely repeatable, asking users only for confirmation of actions.
The Phoronix Test Suite interfaces with OpenBenchmarking.org as a collaborative web platform for the centralized storage of test results, sharing of test profiles and results, advanced analytical features, and other functionality. Phoromatic is an enterprise component to orchestrate test execution across multiple systems with remote management capabilities.
This suite can be
installed
with the package
phoronix-test-suite
AUR
. There is also a developmental version available with
phoronix-test-suite-git
AUR
.
S
S
, an I/O Benchmark Suite, is a small collection of scripts to measure storage I/O performance.
Download or clone the project, install its dependencies and run it as root (privileges needed to change disk scheduler).
s-tui
s-tui
is an aesthetically pleasing and useful curses-style interface that shows graphs of CPU frequency, utilization, temperature, power consumption and has a built in stress tester.
sysbench
sysbench
is an all-round multi-threaded benchmark tool. Written in C and Perl, it can be used in CLI directly to benchmark filesystem, DRAM, CPU, thread-based scheduler and POSIX mutex performance. Or it can be used as Lua script interpreter to benchmark any arbitrarily complex workload. It provides a collection of scripts for database benchmarks.
Geekbench
geekbench
AUR
is a proprietary cross-platform suite of benchmarks that measures processor, GPU and memory performance by simulating a variety of real-world workloads, and provides scores that can be saved on Geekbench's website and compared (within the same version) against other systems, both your own and others'.
Geekbench is not useful as an independent objective test of performance, since the scores it give do not relate to any one individual task or how well a PC will perform at one or any of them; however it can be useful as a rough indication of a computer's performance relative to others, or the same computer on different operating systems/distros or under different conditions. It is commonly used in CPU benchmark comparison charts for this reason.
Flash media
Performance characteristics can be measured quantitatively using
iozone
AUR
.
Sustained
read and write values can, but often do not, correlate to real-world use cases of I/O heavy operations, such as unpacking and writing a number of files on a system update. A relevant metric to consider in these cases is the
random write
speed for small files.
The example invocation tests a 10M file using a 4k record size:
$ iozone -e -I -a -s 10M -r 4k -i 0 -i 1 -i 2
...

                                                                random   random
              kB  reclen    write  rewrite    read    reread    read     write
           10240       4      661      649     5802     5822     3892      624
Note
Test values are reported in KB/s.
Graphics
Basemark GPU
Basemark GPU
is an evaluation tool to analyze and measure graphics API (OpenGL 4.5, OpenGL ES 3.1, Vulkan and Microsoft DirectX 12) performance across mobile and desktop platforms. Basemark GPU targets both Desktop and Mobile platforms by providing both High Quality and Medium Quality modes. The High-Quality mode addresses cutting-edge Desktop workloads while the Medium Quality mode addresses equivalent Mobile workloads.
If you are using AMD GPU and have several vulkan implementations installed simultaneously, in the Test page you will see them as separate GPUs in Graphics Device dropdown list.
Basemark GPU is available in
basemark
AUR
package.
Blender-benchmark
Blender-benchmark
will gather information about the system, such as operating system, RAM, graphics cards, CPU model, as well as information about the performance of the system during the execution of the benchmark. After that, the user will be able to share the result online on the Blender Open Data platform, or to save the data locally.
Blender-benchmark is available in the
blender-benchmark
AUR
package.
Furmark
furmark
AUR
displays a very graphically-intensive image and the frame rate that results. While it can be used as a benchmark for GPU performance, its main purpose is instead as a stress test, intended to maximise GPU usage - this makes it useful for assessing system stability under full load and also for assessing the thermal performance of a graphics card.
Warning
As it is a stress test, Furmark may itself cause system stability issues. While most modern GPUs will throttle themselves if approaching hardware thermal maximums, in rare cases - especially if a card has inadequate or faulty cooling - hardware damage may result.
GFXBench
GFXBench
is a high-end graphics benchmark that measures mobile and desktop performance with next-gen graphics features across all platforms. As a true cross-API benchmark, GFXBench supports all the industry-standard and vendor-specific APIs including OpenGL, OpenGL ES, Vulkan, Metal, DirectX/Direct3D and DX12.
Vulkan API tests are currently under development and are only available for their corporate partners.
GFXBench is available in
gfxbench
AUR
package.
glmark2
glmark2
is an OpenGL 2.0 and ES 2.0 benchmark.
glmark2 is available in
glmark2
package.
glxgears
glxgears is a popular OpenGL test that renders a very simple OpenGL performance and outputs the frame rate. Though glxgears can be useful as a test of direct rendering capabilities of the graphics driver, it is an outdated tool that is not representative of the current state of GNU/Linux graphics and overall OpenGL possibilities. glxgears only tests a small segment of the OpenGL capabilities that might be used in a game. Performance increases noted in glxgears will not necessarily be realized in any given game. See
here
for more information.
glxgears can be installed via the
mesa-utils
and
lib32-mesa-utils
(for
multilib
) packages.
GpuTest
GpuTest
is a cross-platform (Windows, Linux and Max OS X) GPU stress test and OpenGL benchmark. GpuTest comes with several GPU tests including some popular ones from Windows'world (FurMark or TessMark).
GpuTest is available in
gputest
AUR
package.
intel-gpu-tools
intel-gpu-tools
gives you some top-like info for the integrated GPU. This can be quite useful in diagnosing GPU acceleration issues.
To use it,
install
the
intel-gpu-tools
package.
MangoHud
See
MangoHud
.
Unigine Engine
Unigine corp.
has produced several modern OpenGL benchmarks based on their graphics engine with features such as:
Per-pixel dynamic lighting
Normal & parallax occlusion mapping
64-bit HDR rendering
Volumetric fog and light
Powerful particle systems: fire, smoke, explosions
Extensible set of shaders (GLSL / HLSL)
Post-processing: depth of field, refraction, glow, blurring, color correction and much more.
Unigine benchmarks have found recent usage by those looking to overclock their systems. Heaven especially has been used for initial stability testing of overclocks.
These benchmarks can be found in
AUR
:
unigine-sanctuary
AUR
(2007)
unigine-tropics
AUR
(2008)
unigine-heaven
AUR
(2009)
unigine-valley
AUR
(2013)
unigine-superposition
AUR
(2017)
vkmark
vkmark
is an extensible Vulkan benchmarking suite with targeted, configurable scenes.
vkmark is available in
vkmark
package.
xmrig
xmrig
is a high performance, open source, cross platform RandomX, KawPow, CryptoNight and GhostRider unified CPU/GPU miner and RandomX benchmark.
For Radeon GPUs
Radeon GPU users running the open-source
xf86-video-amdgpu
driver, both
opencl-mesa
and
rocm-opencl-runtime
are required. To stress-test the GPU:
$ xmrig --stress --no-cpu --opencl
See also
Linux Benchmarking Homepage
Phoronix.com
Interbench Homepage
Unigine.com