最近のサーバーではネットワークやストレージの性能が最重要視され、CPUやメモリの性能についてはあまり重視されない傾向がある。とはいえ、CPUやメモリの処理能力が重要となる場合もまだ一定数ある。今回はそのような用途に向け、CPUやメモリ、システム全体の処理能力を調査するためのベンチマークツールを紹介する。
CPUの処理能力は同じマイクロアーキテクチャのものであれば動作周波数でだいたいの比較ができるが、これが異なる場合は動作周波数による単純な比較はできない。また、CPUの実装によっては整数演算は高速だが浮動小数点演算は遅い、といった違いが発生する場合もある。そのため、サーバーのCPUやメモリの処理能力を分かりやすい形で比較するためのベンチマークテストツールがいくつか公開されている。
今回はこのようなCPUやメモリ関連のベンチマークツールのうち、UNIX/Linux分野で広く使われている「UnixBench」および「SysBench」、そしてマルチプラットフォーム対応の「Geekbench」というツールを紹介する。また、さまざまなベンチマークテストを簡単に実行できる総合ベンチマークテストツール「Phoronix Test Suite」についても紹介する。
広く使われている総合ベンチマークツール「UnixBench」
LinuxやUNIX系システムでのベンチマークに広く使われているベンチマークツールの1つにUnixBenchがある。UnixBenchは「Byte」という米国のコンピュータ雑誌によって配布されたベンチマークテストツールを原型としており、さまざまな開発者の手を経て現在はGoogle Code上での配布が行われている。
UnixBenchはその名称からも分かるとおりUNIX系システムの性能を調査するためのツールで、CPUやRAM、ディスクなどを対象とする複数のテストから構成されている(表1)。
テスト名 | 説明 |
---|---|
Dhrystone | 主に整数演算処理の性能を測定する古典的ベンチマークテスト |
Whetstone | 主に浮動小数点演算処理の性能を測定する古典的ベンチマークテスト |
Execl Throughput | execl関数によるプロセス作成を行いその性能を測定する |
File Copy | ファイルのコピー速度を測定する |
Pipe Throughput | プロセス間通信で使われるパイプのスループットを測定する |
Pipe-based Context Switching | プロセス間通信で使われるパイプによるコンテキストスイッチ性能を測定する |
Process Creation | 子プロセスの生成速度を測定する |
Shell Scripts | シェルスクリプトの実行性能を測定する |
System Call Overhead | システムコール実行時のオーバーヘッドを測定する |
Graphical Tests | 2D/3Dグラフィック性能を測定する |
このうちCPUの性能を単純に測定できるのがDhrystoneおよびWhetstoneテストで、それぞれ整数演算および浮動小数点演算の性能を測定するものとなっている。また、そのほかのベンチマークテストについては一般的なアプリケーションにおける処理を模したものになっており、システム全体の処理能力を数値化するものになっている。
UnixBenchのインストールと実行
UnixBenchのバイナリは公開されていないため、テストを実行するには自分でコンパイルを行う必要がある。コンパイルにはmakeやGCCなどのコンパイルビルドツールに加え、PerlのTime::HiResモジュールが必要だ。このモジュールはRed Hat Enterprise Linux(RHEL)互換環境の場合、「perl-Time-HiRes」パッケージに含まれているので、これをインストールすれば良い。
# yum install perl-Time-HiRes
コンパイル環境が整ったら、ダウンロードページからソースコードをダウンロードして適当なディレクトリに展開する。続いて含まれる「Run」スクリプトを実行するとソースコードのコンパイルが行われ、完了するとそのままベンチマークテストが開始される。
$ wget https://byte-unixbench.googlecode.com/files/UnixBench5.1.3.tgz
$ tar xvzf UnixBench5.1.3.tgz
$ cd UnixBench
$ ./Run
なお、複数のCPUコアが利用できる環境の場合、デフォルトでは1コアのみを使ったテストとすべてのコアを使ったテストが順に実行され、それぞれの結果が表示される。ベンチマーク結果は次のように実際に測定された測定値と、「基準値(BASELINE)」をベースとした「INDEX」という2つの指標で表示される。
Benchmark Run: 火 9月 03 2013 19:06:39 - 19:34:57
8 CPUs in system; running 1 parallel copy of testsDhrystone 2 using register variables 28266174.8 lps (10.0 s, 7 samples)
Double-Precision Whetstone 3453.5 MWIPS (10.0 s, 7 samples)
Execl Throughput 1983.7 lps (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 778108.1 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 209168.9 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 1821783.7 KBps (30.0 s, 2 samples)
Pipe Throughput 1435975.0 lps (10.0 s, 7 samples)
Pipe-based Context Switching 139263.8 lps (10.0 s, 7 samples)
Process Creation 8869.6 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 3587.6 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 2748.4 lpm (60.0 s, 2 samples)
System Call Overhead 2012557.4 lps (10.0 s, 7 samples)System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 28266174.8 2422.1
Double-Precision Whetstone 55.0 3453.5 627.9
Execl Throughput 43.0 1983.7 461.3
File Copy 1024 bufsize 2000 maxblocks 3960.0 778108.1 1964.9
File Copy 256 bufsize 500 maxblocks 1655.0 209168.9 1263.9
File Copy 4096 bufsize 8000 maxblocks 5800.0 1821783.7 3141.0
Pipe Throughput 12440.0 1435975.0 1154.3
Pipe-based Context Switching 4000.0 139263.8 348.2
Process Creation 126.0 8869.6 703.9
Shell Scripts (1 concurrent) 42.4 3587.6 846.1
Shell Scripts (8 concurrent) 6.0 2748.4 4580.7
System Call Overhead 15000.0 2012557.4 1341.7
========
System Benchmarks Index Score 1189.8————————————————————————
Benchmark Run: 火 9月 03 2013 19:34:57 - 20:03:31
8 CPUs in system; running 8 parallel copies of testsDhrystone 2 using register variables 120382149.3 lps (10.0 s, 7 samples)
Double-Precision Whetstone 20131.4 MWIPS (10.4 s, 7 samples)
Execl Throughput 19576.4 lps (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 740641.2 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 191338.5 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 1997163.2 KBps (30.0 s, 2 samples)
Pipe Throughput 5978166.2 lps (10.0 s, 7 samples)
Pipe-based Context Switching 1270613.0 lps (10.0 s, 7 samples)
Process Creation 65958.7 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 23816.1 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 3149.8 lpm (60.1 s, 2 samples)
System Call Overhead 8150789.0 lps (10.0 s, 7 samples)System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 120382149.3 10315.5
Double-Precision Whetstone 55.0 20131.4 3660.3
Execl Throughput 43.0 19576.4 4552.6
File Copy 1024 bufsize 2000 maxblocks 3960.0 740641.2 1870.3
File Copy 256 bufsize 500 maxblocks 1655.0 191338.5 1156.1
File Copy 4096 bufsize 8000 maxblocks 5800.0 1997163.2 3443.4
Pipe Throughput 12440.0 5978166.2 4805.6
Pipe-based Context Switching 4000.0 1270613.0 3176.5
Process Creation 126.0 65958.7 5234.8
Shell Scripts (1 concurrent) 42.4 23816.1 5617.0
Shell Scripts (8 concurrent) 6.0 3149.8 5249.6
System Call Overhead 15000.0 8150789.0 5433.9
========
System Benchmarks Index Score 3992.2
それぞれのスコアやINDEX値については単体で意味のあるものではないが、複数のマシンを比較する際には有用だ。
マルチプラットフォーム対応の総合ベンチマークツール「Geekbench」
GeekbenchはPrimate Labsが開発するマルチプラットフォーム対応の総合ベンチマークツールだ。商用だが、WindowsおよびMac OS X、Linux、そしてAndroidやiOSでも利用できるのが特徴だ。また、Geekbench BrowserというWebサイトに結果をアップロードでき、ベンチマーク結果を容易に比較できる。ただし、無料版ではLinux環境では32ビット版しか利用できないなど、一部機能に制限がある。
また、Geekbenchは現在バージョン2系とバージョン3系がリリースされているが、環境によってはバージョン3系は実行できない。Geekbench 3系はglibc 2.14もしくは2.15を必要とするが、Linuxディストリビューションによってはこれよりも古いバージョンのglibcを採用しているためだ。たとえば、RHEL 6系で提供されているglibcのバージョンは2.12であるため、RHEL 6およびその互換ディストリビューションでは現状Geekbench 3を実行できない。そのため、以下ではGeekbench 2系について説明を行っている。
Geekbenchのダウンロードとインストール
GeekbenchのLinux版はPrimate Labsのダウンロードページからダウンロードできる。提供されているのは32ビットおよび64ビット版のバイナリで、tar+gzip形式でアーカイブ化されている。ダウンロードしたアーカイブを適当なディレクトリに展開するとdistというディレクトリが作成され、その中の「Geekbench-<バージョン番号>-Linux」というディレクトリ内にGeekbenchのバイナリが格納される。
$ tar xvzf Geekbench-2.4.3-Linux.tar.gz
dist/Geekbench-2.4.3-Linux/
dist/Geekbench-2.4.3-Linux/geekbench_x86_32
dist/Geekbench-2.4.3-Linux/geekbench_x86_64
dist/Geekbench-2.4.3-Linux/geekbench
dist/Geekbench-2.4.3-Linux/geekbench.plar
ここには32ビット版の「geekbench_x86_32」と64ビット版の「geekbench_x86_64」という2つのバイナリがあるが、64ビット版は有料のユーザー登録が必要だ。32ビット版については、登録をせずとも「tryout mode」で実行できる。この場合一部制限はあるが、基本的なベンチマークテストはすべて実行可能だ。
なお、64ビット環境で32ビット版のGeekbenchを実行する場合、次のようなメッセージが表示されて実行できない場合がある。
$ cd dist/Geekbench-2.4.3-Linux/
$ ./geekbench
-bash: ./geekbench: /lib/ld-linux.so.2: bad ELF interpreter: そのようなファイル やディレクトリはありません
この場合、glibcやlibstdc++といったライブラリの32ビット版が不足している可能性がある。RHELもしくはその互換環境であれば、次のようにglibc.i686およびlibstdc++.i686パッケージをインストールすれば良い。
# yum install glibc.i686 libstdc++.i686
また、DebianやUbuntu環境の場合はia32-libsパッケージをインストールすれば良い。
# apt-get install ia32-libs
Geekbenchの実行と結果の確認
ライセンス登録無しでGeekbenchを実行すると、前述のとおりベンチマークテストは「tryout mode」で実行される。tryout modeではベンチマーク結果が必ずprimatelabsのサーバーに送信され、Webブラウザ経由でそのサーバーにアクセスして結果を確認するという形になる。
$ ./geekbench
Geekbench 2.4.3 Tryout : http://www.primatelabs.com/geekbench/Geekbench is in tryout mode.
:
:
Uploading results to the Geekbench Browser. This could take a minute or two
depending on the speed of your internet connection.Upload succeeded. Visit the following link and view your results online:
http://browser.primatelabs.com/geekbench2/2282442
Visit the following link and add this result to your profile:
http://browser.primatelabs.com/geekbench2/claim/2282442?key=598334
ベンチマークテスト結果は、表示されるURL(この例の場合、「http://browser.primatelabs.com/geekbench2/2282442」)にアクセスすることで確認できる(図1)。

ベンチマーク結果ではシステム情報とともに整数/浮動小数点/メモリ/ストリーム処理の総合スコアが表示され、またベンチマークテストごとの結果もグラフで表示される。
データベースの性能測定にも対応する「SysBench」
続いて紹介するSysBenchも、CPUやメモリなど複数の項目についてのベンチマークテストを実行できる総合ベンチマークテストツールだ。CPUやメモリ、ストレージのテストだけでなく、データベースのトランザクション処理に関するベンチマークテスト機能も備えているのが特徴となる。
SysBenchのインストールと基本的なテストの実行
SysBenchはDebianやUbuntuではsysbenchパッケージとしてバイナリパッケージが提供されている。また、RHELやその互換環境では、EPELからsysbenchパッケージが提供されている。
SysBenchでは、表2の6種類のベンチマークテストが提供されている。
テスト名 | 説明 |
---|---|
fileio | ファイルI/O性能に関するテスト |
cpu | CPU性能に関するテスト |
memory | メモリ性能に関するテスト |
threads | スレッド関連の処理性能に関するテスト |
mutex | Mutex関連の処理に関するテスト |
oltp | データベースのトランザクション性能に関するテスト |
たとえば、cpuテストを行うには次のように「-test=cpu run」オプション付きでsysbenchを実行する。
$ sysbench -test=cpu run
sysbench 0.4.12: multi-threaded system evaluation benchmarkRunning the test with following options:
Number of threads: 1Doing CPU performance benchmark
Threads started!
Done.Maximum prime number checked in CPU test: 10000
Test execution summary:
total time: 8.7669s
total number of events: 10000
total time taken by event execution: 8.7660
per-request statistics:
min: 0.87ms
avg: 0.88ms
max: 1.79ms
approx. 95 percentile: 0.88msThreads fairness:
events (avg/stddev): 10000.0000/0.00
execution time (avg/stddev): 8.7660/0.00
SysBenchのcpuテストでは、指定した最大探索数(デフォルトでは10000)以下の素数を数えるという処理を行い、それにかかった時間を測定するという処理を行っている。この例の場合、8.7669秒かかっているという結果となっているが、この時間が短いほどCPUの処理能力が高いということになる。
なお、SysBenchでは素数を見つけるアルゴリズムとして以下のような非常に単純なものを採用している。
for(c=3; c < max_prime; c++)
{
t = sqrt(c);
for(l = 2; l <= t; l++)
if (c % l == 0)
break;
if (l > t )
n++;
}
ここで、max_prime変数は指定した最大探索数、nは発見した素数の数を格納する変数だ。ここから分かるとおり、このベンチマークテストでは平方根演算および剰余演算、整数演算とその比較演算の性能が結果に影響するものになっている。
また、メモリのベンチマークを行うには「-test=memory run」オプション付きでsysbenchを実行すれば良い。
$ sysbench -test=memory run
sysbench 0.4.12: multi-threaded system evaluation benchmarkRunning the test with following options:
Number of threads: 1Doing memory operations speed test
Memory block size: 1KMemory transfer size: 102400M
Memory operations type: write
Memory scope type: global
Threads started!
Done.Operations performed: 104857600 (2268773.95 ops/sec)
102400.00 MB transferred (2215.60 MB/sec)
Test execution summary:
total time: 46.2177s
total number of events: 104857600
total time taken by event execution: 39.1137
per-request statistics:
min: 0.00ms
avg: 0.00ms
max: 0.10ms
approx. 95 percentile: 0.00msThreads fairness:
events (avg/stddev): 104857600.0000/0.00
execution time (avg/stddev): 39.1137/0.00
メモリのベンチマークテストでは、メモリに対する連続した書き込みおよび読み出しを行ってそれにかかった時間を測定している。この例の場合、合計100Gの書き込みが行われ、それにかかった時間は46.2177秒という結果となっている。なお、この例では書き込みテストを行っているが、「-memory-oper=read」オプションを付けて実行することで読み込みテストを行うことが可能だ。また、デフォルトでは1KBごとに書き込みを実行しているが、これは-memory-block-sizeオプションで変更できる。また、書き込み/読み出しを行う合計サイズは-memory-total-sizeオプションで変更可能だ。
「-test=fileio」オプションでは、ファイルの読み書きに関するベンチマークを行える。この場合、「-file=test-mode」オプションでテストモードを指定する(表3)。
モード | 説明 |
---|---|
seqwr | シーケンシャル書き込み |
seqrewr | シーケンシャル読み書き |
seqrd | シーケンシャル読み出し |
rndrd | ランダム読み出し |
rndwr | ランダム書き込み |
rndrw | ランダム読み書き |
たとえば、シーケンシャル書き込みの性能を測定したいなら次のように「-test=fileio -file-test-mode=seqwr」オプションを指定する。
$ sysbench -test=fileio -file-test-mode=seqwr run
sysbench 0.4.12: multi-threaded system evaluation benchmarkRunning the test with following options:
Number of threads: 1Extra file open flags: 0
128 files, 16Mb each
2Gb total file size
Block size 16Kb
Periodic FSYNC enabled, calling fsync() each 100 requests.
Calling fsync() at the end of test, Enabled.
Using synchronous I/O mode
Doing sequential write (creation) test
Threads started!
Done.Operations performed: 0 Read, 131072 Write, 128 Other = 131200 Total
Read 0b Written 2Gb Total transferred 2Gb (17.295Mb/sec)
1106.87 Requests/sec executedTest execution summary:
total time: 118.4163s
total number of events: 131072
total time taken by event execution: 93.2939
per-request statistics:
min: 0.01ms
avg: 0.71ms
max: 5020.22ms
approx. 95 percentile: 0.02msThreads fairness:
events (avg/stddev): 131072.0000/0.00
execution time (avg/stddev): 93.2939/0.00
この例の場合、16MBのファイルを128個、合計2GBの書き込みを行い、その処理時間は118.4163秒となっている(出力の単位は「b」となっているが、実際の処理単位はビットではなくバイトである点に注意)。また、各ファイルのサイズは「-file-total-size」オプションで、出力するファイル総数は「-file-num」オプションで変更可能だ。
なお、fileioテストの実行後にはベンチマークを実行したディレクトリ内に作業ファイルが残されるが、これらは「sysbench -test=fileio cleanup」コマンドを実行することで削除できる。
$ sysbench -test=fileio cleanup
sysbench 0.4.12: multi-threaded system evaluation benchmarkRemoving test files…
SysBenchでmysqlのベンチマーク
sysbecnにはデータベースのトランザクション性能を測定する、oltpというテストも用意されている。このテストではMySQLおよびPostgreSQLを対象に、データベースへの読み書きを行ってその性能を測定できる。
oltpテストを行うには、あらかじめデータベースにベンチマーク用のユーザーとデータベースを作成しておく必要がある。使用するユーザー名やデータベース名はコマンドラインオプションで変更できるが、デフォルトではともに「sbtest」になっている。たとえばMySQLの場合、以下のようにこのユーザーとデータベースを作成しておけば良い。
$ mysql -u root -p
:
:
mysql> CREATE DATABASE sbtest;
Query OK, 1 row affected (0.00 sec)mysql> CREATE USER sbtest;
Query OK, 0 rows affected (0.00 sec)mysql> GRANT ALL PRIVILEGES ON sbtest.* TO ‘sbtest’@'localhost’ IDENTIFIED BY ‘sbtest’;
Query OK, 0 rows affected (0.00 sec)mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
SysBenchでoltpテストを実行する際には、「-db-driver=」オプションで対象のデータベースを指定する。たとえばMySQLを利用する場合、「-db-driver=mysql」を指定すればよい。また、接続に使用するパスワードはMySQLの場合「-mysql-password=」オプション、PostgreSQLの場合「-pgsql-password=」オプションで指定する。
また、ベンチマークテストの実行前には「sysbench prepare」コマンドを実行してテーブルなどの作成を行っておく必要がある。たとえばMySQLでsbtestユーザーのパスワードが「sbtest」の場合、次のようにする。
$ sysbench -test=oltp -db-driver=mysql -mysql-password=sbtest prepare
続いて、「sysbench run」コマンドを実行するとベンチマークテストが実行される。
$ sysbench -test=oltp -db-driver=mysql -mysql-password=sbtest run
sysbench 0.4.12: multi-threaded system evaluation benchmarkRunning the test with following options:
Number of threads: 1Doing OLTP test.
Running mixed OLTP test
Using Special distribution (12 iterations, 1 pct of values are returned in 75 pct cases)
Using “BEGIN” for starting transactions
Using auto_inc on the id column
Maximum number of requests for OLTP test is limited to 10000
Threads started!
Done.OLTP test statistics:
queries performed:
read: 140000
write: 50000
other: 20000
total: 210000
transactions: 10000 (25.72 per sec.)
deadlocks: 0 (0.00 per sec.)
read/write requests: 190000 (488.63 per sec.)
other operations: 20000 (51.43 per sec.)Test execution summary:
total time: 388.8436s
total number of events: 10000
total time taken by event execution: 388.7773
per-request statistics:
min: 28.61ms
avg: 38.88ms
max: 178.72ms
approx. 95 percentile: 44.83msThreads fairness:
events (avg/stddev): 10000.0000/0.00
execution time (avg/stddev): 388.7773/0.00
ベンチマークテスト結果は、一定量のトランザクション処理をどれだけの時間で実行できたかという形で表示される。この例の場合、すべての処理が完了するまでには388.8436秒がかかっており、1リクエストの処理時間は平均38.88ミリ秒、また毎秒当たり25.72トランザクションが実行できたという結果となった。
総合ベンチマークツール「Phoronix Test Suite」
ここまでで見てきたとおり、ベンチマークテストツールはツールごとにさまざまな特徴があり、またその出力形式も異なる。そのため、複数のベンチマークテストを複数のマシンで実行し、それらの結果を比較したいという場合、手動での集計が必要となる。このような集計作業を自動的に行ってくれるのが、最後に紹介するPhoronix Test Suiteというツールだ。
Phoronix Test Suiteは、Linuxのハードウェアレビューや関連ニュースを提供しているニュースサイト「Phoronix」(Phoronix Media)が開発・公開しているベンチマークツールで、さまざまな分野、数十種類にもおよぶベンチマークツールをPhoronix Test Suite経由でインストールしたり実行できる。さらに、テスト結果の集計機能も備えており、複数のテスト結果をグラフ化してHTML形式のレポートを作成・出力することができる。
Phoronix Test Suiteのインストールと基本的な使い方
Phoronix Test SuiteはWebサイトのダウンロードページからダウンロードできる。また、Debianではcontribリポジトリで「phoronix-test-suite」という名称でパッケージが配布されているほか、RHELやその互換環境ではEPELからphoronix-test-suiteパッケージが提供されているので、これらを利用すると良いだろう。
Phoronix Test Suiteのインストール後、初回起動時には使用許諾への同意が求められる。また、匿名での統計レポートの送信(anonymous usage / statistics reporting)や、システム統計レポートの送信(anonymous statistical reporting of installed software / hardware)を行うかどうかもここで問われるので、確認してY(Yes)もしくはn(No)で回答しておこう。
$ phoronix-test-suite
Phoronix Test Suite v3.8.0
User AgreementDo you agree to these terms and wish to proceed (Y/n):
Enable anonymous usage / statistics reporting (Y/n): Y
Enable anonymous statistical reporting of installed software / hardware (Y/n): n
Phoronix Test Suiteでは、個別のベンチマークテストに加え、いくつかのベンチマークテストをセットにした「Test Suite」が用意されている。実行可能なテスト一覧は、「list-available-tests」引数付きでphoronix-test-suiteコマンドを実行することで確認できる。
$ phoronix-test-suite list-available-tests
Phoronix Test Suite v3.8.0
Available Testspts/aio-stress - AIO-Stress Disk
pts/apache - Apache Benchmark System
pts/apitrace - APITrace Graphics
pts/battery-power-usage - Battery Power Usage System
pts/blake2 - BLAKE2 Processor
pts/blogbench - BlogBench Disk
pts/bork - Bork File Encrypter Processor
pts/botan - Botan Processor
pts/build-imagemagick - Timed ImageMagick Compilation Processor
pts/build-linux-kernel - Timed Linux Kernel Compilation Processor
pts/build-mplayer - Timed MPlayer Compilation Processor
pts/build-php - Timed PHP Compilation Processor
pts/bullet - Bullet Physics Engine Processor
pts/byte - BYTE Unix Benchmark Processor
pts/c-ray - C-Ray Processor
pts/cachebench - CacheBench Processor
pts/cairo-demos - Cairo Performance Demos Graphics
pts/cairo-perf-trace - cairo-perf-trace Graphics
pts/clomp - CLOMP Processor
pts/compilebench - Compile Bench Disk
pts/compress-7zip - 7-Zip Compression Processor
pts/compress-gzip - Gzip Compression Processor
pts/compress-lzma - LZMA Compression Processor
pts/compress-pbzip2 - Parallel BZIP2 Compression Processor
pts/corebreach - CoreBreach Graphics
pts/crafty - Crafty Processor
pts/cyclictest - Cyclictest System
pts/dbench - Dbench Disk
pts/dcraw - dcraw Processor
pts/dolfyn - Dolfyn Processor
pts/doom3 - Doom 3 Graphics
pts/encode-ape - Monkey Audio Encoding
pts/encode-flac - FLAC Audio Encoding
pts/encode-mp3 - LAME MP3 Encoding
pts/encode-ogg - Ogg Encoding
pts/encode-opus - Opus Codec Encoding
pts/encode-wavpack - WavPack Audio Encoding
pts/espeak - eSpeak Speech Engine Processor
pts/et - Enemy Territory Graphics
pts/etqw - ET: Quake Wars Graphics
pts/etqw-demo - ET: Quake Wars Demo Graphics
pts/etqw-demo-iqc - ET: Quake Wars Image Quality System
pts/etxreal - ETXreaL Graphics
pts/ffmpeg - FFmpeg Processor
pts/ffte - FFTE Processor
pts/fhourstones - Fhourstones Processor
pts/fio - Flexible IO Tester Disk
pts/fs-mark - FS-Mark Disk
pts/gcrypt - Gcrypt Library Processor
pts/glmark2 - GLmark2 Graphics
pts/gluxmark - gluxMark Graphics
pts/gmpbench - GMPbench Processor
pts/gnupg - GnuPG Processor
pts/gpu-residency - GPU Residency Processor
pts/gputest - GpuTest Graphics
pts/graphics-magick - GraphicsMagick Processor
pts/gtkperf - GtkPerf Graphics
pts/hdparm-read - hdparm Timed Disk Reads Disk
pts/himeno - Himeno Benchmark Processor
pts/hmmer - Timed HMMer Search Processor
pts/idle - Timed Idle System
pts/idle-power-usage - Idle Power Usage System
pts/interbench - Interbench System
pts/iozone - IOzone Disk
pts/j2dbench - Java 2D Microbenchmark Graphics
pts/java-scimark2 - Java SciMark Processor
pts/jgfxbat - Java Graphics Basic Acceptance Test Processor
pts/john-the-ripper - John The Ripper Processor
pts/juliagpu - JuliaGPU System
pts/jxrendermark - JXRenderMark Graphics
pts/lammps - LAMMPS Molecular Dynamics Simulator Processor
pts/lightsmark - Lightsmark Graphics
pts/luxmark - LuxMark System
pts/mafft - Timed MAFFT Alignment Processor
pts/mandelbulbgpu - MandelbulbGPU System
pts/mandelgpu - MandelGPU System
pts/mencoder - Mencoder Processor
pts/minion - Minion Processor
pts/mrbayes - Timed MrBayes Analysis Processor
pts/n-queens - N-Queens Processor
pts/nero2d - Open FMM Nero2D Processor
pts/network-loopback - Loopback TCP Network Performance Network
pts/nexuiz - Nexuiz Graphics
pts/nexuiz-iqc - Nexuiz Image Quality System
pts/nginx - NGINX Benchmark System
pts/noise-level - NoiseLevel Processor
pts/npb - NAS Parallel Benchmarks Processor
pts/open-porous-media - Open Porous Media Processor
pts/openarena - OpenArena Graphics
pts/openssl - OpenSSL Processor
pts/padman - World of Padman Graphics
pts/parboil - Parboil Processor
pts/pgbench - PostgreSQL pgbench System
pts/phpbench - PHPBench System
pts/postmark - PostMark Disk
pts/povray - POV-Ray Processor
pts/powertop-wakeups - Powertop Wakeups Processor
pts/ppracer - Planet Penguin Racer Graphics
pts/prey - Prey Graphics
pts/primesieve - Primesieve Processor
pts/pybench - PyBench System
pts/pyopencl - PyOpenCL System
pts/qgears2 - QGears2 Graphics
pts/quake4 - Quake 4 Graphics
pts/qvdpautest - qVDPAUtest Graphics
pts/ramspeed - RAMspeed SMP Memory
pts/reaction - Reaction Quake 3 Graphics
pts/render-bench - Render Bench Graphics
pts/rodinia - Rodinia Processor
pts/sample-program - Sample Pi Program Processor
pts/scimark2 - SciMark Processor
pts/smallpt - Smallpt Processor
pts/smallpt-gpu - SmallPT GPU System
pts/smokin-guns - Smokin Guns Graphics
pts/specviewperf10 - SPECViewPerf 10 Graphics
pts/specviewperf9 - SPECViewPerf 9 Graphics
pts/sqlite - SQLite Disk
pts/stream - Stream Memory
pts/stresscpu2 - StressCPU2 Stress-Test Processor
pts/sudokut - Sudokut Processor
pts/sunflow - Sunflow Rendering System System
pts/supertuxkart - SuperTuxKart Graphics
pts/system-decompress-bzip2 - System BZIP2 Decompression Processor
pts/system-decompress-gzip - System GZIP Decompression Processor
pts/system-decompress-tiff - System Libtiff Decompression Processor
pts/system-decompress-xz - System XZ Decompression Processor
pts/system-decompress-zlib - System ZLIB Decompression Processor
pts/system-libjpeg - System JPEG Library Decode Processor
pts/system-libxml2 - System Libxml2 Parsing Processor
pts/systemd-boot-kernel - Systemd Kernel Boot Time Processor
pts/systemd-boot-total - Systemd Total Boot Time Processor
pts/systemd-boot-userspace - Systemd Userspace Boot Time Processor
pts/systester - SysTester Processor
pts/tachyon - Tachyon Processor
pts/tf2 - Team Fortress 2 Graphics
pts/tiobench - Threaded I/O Tester Disk
pts/tremulous - Tremulous Graphics
pts/trislam - Triangle Slammer Graphics
pts/tscp - TSCP Processor
pts/ttsiod-renderer - TTSIOD 3D Renderer Processor
pts/unigine-heaven - Unigine Heaven Graphics
pts/unigine-sanctuary - Unigine Sanctuary Graphics
pts/unigine-tropics - Unigine Tropics Graphics
pts/unigine-valley - Unigine Valley Graphics
pts/unpack-linux - Unpacking The Linux Kernel Disk
pts/unvanquished - Unvanquished Graphics
pts/urbanterror - Urban Terror Graphics
pts/ut2004-demo - Unreal Tournament 2004 Demo Graphics
pts/vdrift - VDrift Graphics
pts/video-cpu-usage - 1080p H.264 Video Playback Graphics
pts/vpxenc - VP8 libvpx Encoding Processor
pts/warsow - Warsow Graphics
pts/x11perf - x11perf Graphics
pts/x264 - x264 Processor
pts/xonotic - Xonotic Graphics
pts/xplane9 - X-Plane Graphics
pts/xplane9-iqc - X-Plane Image Quality System
Phoronix Test Suiteで用意されているベンチマークテストでは、前回記事で紹介しているfs-markやhdparm、tiobenchなどのベンチマークツールだけでなく、音声のMP3でのエンコーディングを行ってその速度を測定したり、gzipなどでファイルを圧縮してその速度を測る、といったベンチマークテストも用意されている。また、Test Suitesの一覧は「list-available-suites」引数付きでphoronix-test-suiteコマンドを実行することで確認できる。
$ phoronix-test-suite list-available-suites
Phoronix Test Suite v3.8.0
Available Suitespts/chess - Chess Test Suite Processor
pts/compilation - Timed Code Compilation Processor
pts/compiler - Compiler Processor
pts/compression - Timed File Compression Processor
pts/computational - Computational Test Suite System
pts/computational-biology - Computational Biology Test Suite Processor
pts/cpu - CPU / Processor Suite Processor
pts/cryptography - Cryptography Processor
pts/daily-kernel-tracker - Daily Kernel Tracker System
pts/daily-system-tracker - Daily System Tracker System
pts/database - Database Test Suite System
pts/desktop-graphics - Desktop Graphics System
pts/disk - Disk Test Suite Disk
pts/encoding - Encoding System
pts/favorites - Favorites System
* pts/gaming - Gaming System
pts/gaming-closed - Closed-Source Gaming System
* pts/gaming-free - Free Software Gaming System
pts/gui-toolkits - GUI Toolkits Graphics
pts/ioquake3-games - Games Using The ioquake3 Engine System
pts/iqc - Image Quality Comparison Suite Graphics
pts/java - Java System
pts/java-opengl - Java OpenGL System
pts/kernel - Kernel System
pts/linux-system - Linux System System
pts/memory - Memory Test Suite Memory
pts/mesa - Mesa Test Suite Graphics
pts/motherboard - Motherboard System
pts/multicore - Multi-Core Processor
pts/netbook - Netbook Test Suite System
pts/network - Networking Test Suite Network
pts/nevada - OpenSolaris Nevada Test Suite System
pts/opencl - OpenCL System
pts/opengl-demos - OpenGL Demos Test Suite System
pts/opengl-workstation - OpenGL Workstation Test Suite System
pts/pts-desktop-live - PTS Desktop Live System
pts/ray-tracing - Ray-Tracing Test Suite System
pts/server - Server Motherboard System
pts/unigine - Unigine Test Suite Graphics
* pts/universe - Universe Test Suite System
pts/universe-cli - Universe CLI Test Suite System
* pts/universe-x - Universe X Test Suite System
pts/video-encoding - Video Encoding System
pts/workstation - Workstation System
pts/workstation-graphics - Workstation Graphics Graphics
pts/xrender - X Render Extension Testing Graphics* Indicates a partially supported suite.
テストやTest Suiteの詳細は、「phoronix-test-suite info <テストもしくはSuite名>」で確認できる。たとえば、「pts/chess」というTest Suiteについての詳細を確認するには、次のようにする。
$ phoronix-test-suite info pts/chess
Phoronix Test Suite v3.8.0
An outdated version of the Phoronix Test Suite is installed.
The version in use is v3.8.0, but the latest is v4.8.2.
Visit http://www.phoronix-test-suite.com/ to update this software.Chess Test Suite
Run Identifier: pts/chess-1.0.0
Suite Version: 1.0.0
Maintainer: Michael Larabel
Suite Type: Processor
Unique Tests: 2
Suite Description: This test suite contains tests that are various benchmarks looking at the CPU’s performance through different AI algorithms for a game of chess.pts/chess-1.0.0
* pts/crafty
* pts/tscp
これを見ると、pts/chessというTest Suiteではチェスゲーム向けのAIアルゴリズムに対するCPUの性能をテストできること、このTest Suiteでは「pts/crafty」や「pts/tscp」というテストを実行することが分かる。pts/craftyというテストの詳細は同じくinfoコマンドで確認でき、オープンソースのチェスエンジンを使ってのテストを行うということが分かる。
[hylom@corei7 ~]$ phoronix-test-suite info pts/crafty
Phoronix Test Suite v3.8.0
Crafty 23.4Run Identifier: pts/crafty-1.3.0
Profile Version: 1.3.0
Maintainer: Michael Larabel
Test Type: Processor
Software Type: Utility
License Type: Free
Test Status: Verified
Project Web-Site: http://www.cis.uab.edu/info/faculty/hyatt/hyatt.html
Estimated Run-Time: 424 Seconds
Download Size: 0.41 MB
Environment Size: 6 MBDescription: This is a performance test of Crafty, an advanced open-source chess engine.
Test Installed: No
Software Dependencies:
- Compiler / Development Libraries
- NUMA Development Files
Phoronix Test Suiteでは、テストに必要なすべてのコンポーネントがインストールされているわけではなく、テストの実行前に必要なコンポーネントをダウンロードしてインストールする仕組みになっている。テストに必要なコンポーネントのインストールには、「phoronix-test-suite install <テスト名もしくはTest Suite名>」コマンドで行える。たとえば、gzipでの圧縮を行ってその速度を測定する「compress-gzip」テストをインストールするには、次のようにする。
$ phoronix-test-suite install compress-gzip
Phoronix Test Suite v3.8.0
To Install: pts/compress-gzip-1.1.0
Determining File Requirements ……………………………………
Searching Download Caches ……………………………………….1 Test To Install
pts/compress-gzip-1.1.0:
Test Installation 1 of 1
Installing Test @ 19:24:24
インストールしたテストもしくはTest Suiteを実行するには、「phoronix-test-suite benchmark <テスト名もしくはTest Suite名>」コマンドを使う。先にインストールしたcompress-gzipテストを実行する場合、次のようになる。
$ phoronix-test-suite benchmark compress-gzip
テストを実行すると、まずシステム情報が表示された後、テスト結果をファイルに保存するかどうかが尋ねられる(「Would you like to save these test results」の部分)。ここで「Y」(はい)を選択すると、続いて保存する名前の入力が求められる。続いて、ベンチマーク結果を識別するためのユニークな名前を入力するよう求められるが、これについては空のままで構わない。最後に、ベンチマークテスト環境などに関する情報を入力ができるが、こちらもデフォルトのままで構わない。デフォルトの場合、CPUやハードウェア、OSなどの情報が自動的に入力される。
$ phoronix-test-suite benchmark compress-gzip
Phoronix Test Suite v3.8.0Installed: pts/compress-gzip-1.1.0
System Information
Hardware:
Processor: Intel Core i7 920 @ 2.79GHz (8 Cores), Motherboard: Gigabyte EX58-UD3R, Chipset: Intel 5520/5500/X58 + ICH10R, Memory: 3072MB, Disk: 60GB FUJITSU MHT2060B, Graphics: NVIDIA GeForce 8400 GS 256MB, Audio: Intel 82801JI, Network: Realtek RTL8111/8168BSoftware:
OS: CentOS 6.4 (Final), Kernel: 2.6.32-358.el6.x86_64 (x86_64), Compiler: GCC 4.4.7 20120313, File-System: ext4, Screen Resolution: 1600×1200Would you like to save these test results (Y/n): Y
Enter a name to save these results under: sample01
Enter a unique name to describe this test run / configuration:If you wish, enter a new description below to better describe this result set / system configuration under test.
Press ENTER to proceed without changes.Current Description: Intel Core i7 920 testing with a Gigabyte EX58-UD3R and NVIDIA GeForce 8400 GS 256MB on CentOS 6.4 (Final) via the Phoronix Test Suite.
New Description:
これらの入力が完了すると、続いてベンチマークテストが実行される。テストは複数回実行され、その結果の差が大きい場合は自動的に追加でテストが実行される。
Gzip Compression:
pts/compress-gzip-1.1.0
Test 1 of 1
Estimated Trial Run Count: 3
Estimated Time To Completion: 3 Minutes
Running Pre-Test Script @ 19:25:44
Started Run 1 @ 19:27:17
Started Run 2 @ 19:29:41
Started Run 3 @ 19:30:59 [Std. Dev: 78.03%]
Started Run 4 @ 19:31:19 [Std. Dev: 93.29%]
Started Run 5 @ 19:31:37 [Std. Dev: 102.37%]
Started Run 6 @ 19:31:56 [Std. Dev: 108.45%]
Running Post-Test Script @ 19:32:12Test Results:
138.53726291656
75.26598906517
18.003746032715
16.377418994904
16.272145986557
16.081348896027Average: 46.76 Seconds
Would you like to upload these results to OpenBenchmarking.org (Y/n): n
この例の場合、1回目と2回目、3回目の結果が大きく異なっていたため、合計6回のテストが実行されている。
テストが完了すると、最後にテスト結果がアップロードされているOpenBenchmarking.orgというWebサイトに結果をアップロードするか尋ねられる。ここで「Y」を選択すると、ベンチマーク結果がその条件も含めて送信される。
なお、ベンチマーク結果はホームディレクトリの.phoronix-test-suite/test-resultsディレクトリ以下に保存される。ここにはテスト結果のグラフを含むHTML形式のテストレポートも格納されており、グラフィカルにテスト結果を確認できる(図2)。

CPUやメモリのベンチマークテストはあくまでも目安として総合的な判断を
CPUやメモリのベンチマークテストはストレージやネットワークのベンチマークテストとは異なり、スループットのような目に見えて分かりやすい結果が出るわけではない。そのため、どちらかというと既存のサーバーと比べての性能差を視覚化すると言った、比較用途での利用が主となる。GeekbenchやPhoronix Test Suiteではさまざまな環境でのベンチマークテスト結果がアップロードされているので、比較対象としてそちらも確認してみると良いだろう。
また、近年はCPUの処理能力が著しいため、CPUの処理能力を使い切るようなケースは多くない。アプリケーションが遅い、といった場合、搭載しているメモリ量やストレージの処理能力、ネットワーク帯域のほうが邪魔をしていることもある。ベンチマークを行う際はCPUやメモリのベンチマーク結果はあくまで目安として、総合的な判断を心がけたい。
この記事についてコメントする