次のページ 前のページ 目次へ

3. Linux ベンチマーク ツールキット (LBT)

Linux 用の基本的なベンチマークツールキットの拡張と改良の為の提案 です。これに価値があるかお手にとって下さい。つまり、作業中という ことです。これが効果的なテストスイートではないと思ったら 気軽に提案を電子メールで筆者宛てに送付してください。出来るだけ 喜んで変更と改良を行うでしょう。とはいっても議論に入る前に、この HOWTO とここで述べた参考文献を読んでください。情報のある批評は 歓迎しますが、中身のない批評は歓迎できません。

3.1 理論的根拠

まさに一般常識ですが:

  1. ベンチマークは一日中実行するべきものではありません。比較ベンチ マーク (色々実行します) の場合は、だれもそのシステムの最速の設定を 決定するのに何日も努力したくはありません。理想的には、すべての ベンチマーク一式を平均的なマシンと比較するのに 15 分程度かかるで しょう。
  2. 明らかな理由で、LBT で使用しているソフトウェアのすべての ソースコードは自由にインターネットで利用できなければなりません。 多分、GNU/GPL ライセンスに準拠するでしょう。
  3. ベンチマークは測定した性能を簡単な数値で提供するべきです。
  4. 合成ベンチマークとアプリケーションベンチマークの混合物 であるべきです(もちろん分離した結果と共に)。
  5. 合成 ベンチマークのそれぞれは個々のシステムの 最大容量を使用するべきです。
  6. 合成 ベンチマークの複数の結果を一つの価値ある数値 に平均してはいけません。合成ベンチマーク全体の考え方を 無視できない程の情報の損失を伴って失敗します。
  7. アプリケーションベンチマークは Linux システム上で一般に動作 するタスクであるべきです。
  8. 結果の分散は同じマシンで同一もしくは同様の負荷状況で継続的 に実行した場合、 1 か 2 % より小さいでしょう。殆んどの ベンチマークでは説得力のある必要条件であることに注意してください。

3.2 ベンチマークの選択

できるだけテストの重複を避けるように 5 つの色々なベンチマーク を選択しました。:

  1. Kernel 2.0.0 (標準構成) の gcc によるコンパイル。
  2. David C. Niemi による UnixBench ベンチマーク バージョン 4.10。 このバージョンの UnixBench は Double Precision Whetstone テストを 含んでいます。
  3. Kazuhiko Shutoh による Xengine 1.0 。
  4. Uwe Mayer により変更された BYTE Magazine の BYTEmark ベンチ マークのベータリリース 2 。

3.3 テスト存続期間

  1. Kernel 2.0.0 コンパイル: 5 - 30 分、システムの真の 性能に依存します。
  2. UnixBench ベンチマーク バージョン 4.10: 推定 15 分。
  3. Xengine: 5 秒。
  4. BYTEmark ベンチマーク: 推定: 10 分。

3.4 コメント

Kernel 2.0.0 コンパイル:

  • 何ものか: LBT 内の唯一のアプリケーションベンチマーク。
  • コードは広く入手可能 (例えば 古い Linux CD-ROM に見つかります)。
  • ほとんどの Lunuxer は極めてよくカーネルをリコンパイルします。 従って、これは全体的な性能の意義深い測定です。
  • カーネルは巨大で gcc はどっさりメモリを使用します。小さなテスト では L2 キャッシュの大きさを減らしてしまいます。
  • たびたびディスクへ入出力を行います。
  • テスト手順: パッチなど当ってないきれいな 2.0.0 のソースを入手し て標準のオプションでコンパイルしましょう。エンターキーを繰り返し押し て make config を行います。報告する時間はコンパイルにかかった時間で す。例えば make zImage の時間です。make dep, make clean の 時間は含めないで下さい。カーネルの標準のターゲットアーキテ クチャは i386 です。これ以外のアーキテクチャのマシンでコンパイルを 行うときは gcc をターゲットを i386 にしたクロスコンパイルの設定に する必要があります。(gcc のクロスコンパイル用の適切なスイッチに ついてはオンラインマニュアルを見てください)
  • 結果: コンパイル時間を分と秒で計算してください。 (Linux マシンが 30 秒以下のテスト結果を出すまでは秒の端数 (小数点 以下) は報告しないでください。)

UnixBench version 4.10:

  • 何ものか: Unix 全体の性能を測定する合成ベンチマーク。 このテストは FPU, ファイル入出力とカーネルのマルチタスキングを働かせ ます。David Niemi が倍精度の Whetstone FPU テストを原作の FPU テスト の代わりに UnixBench 4.10 の該当部分に実装しています。
  • テスト手順: -O2 をつけて make しましょう 。 ./Run -1 ./results/報告ファイル名 としてテストを起動して ください。 EXECL THROUGHPUT, FILECOPY 1, 2, 3, PIPE THROUGHPUT, PIPE-BASED CONTEXT SWITCHING, PROCESS CREATION, SHELL SCRIPTS と SYSTEM CALL OVERHEAD の指標の幾何平均を計算します。
  • 結果: 浮動小数点性能とシステムの指標です。

Xengine:

  • 何ものか: CPU / ビデオメモリの帯域幅 / X サーバの性能 の高レベルのテストです。
  • 小さな X window 内で 4 サイクルエンジンの動作のシミュレーショ ンを行なうすてきな、見た目の良い、ユーモアのあるプログラムです。
  • LBT の中で一番小さく一番短いテストです。
  • テスト手順: xmkmf で当該システム用の makefile を作成して、-O2 をつけて ( コンパイルの警告を無視して) コンパイルしてください。 筆者は筆者のシステム用にソースを少し修正する必要がありました。: a) XtGetValues 関数を呼んでいる行をコメントにしました。; b) エンジンの横と縦の大きさを次の 2 行で 200 という固定値を指定しま しょう。
  • 結果: RPM の値。
  • 注意: このテストは X サーバの性能の厳密で、完璧なテストを意味 するものではありません。しかしながら、システムが画面上にカラーの 画素を出力する速度がどれくらい速いかの指標を得ます。知りたい事の 最小部分ではないでしょうか ?

BYTE マガジンの BYTEmark ベンチマーク:

  • 何ものか: CPU 性能の良い測定を提供します。文書から 引用します。: "これらのベンチマークはシステムの CPU, FPU, と メモリアーキテクチャ の理論上な上限をあばく事を意味します。ビデオ, ディスク, ネットワークスループットは測定できません。 (これは異なるベンチマークの領域です。) 従って、これらのテスト結果をシステムの評価の全部ではなく 一部として使いましょう。"
  • Whetstone テストが丁度 UnixBench 4.10 に含まれる FPU 性能を 表わしているので、FPU テスト結果は処分しました。
  • 整数テストは 2 つのグループに分けましょう。これらは メモリキャッシュ-CPU 性能とそれらに関係する CPU 整数命令を表して います。
  • テスト手順: -O2 をつけて make しましょう。./nbench > myresults.dat 等としてテストを起動してください。 そのとき、myresults.dat から STRING SORT, ASSIGNMENT と BITFIELD のテスト指標の幾何学平均を計算しましょう。これはメモリの指標 です。NUMERIC SORT, IDEA, HUFFMAN と FP EMULATION テスト指標の 幾何学平均を計算しましょう。これは 整数の指標 です。
  • 結果: メモリの指標と整数の指標の計算は上記で説明 しました。

3.5 考えられる改善

理想的なベンチマークスイートは各サブシステム別の合成ベンチマーク と、異なるアプリケーション用の結果を得るアプリケーション ベンチマークを数分で実行するでしょう。そのベンチマークスイート は自動的に全てのレポートを作成し、最終的にレポートを Web 上の中央の データベースに電子メールを送付し、更新するでしょう。

我々は今までまったく OS 間の移植性について興味を持っていませんでした が、ごく最近 Linux のバージョン (> 2.0.0) と各種プラットフォーム (i386, Alpha, Sparc 等) で少なくとも実行できます。

テストはまたとても不便な "特徴" を持っています。: UnixBench と BYTEmark テストの指標は異なる参考マシンを基にしています。それぞれの テストの結果を無効に出来ないことにいらいらします。

次の領域は改良のために必要です。:

  1. ネットワークベンチマーク: 単純、簡単で信頼できる方法で短時間 (設定から実行までで 30 分以下で)のテストネットワーク性能の ベンチマークについての着想をお持ちの方は、筆者まで連絡下さい。
  2. X ベンチマーク: X 用のアクセラレータ関数を働かせるには 真の 8, 16, 24 と 32 ビットが必要です。
  3. Web サーバベンチマーク: 殆んどの Linux ユーザは商用の PC 機材 + Linux + Apache サーバデーモンで汎用目的の Web サーバを実現しています が、そのようなマシンでのベンチマークは異なる性能の指標を示します。 WebStone 2.01 は良い候補だと思います。
  4. ゲーム性能: Doom とか Quake のベンチマークは興味があるでしょう。 筆者は Quake が Pentium 用に手による最適化コードが含まれていると聞いて いて Linux システムの汎用目的のベンチマークには向かないので、 Doom ベンチマークの準備をしています。Doom と Quake の基本的な問題はソース が利用可能でないことです。

3.6 LBT レポートの書式

このテスト以外にも、設定を説明している書式なしではベンチマーク手順 は完全ではありません。よって、ここに示します。(次は comp.benchmarks FAQ からのガイドラインです)


LINUX BENCHMARKING TOOLKIT REPORT FORM


CPU 
===
Vendor: 
Model: 
Core clock: 
Motherboard vendor: 
Mbd. model: 
Mbd. chipset: 
Bus type: 
Bus clock: 
Cache total: 
Cache type/speed: 
SMP (number of processors): 


RAM 
=== 
Total: 
Type: 
Speed: 


Disk 
==== 
Vendor: 
Model: 
Size: 
Interface: 
Driver/Settings: 


Video board 
=========== 
Vendor: 
Model: 
Bus:
Video RAM type: 
Video RAM total: 
X server vendor: 
X server version: 
X server chipset choice: 
Resolution/vert. refresh rate: 
Color depth: 


Kernel 
======
Version: 
Swap size:


gcc 
=== 
Version: 
Options: 
libc version: 


Test notes 
==========


RESULTS 
======== 
Linux kernel 2.0.0 Compilation Time: (minutes and seconds) 
Whetstone Double Precision (FPU) INDEX: (report both the result in
MWIPS and the index)
Unixbench 4.10 system INDEX:
Xengine: (results are in RPM)
BYTEmark integer INDEX:
BYTEmark memory INDEX:


Comments* 
========= 
* This field is included for possible interpretations of the results, 
and as 
such, it is optional. It could be the most significant part of your 
report, 
though, specially if you are doing comparative benchmarking. 

3.7 ネットワーク性能テスト

ネットワーク性能のテストは、最低 2 つのマシン (サーバとクライアント) を必要とするので 2 回設定し、たくさん管理するための数値を設定等しま しょう。TCP/IP イーサネットネットワーク上では、最高の選択は ttcp パッケージだと思います。若しくは netperf かもしれません。

3.8 Symmetric Multi Processing (SMP) 対称型マルチプロセッサテスト

SMP テストはもう一つの挑戦です。SMP 用に特有に設計したベンチマーク は実用になるマルチプロセッシングの優位性を発揮するアルゴリズムを 開発するのが困難なので SMP 自身を調査するのが困難な期間がありました。 Linux はユニ(単一)プロセッサ(UP) OS として開始しましたが、Linux カーネルの最新版 (大体 > 2.1.30)では "きめ細かい" マルチプロ セッシングを行いますが、今の段階ではこれ以上の情報はありません。

David Niemi によれば、" ... shell8 が SMP と UP モードの 類似したハードウェア/OS を比較するのに良い仕事をします。"


次のページ 前のページ 目次へ

[