Develop and Download Open Source Software

OpenSource Downloads

7-Zip  (4,208)  
HandBrake Japanese Language Version  (3,353)  
CrystalDiskInfo  (1,743)  
CotEditor  (1,120)  
CrystalDiskMark  (866)  
Boookends  (788)  
SMPlayer  (642)  
えこでこツール  (599)  
Tera Term  (595)  
10  FFFTP  (579)  
11  Cabos  (530)  
12  BathyScaphe  (494)  
13  ffdshow  (481)  
14  MergeDoc  (464)  
15  ギコナビ  (438)  
More >>

最近ブックマークされた記事

IOzoneによるファイルシステムのパフォーマンス測定

2008年09月05日 16:58 Ben Martin 1 2 3

 IOzoneにはベンチマークテスト中にデータの読み書きの方法を制御する多くのオプションがあるので、自分のマシンで実際に使おうと考えているアプリケーションに近い方法で入出力要求を生成できる。これらのオプションはIOzone マニュアルにアルファベット順で解説されているが、以下では関係するオプションをそれぞれグループにまとめて説明する。

 最初のオプショングループは、IOzoneのベンチマークテストで使用するAPIに関するものである。ところで、メモリマップファイルが好んで使われるのは、ファイルのデータを取得するためにプログラムから明示的にread()関数を実行しなくても、メモリロケーションにアクセスしたときデータが自動的に読み込まれるからである。ただし、メモリマップファイルを使用するプログラマは、大きなメモリマップファイルをランダムな入出力パターンで操作するとき、シーク時間の大きな遅延が生じる可能性があることを承知しておく必要がある。アプリケーションでいつメモリマップファイルを使うべきかについて決まったルールは存在しないし、入出力の基礎となるファイルシステムのパフォーマンス限界がAPIで変化することはない。

 -Bオプションは、メモリマップAPIを使用してファイルが操作されるようにする。-Dオプションは、これらのメモリマップファイルについてオペレーティングシステムでデータが非同期に転送されるようにする。-Gオプションは、同期的なメモリマップファイルを使用することを明示的に宣言する。メモリマップ入出力を実行するアプリケーションは、madviseシステムコールを使用して、カーネルにそのアクセスパターンを知らせることができる。これによりオペレーティングシステムのカーネルは、アプリケーションの指定したアクセスパターンに一致するようにキャッシュを調整できる。特別な-+Aオプションは、メモリマップ入出力によるテストの最中にIOzoneからカーネルに対してmadviseをどう実行するかを指定する。-Hおよび-kオプションはベンチマークテストの最中にPOSIXの非同期入出力コールを使うようにするもので、-Hは、さらにオペレーティングシステムの使用したメモリバッファからコピーして非同期入出力要求が処理されるようにする。-Hと-kはどちらも任意の時点で試行される非同期操作の数を引数に取る。-Eオプションは、ベンチマークテストでpread APIが使われるようにする。pread()コールは、read() APIと同様にファイルディスクリプタに作用するが、これにはファイルのどこからデータを読み取るかを示すオフセットがある。

 もう1つのオプショングループは、ベンチマークの計測方法に関するものである。-cオプションは、ベンチマークで計測される時間にclose()コールを含める。ディスクへの変更時に遅延が生じるようなファイルシステム(NFSv3など)を使用している場合は、-cオプションを指定した方がファイルシステムのパフォーマンスに関してより公正な評価結果が得られる。-eオプションは、フラッシュコールをベンチマークに含める。データをディスクにフラッシュするために実際に使われるコールは、使用している入出力サブシステムによって異なる。たとえば、ファイルディスクリプタでベンチマークを取るときは、fsyncコールが使われる。ベンチマークテストにおいてフラッシュが意味を持つのは、多くのデータベースシステムでディスクへの書き込みを保証するためにフラッシュが実行されるからである。-oオプションは、ファイルを開くときO_SYNC同期モードを設定してファイルへのすべての書き込みがディスクに直ちにフラッシュされるようにする。

 IOzoneは、デフォルトでは現在のディレクトリをベンチマークテストのターゲットのファイルシステムとして使用する。-fまたは-Fオプションで別のロケーションを指定することもできる。-Fは機能的に-fと似ているが、マルチプロセスまたはマルチスレッドのファイルシステムのパフォーマンスをテストするとき、複数のロケーションを指定できる。-Uオプションは、テスト対象のファイルシステムのマウントポイントを指定する。-Uを指定すると、IOzoneは次のテストに移るとき、ファイルシステムのバッファをすべてフラッシュするために、指定されたファイルシステムをいったんマウント解除して再マウントするようになる。

 -jオプションは、ストライド読み取りテストで使用されるファイル読み取りのストライドを設定する。ストライド読み取りテストでIOzoneによって読み取られる各レコードは、ストライドのバイト数だけ隔てられる。-qおよび-yオプションは、自動テストモードにおけるレコードサイズの下限と上限を設定する。また、-rオプションを使用すると、-qから-yの範囲でレコードサイズを変化させる代わりに、特定のレコードサイズを指定してテストを行うことができる。-jに渡すパラメータはレコードサイズの倍数なので、RAIDストライプのサイズを渡し、上記のオプションでレコードサイズの範囲を指定すれば、整列した場合と整列しない場合についてのパフォーマンスをテストし、両方の結果を同じグラフに描くことができる。

 一連の-iオプションを使用することにより、ベンチマークテスト中に必要なテストを選択的に実行できる。残念ながら、-iオプションが受け付ける引数は数値であり、人間が読めるような可読性の高いオプションを直接渡すことはできない。選択できるテストの多くは、それまでに実行された書き込み(-i 0)テストに依存するので、ファイルはIOzoneによって既に作成され初期化されている。たとえば、読み取り(1)と書き込み(0)のテストだけを実行する場合は、-i 0 -i 1オプションを使用する。各テストの番号は、IOZone --helpの出力に示される。

 ベンチマークをマルチプロセスで実行する場合は、-tスループットモードを指定し、作成するスレッドまたはプロセスの数を設定する。-Tオプションは、スループットテストのためのマルチスレッドの作成にPOSIXのpthreadsが使われるようにする。プロセスの代わりにpthreadsを使うことを明示的に宣言できるため、実行しようと考えているアプリケーションのマルチスレッド/マルチプロセスモデルを用いて、IOzoneによる入出力のベンチマークテストを行うことができる。プロセス数の下限を-lオプションで、上限を-uオプションで指定する。

 ベンチマークテストのさまざまな段階で遅延を挿入するオプション(-d、-Jbなど)もある。

最終更新:2008年11月05日 17:07