TOP比較データ> diskioのマイクロベンチマークとしての利用
OSS評価手法
オープンソースソフトウェアの性能・信頼性評価手法

第9回:LinuxのI/O信頼性・性能評価
著者:NTTデータ  高田 哲生   2005/7/11
前のページ  1  2   3  4  次のページ
diskioのマイクロベンチマークとしての利用

   本検証では、diskioというツールをマイクロベンチマークとして利用した。

   diskioとは、システムコールを直接使用した書き込みを繰り返し行い、各書き込みにかかる時間を計測するツールである。diskioはODSLのプロジェクト「DOUBT」で公開されており、本来の用途は同期書き込みの信頼性検証である。本検証では、マイクロベンチマークとしての用途に適合するようにdiskioを改造し、diskio-2.0としてDOUBTに投稿した。diskio-2.0と、これを使用した信頼性検証の結果はDOUBTのWebページで公開されている。

OSDLとは
   Linux開発者であるLinus Torvaldsが所属するNPO(非営利団体)。Linuxの成長とエンタープライズでのLinux採用を促進することが目的で、以下のミッションを持っている。

  • Linux開発コミュニティに対するエンタープライズクラスのテストやその他の技術サポート
  • Linux業界のリソースを最もニーズのある分野への投資にフォーカスし、成長の阻害要因を除去
  • Linux開発コミュニティとの効果的な協調作業について、ベンダーやエンドユーザなどメンバーに対する実践的ガイダンス

OSDL Webサイト
http://www.osdl.jp/

Project DOUBT Webサイト
http://developer.osdl.jp/projects/doubt/
diskioの利点

   diskioには書き込みを評価するマイクロベンチマークとして2つの利点がある。

   ひとつめの利点は、diskioがPostgreSQLでWALの書き込み方法として指定できるfsync、fdatasync、osync、odsyncをサポートしていることである。diskioはそれらに加えてsyncsync(syncシステムコールを2回発行する)と、async(非同期書き込み)もサポートしており、結果を比較することができる。

   もうひとつの利点は、精密な計測ができることである。システムコールレベルの計測ではマイクロ秒精度の時間計測が必要になるが、システムコールのgettimeofdayなどでは誤差が大きく、マイクロ秒精度では計測できない。diskioではTime Slice Counter(以下TSC)を使用して時間を計測している。TSCはマシン起動時からのCPUクロックtick数をカウントしており、非常に高速なカウンターである。そのためCPUに依存するが、十数ナノ秒精度の正確なデータを計測することが可能で、十分な計測結果を提供してくれる。


書き込みに関するパラメータ

   diskioをマイクロベンチマークとして利用するにあたって、書き込み方法などを変更した。書き込みを始めるポイントをアクセスポイントとして定義し、それに関連したパラメータを設定することで、diskio-2.0では書き込みパターンを制御するようにした。図2にアクセスポイントと関連するパラメータを示す。

アクセスポイントと関連するパラメータ
図2:アクセスポイントと関連するパラメータ

   アクセスポイントに関連するパラメータは次のような意味を持つ。

Offset ファイル先頭から最初のアクセスポイント(アクセスポイント0)までのオフセット。単位はバイト。
Interleave Size 隣接するアクセスポイント間の距離。単位はバイト。
Each Write Size 一度の同期書き込みで書き込むサイズ。単位はバイト。
Sampling Frequency 書き込みを行う回数。回で指定する。
書き込み順序とAppend/Overwrite

   書き込み順序には以下のようなものがある。

Sequential アクセスポイント0からデータの書き込みを開始する。データ書き込み後はシークせずに次の書き込みを行う。Interleave SizeとEach Write Sizeを一致させる必要がある。
Interleave アクセスポイント0からデータの書き込みを開始する。あるアクセスポイントiへ書き込んだ後は、アクセスポイント(i+1)へシークし、次の書き込みを行う。
Random アクセスポイントの中からランダムにポイントを選びだし、そのポイントへシークし、書き込みを行う。

   書き込み先がディスク上にあらかじめ確保されているかどうかで、Append、Overwriteの2種類がある。

Append ストレージ上にまだファイル領域として確保されていない領域に対し、書き込みを行う。
Overwrite ストレージ上にすでにファイル領域として確保されている領域に対し、書き込みを行う。
diskioのチューニング

   本検証ではPostgreSQLのWAL書き込みをエミュレートするため、diskioに表1のようなパラメータを設定している。

Each Write Size(Byte) 8192
Sampling Frequency 6144

表1:diskioに設定したパラメータ

   Each Write Sizeは8KByteに設定してある。これはPostgreSQLがメモリに確保したWALバッファをストレージへ書き出す際の最小書き出しサイズである。

   Sampling Frequencyはファイルサイズが48MByteになるように設定してある。これはPostgreSQLのWALファイルサイズの3倍にあたる。diskioではウォームアップを考慮せずに計測を行っているため、ウォームアップ分として、16MByteを大きく越えるサイズにする事でウォームアップを行っている。

   今回の検証では、OverwriteとSequentialの組み合わせについて計測した。これは、WAL更新時の書き込み順序である。

   これらのパラメータはdiskioを駆動するスクリプト内で適切に設定されるようにしてあり、ユーザ側で意識する必要はない。スクリプトの内容や、使い方等に関しては「OS層の評価」報告書の3.1「diskioによる評価」を参照されたい。

前のページ  1  2   3  4  次のページ


株式会社NTTデータ 高田 哲生
著者プロフィール
株式会社NTTデータ  高田 哲生
2004年に(株)NTTデータに入社し、Linuxカーネルを専門とする部隊に配属される。その後、OSDL Project Doubtのメンテナとなり、I/O信頼性評価ツール「diskio-2.0」を開発する。現在は、diskioの拡張に加え、Linuxクラッシュダンプ機能「ミニカーネルダンプ」を用いたカーネルの故障解析を担当し、Linuxの信頼性向上に取り組んでいる。


INDEX
第9回:LinuxのI/O信頼性・性能評価
  マイクロベンチマークによる評価
diskioのマイクロベンチマークとしての利用
  評価結果
  diskio利用の応用