CPUやメモリなどのシステム性能を比較するベンチマークツール
総合ベンチマークツール「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 Agreement Do 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 Tests pts/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 Suites pts/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.4 Run 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 MB Description: 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.0 Installed: 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/8168B Software: 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: 1600x1200 Would 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:12 Test Results: 138.53726291656 75.26598906517 18.003746032715 16.377418994904 16.272145986557 16.081348896027 Average: 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やメモリのベンチマーク結果はあくまで目安として、総合的な判断を心がけたい。