CPUやメモリなどのシステム性能を比較するベンチマークツール

最近のサーバーではネットワークやストレージの性能が最重要視され、CPUやメモリの性能についてはあまり重視されない傾向がある。とはいえ、CPUやメモリの処理能力が重要となる場合もまだ一定数ある。今回はそのような用途に向け、CPUやメモリ、システム全体の処理能力を調査するためのベンチマークツールを紹介する。

前回はネットワークやストレージの性能を調査するためのベンチマークツールを紹介した。ネットワークやストレージの性能はWebサーバーやデータベースサーバーなどにおいてその処理能力に直結するため注目されやすいが、重い処理を実行するようなアプリケーションサーバーなど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)。

表1 UnixBenchで実行されるテスト
テスト名 説明
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 tests

Dhrystone 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 tests

Dhrystone 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」

おしらせ