Besides producing a beautiful Linux distribution by customizing the theme of the Plasma desktop, the focus of Garudal Linux is to optimize the distribution for performance. As a supplement to Garudal Linux Review [KDE Dragonized (D460nized),210621], I thought it would be interesting to see if the optimizations that the distribution makes do in fact result in better performance. I decided to use Phoronix Test Suite (discussed on this site in Introduction to Phoronix Test Suite) to benchmark Garuda and Solus -- another distribution that, at least in a previous incarnation, focused on performance -- and compare the results.
This article presents the results of the test, as well as some of the details in preparing both distributions installed on the Dell G5 for the testing.
The tests were performed on a Dell G5 5587 with an Intel Core-i7 8750H with an integrated Intel UHD-630 integrated graphics card, a discrete Nvidia 1050 Ti Mobile graphics card, 500 GB Samsung EVO 970 Plus PCIe NVMe SSD, 1 TB Samsung QVO 860 SATA SSD, and 24 GB of RAM. The details according to Phoronix are shown in the following image.
Instead of choosing a few individual tests, I decided to use test suites -- which are a collection of individual tests that can be executed in one operation -- to get a better indication of overall performance. Not only that, but I chose numerous test suites, to get an even better understanding of the performance of each distribution in the comparison.
Of the available test suites, I initially decided to use only five task-centric test suites based on my particular computing needs and interests, as well as the kernel, disk, and memory performance related suites. My initial choices were:
Upon seeing that the installation of all of these suites would have taken many hours and hundreds of gigabytes of storage, I limited my choices to the following test suites:
My choice of tests were further limited by the fact that some of the tests in these suites failed to install for reasons I didn't investigate. The determination of the success of the Garuda developers in producing a highly performant distribution is ultimately based on the tests from these test suites that installed and produced results, and furthermore were filtered by the Phoronix Test Suite Result Viewer to not include outliers or those that that were "noisy" -- a term used by the Phoronix Test Suite Result Viewer.
The Result Viewer is an excellent browser based Result Viewer which produces results graphs. One of its features is its ability to filter the results included in graphs and categorize the tests into performance areas of interest, which I also use to categorize the test results. The graphs produced by the Result Viewer are in addition to the unfiltered graphs created and saved in the results directory for each individual test.
Since most readers viewing this page are probably more interested in the results than the details of how they were produced with Phoronix Test Suite, I present the results first. The details of installing and configuring Phoronix Test Suite on both distributions, preparing and performing the tests follow the results. An introduction to PTS is also at Introduction to Phoronix Test Suite.
Phoronix Test Suite Result Viewer determined that the XX tests performed could be categorized into the seventeen computing areas of interest shown in the following table. Note that many tests can be considered to be in more than one area of interest. The table shows the number of tests in each category where one of the distributions performed better than the other (wins), even if the difference in the results of a particular test were very close. It shows that Solus performed better than Garuda in only one category of the seventeen -- based on the number of wins in the category by each distribution.
|Category of Interest||Garuda Wins||Solus Wins|
|Disks Tests |
Three tests total. One test not completed by Garuda. Only tests which completed and produced good results on both distributions included.
|Scientific Computing Tests||2||1|
Six tests total. Two tests not completed by Garuda. Only tests which completed and produced good results on both distributions included.
Twenty-eight tests total. Three tests not completed by Garuda. Two tests not completed by Solus. Only tests which completed and produced good results on both distributions included.
|Single Threaded Tests||3||1|
Six tests total. One test not completed by Garuda. Only tests which completed and produced good results on both distributions included.
|Linear Algebra Tests||2||0|
|Timed Code Compilation Tests||1||2|
|C/C++ Compiler Tests|
Sixteen tests total. One test not completed by Garuda. Only tests which completed and produced good results on both distributions included.
Thirty-five tests total. One test not completed by Garuda. Only tests which completed and produced good results on both distributions included.
Six tests total. One test not completed by Garuda. Only tests which completed and produced good results on both distributions included.
Four tests total. One test not completed by Garuda. Only tests which completed and produced good results on both distributions included.
The graphical results of each individual test grouped by area of interest are available below for closer examination.
Phoronix Test Suite can be installed using various methods. Supported Linux distributions offer the software form their native package repositories for installation with their native package managers. A universal installation tarball is also available for UNIX like systems that includes an installation script for system-wide installation. PTS can also be used without installation just by running the executable contained in the directory created by extracting the tarball. I chose to install Phoronix Test Suite for system-wide access for use by root on both Garuda and Solus using the installation script provided by the Phoronix universal installation tarball for Linux/BSD/and MacOS.
The universal installation tarball is available on its Downloads page, along with packages for Debian based systems.
After extracting the tar.gz file and changing directories to the root of the extracted directory, executing the install-sh script as root will perform the installation.
╭─brook@g5 in ~/DataEXT4/SoftwareDownloads/phoronix-test-suite/phoronix-test-suite took 3ms ╰─λ sudo bash ./install-sh
Phoronix Test Suite is primarily configured in one of two configuration files depending on whether it is system-wide, privileged user or per ordinary user configuration, /etc/phoronix-test-suite.xml for system-wide, privileged and ~/.phoronix-test-suite/user-config.xml for execution as a specific ordinary user.
Test results of tests performed on any installed distribution on this computer to should be available to any other distribution. This means that test results must be stored in a data partition accessible to all installed distributions. For this requirement, and for reasons mentioned in Introduction to Phoronix Test Suite, PTS must be executed as root and the system-wide configuration file must be modified to specify a directory on the data partition's file system. So, the Results Directory parameter value in the XML hierarchy Phoronix Test Suite -> Options -> Testing must be changed to reflect the desired directory. I changed the value from
With this change, no matter on which distribution PTS is run, the results will be saved to this location. This configuration change on the PTS instances installed on Solus and Garuda is required so that the results can be merged and analyzed together. Because of the power of PTS other configurations and workflows are possible to achieve the same results, but for my use case this is simplest.
Also, in order to download and install tests only once, instead of performing the download and installation on both distributions' instances of PTS, I changed the Environment Directory parameter value in the XML hierarchy Phoronix Test Suite -> Options -> Installation and the CacheDirectory parameter value in the XML hierarchy Phoronix Test Suite -> Options -> Installation, respectively, to
With this change, tests installed in an instance of PTS on any of the distributions on the computer will be accessible from any other. These configuration changes must be performed in the /etc/phoronix-test-suite.xml file of all distributions on which PTS is installed -- in the case of the two distributions to be benchmarked here, in the instance of this file on both Solus and Garuda.
Individual benchmarking tests or collections of tests grouped in a test suite must be installed to perform benchmarks. We saw above that suites that are available for installation form openbenchmarking.org repository mirrors can be listed with:
sudo phoronix-test-suite list-available-suites
The following listing shows the output of the command. Note that, for some reason, the pts/workstation suite is not actually listed in the output of
list-available-suites but is listed on the openbenchmarking.org site.
╭─brook@g5 in ~/DataEXT4/SoftwareDownloads/phoronix-test-suite/phoronix-test-suite ╰─λ sudo phoronix-test-suite list-available-suites [sudo] password for brook: Phoronix Test Suite v10.4.0 Available Suites pts/audio-encoding - Audio Encoding System pts/av1 - AV1 System pts/bioinformatics - Bioinformatics System pts/browsers - Web Browsers System pts/cad - CAD System pts/chess - Chess Test Suite Processor pts/compilation - Timed Code Compilation System pts/compiler - C/C++ Compiler Tests Processor pts/compression - Compression Tests Processor * pts/creator - Creator Workloads System pts/cryptocurrency - Cryptocurrency Benchmarks, CPU Mining Tests Processor pts/cryptography - Cryptography Processor pts/database - Database Test Suite System pts/desktop-graphics - Desktop Graphics System pts/disk - Disk Test Suite Disk pts/electronic-design - Electronic Design System pts/finance - Finance System pts/game-dev - Game Development System pts/hpc - HPC - High Performance Computing System pts/imaging - Imaging System pts/java - Java System pts/kernel - Common Kernel Benchmarks System pts/linear-algebra - Linear Algebra System pts/machine-learning - Machine Learning System pts/memory - Memory Test Suite Memory pts/molecular-dynamics - Molecular Dynamics System pts/mpi - MPI Benchmarks System * pts/multicore - Multi-Core Processor pts/network - Networking Test Suite Network pts/nvidia-gpu-compute - NVIDIA GPU Compute Graphics pts/ocr - OCR System pts/oneapi - Intel oneAPI System pts/opencl - OpenCL System pts/productivity - Productivity System pts/programmer - Programmer / Developer System Benchmarks System pts/python - Python System pts/quantum-mechanics - Quantum Mechanics System pts/raytracing - Raytracing System * pts/renderers - Renderers Processor pts/scientific-computing - Scientific Computing System pts/sdr - Software Defined Radio System pts/server - Server System pts/single-threaded - Single-Threaded System pts/speech - Speech System pts/steam - Steam Graphics pts/telephony - Telephony System pts/texture-compression - Texture Compression System pts/unigine - Unigine Test Suite Graphics pts/video-encoding - Video Encoding System pts/vulkan-compute - Vulkan Compute Graphics pts/vulkan-rt - Vulkan Ray-Tracing Graphics * Indicates a partially supported suite. ╭─brook@g5 in ~/DataEXT4/SoftwareDownloads/phoronix-test-suite/phoronix-test-suite took 26s ╰─λ
A custom test suite collection can be created from all of the installed or available tests by using the command argument
build-test-suite. When used without any options an interactive tool is started to guide the user in selecting the tests and suites to add to the new custom suite; if test names and suite names are provided as options, as in:
sudo phoronix-test-suite build-suite test-1 test-2 ... test-n suite-1 suite-2 suite-n
where test-1, test-1 ... test-n are individual test identifiers of tests to be included in the suite. Test suites created by executing the
build-test-suite command as root are saved in /var/lib/phoronix-test-suite/test-suites/local/ in a directory named after the created test suite name. The directory will contain the test definition in an .xml file named suite-definition.xml.
I used the command to create a new test suite of the suites that were successfully installed and a selection of tests that were successfully installed from the failed test suite installations. The following table shows the tests included in the newly created test suite for the purposes of this comparison benchmark.
|Suite||Tests in Suite||Tests Included from Suite|
The following listing shows the command in use, and the subsequent interaction, to create a test suite composed of the tests mentioned above named odrts.
╭─brook@g5 in ~ took 5s ╰─λ sudo phoronix-test-suite build-suite pts/workstation fs-mark compilebench postmark ramspeed stream t-test1 cachebench mbw sqlite-speedtest pmbench openssl ctx-clock hackbench mutex ipc-benchmark stress-ng osbench node-web-tooling compress-zstd pyperformance pybench cryptsetup build-eigen build-mplayer build2 mt-dgemm arrayfire amg [sudo] password for brook: Phoronix Test Suite v10.4.0 Test Suite Creation Enter name of suite: odrts 1: System 2: Processor 3: Disk 4: Graphics 5: Memory 6: Network 7: OS 8: Other Select test type: 8 Enter suite maintainer name: ORDINATECHNIC Enter suite description: Test suite composed of the suite pts/workstation and a selection of tests from the suites pts/kernel, pts/disk, pts/memory, and pts/programmer. Bind current test profile versions to test suite (Y/n): FS-Mark 3.3: pts/fs-mark-1.0.2 Disk Test Configuration 1: 1000 Files, 1MB Size 2: 1000 Files, 1MB Size, No Sync/FSync 3: 5000 Files, 1MB Size, 4 Threads 4: 4000 Files, 32 Sub Dirs, 1MB Size 5: Test All Options ** Multiple items can be selected, delimit by a comma. ** Test: 5 Compile Bench 0.6: pts/compilebench-1.0.3 Disk Test Configuration 1: Initial Create 2: Compile 3: Read Compiled Tree 4: Test All Options ** Multiple items can be selected, delimit by a comma. ** Test: 4 RAMspeed SMP 3.5.0: pts/ramspeed-1.4.3 Memory Test Configuration 1: Copy 2: Scale 3: Add 4: Triad 5: Average 6: Test All Options ** Multiple items can be selected, delimit by a comma. ** Type: 6 1: Integer 2: Floating Point 3: Test All Options ** Multiple items can be selected, delimit by a comma. ** Benchmark: 3 Stream 2013-01-17: pts/stream-1.3.2 Memory Test Configuration 1: Copy 2: Scale 3: Add 4: Triad 5: Test All Options ** Multiple items can be selected, delimit by a comma. ** Type: 5 t-test1 2017-01-13: pts/t-test1-1.0.1 Memory Test Configuration 1: 1 2: 2 3: Test All Options ** Multiple items can be selected, delimit by a comma. ** Threads: 3 CacheBench: pts/cachebench-1.1.2 Processor Test Configuration 1: Read 2: Write 3: Read / Modify / Write 4: Test All Options ** Multiple items can be selected, delimit by a comma. ** Test: 4 MBW 2018-09-08: pts/mbw-1.0.0 Memory Test Configuration 1: Memory Copy 2: Memory Copy, Fixed Block Size 3: Test All Options ** Multiple items can be selected, delimit by a comma. ** Test: 3 1: 128 MiB 2: 512 MiB 3: 1024 MiB 4: 4096 MiB 5: 8192 MiB 6: Test All Options ** Multiple items can be selected, delimit by a comma. ** Array Size: 6 pmbench: pts/pmbench-1.0.2 Memory Test Configuration 1: 1 2: 2 3: 4 4: 8 5: 12 6: Test All Options ** Multiple items can be selected, delimit by a comma. ** Concurrent Worker Threads: 6 1: 100% Writes 2: 50% 3: 80% Reads 20% Writes 4: 100% Reads 5: Test All Options ** Multiple items can be selected, delimit by a comma. ** Read-Write Ratio: 1,3,4 Hackbench: pts/hackbench-1.0.0 Processor Test Configuration 1: 1 2: 2 3: 4 4: 8 5: 16 6: 32 7: Test All Options ** Multiple items can be selected, delimit by a comma. ** Count: 7 1: Process 2: Thread 3: Test All Options ** Multiple items can be selected, delimit by a comma. ** Type: 3 BenchmarkMutex: pts/mutex-1.0.0 System Test Configuration 1: Mutex Lock Unlock std::mutex 2: Mutex Lock Unlock std::mutex 3: Mutex Lock Unlock pthread_mutex 4: Mutex Lock Unlock ticket_spinlock 5: Mutex Lock Unlock spinlock 6: Mutex Lock Unlock spinlock_amd 7: Shared Mutex Lock Shared 8: Semaphore Release And Acquire 9: Test All Options ** Multiple items can be selected, delimit by a comma. ** Benchmark: 9 IPC_benchmark: pts/ipc-benchmark-1.0.0 Processor Test Configuration 1: Unnamed Pipe 2: FIFO Named Pipe 3: Unnamed Unix Domain Socket 4: TCP Socket 5: Test All Options ** Multiple items can be selected, delimit by a comma. ** Type: 5 1: 128 2: 256 3: 512 4: 1024 5: 2048 6: 4096 7: Test All Options ** Multiple items can be selected, delimit by a comma. ** Message Bytes: 7 Stress-NG 0.11.07: pts/stress-ng-1.3.1 System Test Configuration 1: CPU Stress 2: Crypto 3: Memory Copying 4: Glibc Qsort Data Sorting 5: Glibc C String Functions 6: Vector Math 7: Matrix Math 8: Forking 9: System V Message Passing 10: Semaphores 11: Socket Activity 12: Context Switching 13: Atomic 14: CPU Cache 15: Malloc 16: MEMFD 17: MMAP 18: NUMA 19: RdRand 20: SENDFILE 21: Test All Options ** Multiple items can be selected, delimit by a comma. ** Test: 21 OSBench: pts/osbench-1.0.2 OS Test Configuration 1: Create Files 2: Create Processes 3: Create Threads 4: Launch Programs 5: Memory Allocations 6: Test All Options ** Multiple items can be selected, delimit by a comma. ** Test: 6 Zstd Compression 1.5.0: pts/compress-zstd-1.5.0 Processor Test Configuration 1: 3 2: 3, Long Mode 3: 8 4: 8, Long Mode 5: 19 6: 19, Long Mode 7: Test All Options ** Multiple items can be selected, delimit by a comma. ** Compression Level: 7 PyPerformance 1.0.0: pts/pyperformance-1.0.2 System Test Configuration 1: 2to3 2: chaos 3: crypto_pyaes 4: django_template 5: float 6: go 7: json_loads 8: nbody 9: pathlib 10: pickle_pure_python 11: python_startup 12: raytrace 13: regex_compile 14: Test All Options ** Multiple items can be selected, delimit by a comma. ** Benchmark: 14 ArrayFire 3.7: pts/arrayfire-1.1.0 Processor Test Configuration 1: BLAS CPU 2: Conjugate Gradient CPU 3: BLAS OpenCL 4: Conjugate Gradient OpenCL 5: Test All Options ** Multiple items can be selected, delimit by a comma. ** Test: 5 Available Options: 1: Add Test 2: Add Sub-Suite 3: Save & Exit Select next operation: 3 Saved -- to run this suite, type: phoronix-test-suite benchmark odrts ╭─brook@g5 in ~ took 3m29s ╰─λ
Unfortunately, Phoronix Test Suite -- for system-wide, privileged execution -- does not save created test suites in the same directory as that used to save installed tests and results, but in a subdirectory of /var/lib/phoronix-test-suite. That means we either have to recreate the suite in another distribution that we want to run the suite in for a comparison benchmark, or copy the test suite directory to any other distribution in which we want to run the suite. For this article, where the test suite was created in Garuda Linux, it was necessary to copy the directory to the appropriate directory in the Solus installation, as in:
╭─brook@g5 in /run/media/brook/d002fda3-1a8a-4dca-89b7-7ebf7705e264/@/var/lib/phoronix-test-suite/test-suites/local🔒 took 3ms ╰─λ sudo cp -r odrts/ /var/lib/phoronix-test-suite/test-suites/local/ Password: ╭─brook@g5 in /run/media/brook/d002fda3-1a8a-4dca-89b7-7ebf7705e264/@/var/lib/phoronix-test-suite/test-suites/local🔒 took 3s ╰─λ
When the tests were first installed on Garuda, because of the changes to the installation directory setting in the configuration file, they are accessible to instances of Phoronix on other distributions -- as long as the same change is made to the other distributions' Phoronix configuration file. But because when the tests were installed on Garuda, Phoronix Test Suite automatically installs the dependencies using the distribution's -- in this case Garuda's -- package manager on the current (Garuda) OS. This means that even though the tests were accessible to Solus, the required dependencies on packages from the Solus repositories would not be available to the PTS installation on Solus. A PTS command named
install-dependencies is available that will use the system package manager to install dependencies for a specified test or test suite. This command was used to ensure that the necessary dependencies on distribution packages would be available to Phoronix. The listing below shows the execution of this command on Solus and its output.
╭─brook@g5 in repo: ordinatechnic on exp via v2.7.18 took 4m24s ╰─λ sudo phoronix-test-suite install-dependencies odrts Password: Evaluating External Test Dependencies ................................................................ Evaluating System Dependencies ....................................................................... The following dependencies are needed and will be installed: - bzip2-devel - freeglut-devel - ocl-icd-devel - openmpi - libpng-devel - p7zip - yasm - libaio-devel - nodejs - libboost-devel - openblas-devel - fftw-devel This process may take several minutes. Please enter your root password below: Safety switch forces the upgrade of following packages: libnspr libnss systemd Following packages will be installed: bzip2-devel fftw-devel freeglut-devel libaio-devel libboost-devel libnspr libnss libpng-devel nodejs ocl-icd ocl-icd-devel openblas openblas-devel opencl-headers openmpi p7zip systemd systemd-devel yasm Total size of package(s): 49.68 MB Downloading 1 / 19 Package systemd found in repository Solus systemd-95-97-1-x86_64.delta.eopkg (3.1 MB)100% 1.74 MB/s [00:00:01] [complete] Downloading 2 / 19 Package libnspr found in repository Solus libnspr-4.32-20-1-x86_64.eopkg (115.0 KB)100% 211.41 MB/s [00:00:00] [complete] Downloading 3 / 19 Package libnss found in repository Solus libnss-48-49-1-x86_64.delta.eopkg (1.4 MB)100% 3.35 MB/s [00:00:00] [complete] Downloading 4 / 19 Package fftw-devel found in repository Solus fftw-devel-3.3.8-11-1-x86_64.eopkg (12.0 KB)100% 117.62 MB/s [00:00:00] [complete] Downloading 5 / 19 Package libboost-devel found in repository Solus libboost-devel-1.72.0-24-1-x86_64.eopkg (11.6 MB)100% 2.28 MB/s [00:00:00] [complete] Downloading 6 / 19 Package systemd-devel found in repository Solus systemd-devel-95-97-1-x86_64.delta.eopkg (20.0 KB)100% 207.74 MB/s [00:00:00] [complete] Downloading 7 / 19 Package opencl-headers found in repository Solus opencl-headers-2020.12.18-2-1-x86_64.eopkg (33.0 KB)100% 214.17 MB/s [00:00:00] [complete] Downloading 8 / 19 Package ocl-icd found in repository Solus ocl-icd-2.2.14-8-1-x86_64.eopkg (42.0 KB)100% 225.99 MB/s [00:00:00] [complete] Downloading 9 / 19 Package ocl-icd-devel found in repository Solus ocl-icd-devel-2.2.14-8-1-x86_64.eopkg (7.0 KB)100% 122.51 MB/s [00:00:00] [complete] Downloading 10 / 19 Package openmpi found in repository Solus openmpi-3.0.1-5-1-x86_64.eopkg (2.6 MB)100% 1.89 MB/s [00:00:00] [complete] Downloading 11 / 19 Package nodejs found in repository Solus nodejs-14.17.2-97-1-x86_64.eopkg (18.2 MB)100% 2.27 MB/s [00:00:00] [complete] Downloading 12 / 19 Package bzip2-devel found in repository Solus bzip2-devel-1.0.8-14-1-x86_64.eopkg (3.0 KB)100% 143.72 MB/s [00:00:00] [complete] Downloading 13 / 19 Package openblas found in repository Solus openblas-0.3.13-21-1-x86_64.eopkg (8.1 MB)100% 2.28 MB/s [00:00:00] [complete] Downloading 14 / 19 Package yasm found in repository Solus yasm-1.3.0-6-1-x86_64.eopkg (780.0 KB)100% 190.51 MB/s [00:00:00] [complete] Downloading 15 / 19 Package openblas-devel found in repository Solus openblas-devel-0.3.13-21-1-x86_64.eopkg (64.0 KB)100% 195.63 MB/s [00:00:00] [complete] Downloading 16 / 19 Package libaio-devel found in repository Solus libaio-devel-0.3.11-3-1-x86_64.eopkg (3.0 KB)100% 132.04 MB/s [00:00:00] [complete] Downloading 17 / 19 Package freeglut-devel found in repository Solus freeglut-devel-3.2.1-13-1-x86_64.eopkg (12.0 KB)100% 96.92 MB/s [00:00:00] [complete] Downloading 18 / 19 Package p7zip found in repository Solus p7zip-17.04-11-1-x86_64.eopkg (3.7 MB)100% 2.33 MB/s [00:00:00] [complete] Downloading 19 / 19 Package libpng-devel found in repository Solus libpng-devel-1.6.37-20-1-x86_64.eopkg (97.0 KB)100% 217.01 MB/s [00:00:00] [complete] Installing 1 / 19 systemd-95-97-1-x86_64.delta.eopkg [cached] Installing systemd, version 247.8, release 97 Upgrading to new upstream version Extracting the files of systemd Upgraded systemd Installing 2 / 19 libnspr-4.32-20-1-x86_64.eopkg [cached] Installing libnspr, version 4.32, release 20 Upgrading to new upstream version Extracting the files of libnspr Upgraded libnspr Installing 3 / 19 libnss-48-49-1-x86_64.delta.eopkg [cached] Installing libnss, version 3.68, release 49 Upgrading to new upstream version Extracting the files of libnss Upgraded libnss Installing 4 / 19 fftw-devel-3.3.8-11-1-x86_64.eopkg [cached] Installing fftw-devel, version 3.3.8, release 11 Extracting the files of fftw-devel Installed fftw-devel Installing 5 / 19 libboost-devel-1.72.0-24-1-x86_64.eopkg [cached] Installing libboost-devel, version 1.72.0, release 24 Extracting the files of libboost-devel Installed libboost-devel Installing 6 / 19 systemd-devel-95-97-1-x86_64.delta.eopkg [cached] Installing systemd-devel, version 247.8, release 97 Upgrading to new upstream version Extracting the files of systemd-devel Upgraded systemd-devel Installing 7 / 19 opencl-headers-2020.12.18-2-1-x86_64.eopkg [cached] Installing opencl-headers, version 2020.12.18, release 2 Extracting the files of opencl-headers Installed opencl-headers Installing 8 / 19 ocl-icd-2.2.14-8-1-x86_64.eopkg [cached] Installing ocl-icd, version 2.2.14, release 8 Extracting the files of ocl-icd Installed ocl-icd Installing 9 / 19 ocl-icd-devel-2.2.14-8-1-x86_64.eopkg [cached] Installing ocl-icd-devel, version 2.2.14, release 8 Extracting the files of ocl-icd-devel Installed ocl-icd-devel Installing 10 / 19 openmpi-3.0.1-5-1-x86_64.eopkg [cached] Installing openmpi, version 3.0.1, release 5 Extracting the files of openmpi Installed openmpi Installing 11 / 19 nodejs-14.17.2-97-1-x86_64.eopkg [cached] Installing nodejs, version 14.17.2, release 97 Extracting the files of nodejs Installed nodejs Installing 12 / 19 bzip2-devel-1.0.8-14-1-x86_64.eopkg [cached] Installing bzip2-devel, version 1.0.8, release 14 Extracting the files of bzip2-devel Installed bzip2-devel Installing 13 / 19 openblas-0.3.13-21-1-x86_64.eopkg [cached] Installing openblas, version 0.3.13, release 21 Extracting the files of openblas Installed openblas Installing 14 / 19 yasm-1.3.0-6-1-x86_64.eopkg [cached] Installing yasm, version 1.3.0, release 6 Extracting the files of yasm Installed yasm Installing 15 / 19 openblas-devel-0.3.13-21-1-x86_64.eopkg [cached] Installing openblas-devel, version 0.3.13, release 21 Extracting the files of openblas-devel Installed openblas-devel Installing 16 / 19 libaio-devel-0.3.11-3-1-x86_64.eopkg [cached] Installing libaio-devel, version 0.3.11, release 3 Extracting the files of libaio-devel Installed libaio-devel Installing 17 / 19 freeglut-devel-3.2.1-13-1-x86_64.eopkg [cached] Installing freeglut-devel, version 3.2.1, release 13 Extracting the files of freeglut-devel Installed freeglut-devel Installing 18 / 19 p7zip-17.04-11-1-x86_64.eopkg [cached] Installing p7zip, version 17.04, release 11 Extracting the files of p7zip Installed p7zip Installing 19 / 19 libpng-devel-1.6.37-20-1-x86_64.eopkg [cached] Installing libpng-devel, version 1.6.37, release 20 Extracting the files of libpng-devel Installed libpng-devel There are dependencies still missing from the system: - OpenMPI 1: Ignore missing dependencies and proceed with installation. 2: Skip installing the tests with missing dependencies. 3: Re-attempt to install the missing dependencies. 4: Quit the current Phoronix Test Suite process. Missing dependencies action: 3 The following dependencies are needed and will be installed: - openmpi This process may take several minutes. Please enter your root password below: The following package(s) are already installed and are not going to be installed again: openmpi No packages to install. ╭─brook@g5 in repo: ordinatechnic on exp via v2.7.18 took 3m2s ╰─λ
I installed PTS, created the test suite, and ran the suite first on Garuda Linux. I then installed PTS on Solus and copied the test suite definition to the appropriate directory then ran the test on Solus. The Solus testing completed without error except for the tests that apparently did not apply to the system. The Garuda Linux test, however, hung on the first arrayfire test for five hours. The PTS manual documents methods to skip the current test but continue testing by creating a file named skip-testing by running, in a different terminal,
I tried this even though it would seem that this would only apply for PTS execution in non-privileged, per-user mode. I also tried what would be more appropriate for PTS execution in system-wide mode with elevated privileges:
sudo touch /var/lib/phoronix-test-suite/skip-test
A similar file called halt-testing can be created to save the results of already completed tests and stop execution of the testing. However none of these had any effect. I finally resorted to killing a subprocess of the arrayfire test. This action removed PTS from its hung state, but the remaining tests were not performed. The output shown below was printed, which indicates that only compilebench and paraboil did not complete successfully, however many other remaining tests were not performed.
ArrayFire 3.7: pts/arrayfire-1.1.0 [Test: BLAS OpenCL] Test 96 of 172 Estimated Trial Run Count: 3 Estimated Test Run-Time: 1 Minute Estimated Time To Completion: 5 Hours, 14 Minutes [13:15 EDT] Started Run 1 @ 08:01:42 The test run did not produce a result. The following tests failed to properly run: - pts/compilebench-1.0.3: Test: Compile - pts/compilebench-1.0.3: Test: Initial Create - pts/compilebench-1.0.3: Test: Read Compiled Tree - pts/parboil-1.2.1: Test: OpenMP CUTCP Percentile Classification Of Current Benchmark Run DISK FS-Mark 1.F.1.S: 23rd 5.F.1.S.4.T: 11th 4.F.3.S.D.1.S: 20th 1.F.1.S.N.S.F: 79th PostMark D.T.P: 68th GRAPHICS ParaView Many Spheres - 1920 x 1080: 1st Wavelet Volume - 1920 x 1080: 2nd Wavelet Contour - 1920 x 1080: 2nd MEMORY RAMspeed SMP Add - Integer: 61st Copy - Integer: 51st Scale - Integer: 53rd Triad - Integer: 62nd Average - Integer: 65th Add - Floating Point: 62nd Copy - Floating Point: 77th Scale - Floating Point: 76th Triad - Floating Point: 64th Average - Floating Point: 72nd Stream Copy: 31st Scale: 33rd Triad: 33rd Add: 34th MBW Memory Copy - 128 MiB: 73rd Memory Copy - 512 MiB: 65th Memory Copy - 1024 MiB: 74th Memory Copy - 4096 MiB: 57th Memory Copy - 8192 MiB: 51st M.C.F.B.S - 128 MiB: 89th M.C.F.B.S - 512 MiB: 74th M.C.F.B.S - 1024 MiB: 79th M.C.F.B.S - 4096 MiB: 73rd M.C.F.B.S - 8192 MiB: 85th t-test1 1: 78th 2: 90th pmbench 1 - 100% Reads: 80th 2 - 100% Reads: 81st 4 - 100% Reads: 76th 8 - 100% Reads: 18th 1 - 100% Writes: 96th 2 - 100% Writes: 97th 4 - 100% Writes: 97th 8 - 100% Writes: 11th 1 - 8.R.2.W: 92nd 2 - 8.R.2.W: 93rd 4 - 8.R.2.W: 76th 8 - 8.R.2.W: 70th OS OSBench Create Files: 51st Create Threads: 56th Launch Programs: 76th Create Processes: 74th Memory Allocations: 58th PROCESSOR IPC_benchmark TCP Socket - 128: 38th TCP Socket - 256: 39th TCP Socket - 512: 38th TCP Socket - 1024: 42nd TCP Socket - 2048: 51st TCP Socket - 4096: 63rd Unnamed Pipe - 128: 51st Unnamed Pipe - 256: 54th Unnamed Pipe - 512: 49th Unnamed Pipe - 1024: 62nd Unnamed Pipe - 2048: 63rd Unnamed Pipe - 4096: 71st FIFO Named Pipe - 128: 16th FIFO Named Pipe - 256: 18th FIFO Named Pipe - 512: 14th FIFO Named Pipe - 1024: 12th FIFO Named Pipe - 2048: 31st FIFO Named Pipe - 4096: 48th U.U.D.S - 128: 45th U.U.D.S - 256: 46th U.U.D.S - 512: 44th U.U.D.S - 1024: 48th U.U.D.S - 2048: 49th U.U.D.S - 4096: 69th Rodinia OpenMP LavaMD: 12th OpenMP CFD Solver: 17th Algebraic Multi-Grid Benchmarkfcon 16th CacheBench Read: 87th Write: 87th R.M.W: 87th Zstd Compression 3 - Compression Speed: 18th 3 - D.S: 59th 8 - Compression Speed: 11th 8 - D.S: 50th 19 - Compression Speed: 41st 19 - D.S: 52nd 3, Long Mode - Compression Speed: 74th 3, Long Mode - D.S: 57th 8, Long Mode - Compression Speed: 14th 8, Long Mode - D.S: 49th 19, Long Mode - Compression Speed: 37th 19, Long Mode - D.S: 51st ArrayFire BLAS CPU: 53rd OpenBenchmarking.org Percentile Do you want to view the results in your web browser (Y/^[[B^ Would you like to upload the results to OpenBenchmarking.org (y/n): Would you like to upload the results to OpenBenchmarking.org (y/n): Would you like to upload the results to OpenBenchmarking.org (y/n): Would you like to upload the results to OpenBenchmarking.org (y/n): n ⏎ ╭─brook@g5 in ~ took 11h9m11s ╰─λ
Of the tests included in the newly created test suite, composed of the tests shown in the table, above, the tests compilebench, parboil, mt-dgemm, himeno, build-mplayer, build2, build-eigen, hackbench, openssl, node-web-tooling, cryptsetup, sqlite-speedtest, ctx-clock, sysbench, blender, pybench, git, and one of two options of arrayfire did not run.
I created a new test suite composed of just these tests to run again using the
build-test-suite command mentioned previously. As it turns out, some of the tests included in the first test suite, such as pyperformance, mutex, and stress-ng, did not run in either Solus or Garuda, possibly because some libraries, were not available, maybe due to the fact that only the integrated graphics adapter was in use. Also, of the tests that did run on Solus but not on Garuda (and also ran on both Solus and Garuda), only some of the specified test options were performed, for example, for the parboil test only one of the 10 available options were performed. So, when creating this second suite I chose the options that did run.
Based on the number of tests in which Garuda performed better than Solus, another distribution that is regarded as one that is relatively fast, the Garuda developers have indeed succeeded in their goal of optimizing the distribution for performance.
While this performance is desirable for certain use cases it is somewhat of a trade-off with other areas that might be a concern for some users. Read the review to learn more about these issues and Garuda's other characteristics in the review: Garudal Linux Review [KDE Dragonized (D460nized),210621].
The working directory displayed as part of the prompt created by Starship in Solus shows the actual location of the directory in the mounted Garuda partition's btrfs subvolume, namely /@/var/lib/phoronix-test-suite/test-suites/local.↩