II-27-3. システムの性能評価

システム性能の要件や性能評価の考え方、システムトータルでの性能評価方法について概説する。処理時間を計測するツールとして利用できるgprofや、OSのシステム性能を計測するツールでOSSとして提供されているHBench-OSなど、各種のツールを利用したシステム性能計測方法を説明する。

【学習の要点】

* システムの性能評価を行うためにプロファイリングツールや負荷ツールが用いられる。

* 処理計測時間の計測にはgprofなどのプロファイラが用いられる。

* OSやハードウェアのシステム性能を計測にはHBench-OSなどが用いられる。

図II-27-3. HBench-OSによるアプリケーションからハードウェアを呼び出す過程の性能測定

【解説】

1) システムの性能評価

* システムの性能評価には、システムやプログラムを動作させずに行う静的な解析と、実際に動作させて行う動的な解析とがある。

- 静的な解析では、待ち時間、MPUのクロック数、メモリ、I/O のアクセス時間、システムバスのバンド幅などから性能を積算する場合や、プログラム中の関数呼び出しやループなどを解析する場合がある。

- 動的な解析では、以下2)、3)で示すようにプロファイラやベンチマークツールが用いられる。

2) gprofを用いた動的性能評価

* gprof ( http://sourceware.org/binutils/docs-2.16/gprof/index.html )はbinutils (GNU Binary Utilities) に含まれるプロファイラである。

* 実際にコンパイル済みのプログラムを動作させることにより、リソースを消費する箇所を特定する。リソースとしては、メモリ、電力、入出力が挙げられる。

* リソース消費の静的な見積もりは難しい場合が多く、プロファイラはリソース消費の確認のためによく用いられる。

* プロファイラを用いて行う最適化の例

- 算術計算の単純化

- コード再配置 (頻繁に実行される分岐のないコードを近くにまとめる)

- メソッドのインライン展開

* 実行コマンドの例

- プログラムをオプション付きでコンパイルする(gcc –pg)

- 実行後に.outファイルを出力する(gmon.out)

- gprofツールを実行する (gprof –p a.out gmon.out)

3) HBench-OSを用いた動的性能評価

* HBench-OS ( http://www.eecs.harvard.edu/vino/perf/hbench/ )はOSやハードウェアプラットフォームにより提供されるプリミティブな機能の実行性能を測定するベンチマークツールである。

* OS依存のアプリケーションは、プロセス生成などOSの高水準プリミティブ、bcopy, mmap, forkなどのOSの低水準プリミティブを利用してCPU、メモリなどのハードウェアにアクセスする。このアクセスの階層をパフォーマンス階層と呼ぶ。

* HBench-OSはパフォーマンス階層分析やOSに対する変化の実行性能への影響を評価する際に利用できる。

* HBench-OSはプラットフォームに制御を加えた際に、ある特有のプリミティブの実行性能がどのような影響をうけるかを理解する場合や、アプリケーションレベルを含む、完全なシステムパフォーマンス階層を把握する場合に役立つ。

OSS Course Naviのコンテンツは IPA OSS モデルカリキュラムを基としています。