クロスプラットフォームなベンチマークツールのPhoronix Test Suiteを試してみた

2022.02.04

様々なOSに対して、一貫した手法でベンチマークしたい場合、Phoronix Test Suite は有力な候補の一つです。

500近いベンチマーク、CPU・GPU・メモリなど様々な観点でグループ化した60近いベンチマークスイートが用意されており、 ベンチマークの計測、レポーティング、必要なパッケージのインストールといった機能が備わっています。

さらには、テスト結果をベンチマーク共有サイトにアップロードして共有することも可能です。

インストール

Phoronix Test Suiteはコマンドラインツールにしては珍しく、PHPで書かれています。 まずは関連パッケージをインストールします。

Ubuntu 22.04

Ubuntu 22.04 の場合、以下の通りです。

$ sudo apt update && sudo apt upgrade
$ sudo apt install php8.1-cli php8.1-common php8.1-bz2 php8.1-curl php8.1-sqlite3 php8.1-gd php8.1-xml

次に、公式サイトから最新のソースコードを取得し、インストールコマンドを実行します。

$ wget https://phoronix-test-suite.com/releases/phoronix-test-suite-10.8.3.tar.gz
$ tar zxf phoronix-test-suite-10.8.3.tar.gz
$ cd phoronix-test-suite/
$ sudo ./install-sh
-e
Phoronix Test Suite Installation Completed

Executable File: /usr/bin/phoronix-test-suite
Documentation: /usr/share/doc/phoronix-test-suite/
Phoronix Test Suite Files: /usr/share/phoronix-test-suite/

$ phoronix-test-suite version

...

Phoronix Test Suite v10.8.3

※ .deb パッケージも用意されていましたが、インストール時に依存関係のエラーが発生したため、apt で個別にインストールしました。

Ubuntu 20.04

Ubuntu 20.04 の場合、以下の通りです。

$ sudo apt update && sudo apt upgrade
$ sudo apt install php7.4-cli php7.4-common php7.4-bz2 php7.4-curl php7.4-sqlite3 php7.4-gd php7.4-xml

次に、公式サイトから最新のソースコードを取得し、インストールコマンドを実行します。

この手順は先程と同じため、割愛します。

ベンチマークの流れ

$ phoronix-test-suite benchmark 実行するベンチマーク を叩くと、ベンチマークに必要なパッケージのインストール、実行、レポートなどを半自動で実行します。

ベンチマーク結果の保存・共有やテストの詳細設定などは、ウィザード形式で答えます。

例えば openssl をベンチマークする場合は次の通りです。

$ phoronix-test-suite benchmark openssl

phoronix-test-suite benchmark openssl
...

Phoronix Test Suite v10.8.1

    Installed:     pts/openssl-3.0.1


OpenSSL 3.0:
    pts/openssl-3.0.1
    Processor Test Configuration
        1: RSA4096
        2: SHA256
        3: Test All Options
        ** Multiple items can be selected, delimit by a comma. **
        Algorithm: 2


System Information


  PROCESSOR:              ARMv8 Neoverse-N1
    Core Count:           64
    Cache Size:           32 MB

  GRAPHICS:
    Vulkan:               1.0.2

  MOTHERBOARD:            Amazon EC2 c6g.16xlarge
    BIOS Version:         1.0
    Chipset:              Amazon Device 0200
    Network:              Amazon Elastic

  MEMORY:                 128GB

  DISK:                   9GB Amazon Elastic Block Store
    File-System:          ext4
    Mount Options:        discard relatime rw
    Disk Scheduler:       NONE
    Disk Details:         Block Size: 4096

  OPERATING SYSTEM:       Ubuntu 20.04
    Kernel:               5.11.0-1022-aws (aarch64)
    Compiler:             GCC 9.3.0
    Security:             itlb_multihit: Not affected
                          + l1tf: Not affected
                          + mds: Not affected
                          + meltdown: Not affected
                          + spec_store_bypass: Mitigation of SSB disabled via prctl
                          + spectre_v1: Mitigation of __user pointer sanitization
                          + spectre_v2: Not affected
                          + srbds: Not affected
                          + tsx_async_abort: Not affected

    Would you like to save these test results (Y/n): y
    Enter a name for the result file: ...

ベンチマークの実行環境は System Information として表示されます。

複数回ベンチマーク実行後、レポートが表示されます。

レポートの最後に、ベンチマーク共有サイト(OpenBenchmarking.org)のサンプルを元に、主要プロセッサの結果や今回の結果のランキングなどがプロットされます。 This Result (89th Percentile): 42506805740 から、今回の結果は上位11%に位置していることがわかります。

テスト結果を保存すると、オプトインで OpenBenchmarking.org にベンチマーク結果を共有することもできます。

Would you like to upload the results to OpenBenchmarking.org (y/n):

ぜひ openbenchmarking.org で共有してください。

ベンチマークの種類

本ツールは、2022/02/03時点で

  • 483 テスト
  • 1983 テストバージョン
  • 59 スイート

のベンチマークが存在します。

どのベンチマークを利用すればよいか迷ってしまいますね。

本ツールを元にしたベンチマーク共有サイトの openbenchmarking.org では、次の3つが人気です。

  • Blender ($ phoronix-test-suite benchmark blender) # GPU
  • Timed Linux Kernel Compilation ($ phoronix-test-suite benchmark build-linux-kernel) # CPU
  • AOM AV1 ($ phoronix-test-suite benchmark aom-av1) # ビデオエンコード

約500あるベンチマークのなかから、おすすめは次のコマンドで確認できます。

$ phoronix-test-suite list-recommended-tests

Phoronix Test Suite v10.8.1
Recommended OpenBenchmarking.org Test Profiles


Processor Tests

pts/build-linux-kernel Timed Linux Kernel Compilation
pts/compress-7zip      7-Zip Compression
pts/openssl            OpenSSL
pts/encode-flac        FLAC Audio Encoding
pts/npb                NAS Parallel Benchmarks
pts/hmmer              Timed HMMer Search
pts/gcrypt             Gcrypt Library
pts/botan              Botan
pts/gmpbench           GNU GMP GMPbench
pts/mrbayes            Timed MrBayes Analysis

System Tests

pts/apache             Apache HTTP Server
pts/pgbench            PostgreSQL pgbench
pts/nginx              nginx
pts/blender            Blender
pts/systemd-boot-total Systemd Total Boot Time
pts/stress-ng          Stress-NG
pts/viennacl           ViennaCL
pts/tjbench            libjpeg-turbo tjbench
system/selenium        Selenium
system/gimp            GIMP

Graphics Tests

pts/xonotic         Xonotic
pts/csgo            Counter-Strike: Global Offensive
pts/glmark2         GLmark2
pts/unvanquished    Unvanquished
pts/dota2           Dota 2
pts/shoc            SHOC Scalable HeterOgeneous Computing
pts/etlegacy        ET: Legacy
pts/insurgency      Insurgency
pts/civilization-vi Civilization VI
pts/paraview        ParaView

Disk Tests

pts/fio     Flexible IO Tester
pts/fs-mark FS-Mark

Memory Tests

pts/stream         Stream
pts/intel-mlc      Intel Memory Latency Checker
pts/stream-dynamic Stream-Dynamic

OS Tests

pts/sockperf Sockperf

各ベンチマークは

  • Processor
  • System
  • Graphics
  • Disk
  • Memory
  • OS

など、分類されています。

利用可能なテスト一覧は次のコマンドで確認できます。

$ phoronix-test-suite list-available-tests


Phoronix Test Suite v10.8.1
Available Tests

pts/ai-benchmark            AI Benchmark Alpha                                System
pts/aircrack-ng             Aircrack-ng                                       Processor
pts/amg                     Algebraic Multi-Grid Benchmark                    Processor
pts/aobench                 AOBench                                           Processor
pts/aom-av1                 AOM AV1                                           Processor
pts/apache                  Apache HTTP Server                                System
pts/apache-siege            Apache Siege                                      System
pts/appleseed               Appleseed                                         System
pts/arrayfire               ArrayFire                                         Processor

...

git/aom-av1                 AOM AV1                                           Processor
git/dav1d                   dav1d                                             Processor
git/rav1e                   rav1e                                             Processor
git/svt-av1                 SVT-AV1                                           Processor
git/svt-hevc                SVT-HEVC                                          Processor
git/svt-vp9                 SVT-VP9                                           Processor
git/vpxenc                  VP9 libvpx Encoding                               Processor
git/x265                    x265                                              Processor

テストをグルーピングしたテストスイートの一覧は次のコマンドで確認できます。

$ phoronix-test-suite list-suites


Phoronix Test Suite v10.8.1
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
...

最後に

Phoronix Test Suiteは 2008年から現在に至るまで活発に開発されている枯れたツールで、機能も豊富です。

クラスプラットフォームに様々なベンチマークを再現性のある一環したアプローチでベンチマークしたい場合、有力なツールの一つと思います。

スクリプトを組むことで

  1. AWS EC2スポットインスタンスを起動
  2. Phoronix Test Suiteのインストール
  3. テストスイートの実行
  4. テスト結果をアップロード
  5. スポットインスタンスをターミネート

といった使い方も可能です。

ぜひ、ご活用ください。

参考