いざ,仮想化環境におけるディスクI/O性能を検証

 実機による検証に当たり,プロセッサ負荷,メモリー負荷を極力抑えながら,ディスクI/O負荷を生成するプログラム「DiskStress.exe」(図4)を作成した。このプログラムは,指定したディスク・ドライブに対してファイルの読み書きを実行し,その速度を計測できる。ファイルのサイズはメガバイト(MB)単位で指定でき,指定数のマルチスレッドで同時にファイルの作成と読み書きをする。

図4●ディスクI/O負荷生成プログラム「DiskStress.exe」
図4●ディスクI/O負荷生成プログラム「DiskStress.exe」

 検証は,1台のサーバー機を使い,物理環境と仮想化環境が極力等しい条件になるよう設定した(詳細なシステム構成は本稿の最後に記した)。物理環境と仮想化環境の切り替えは,それぞれの環境をセットアップしたHDDを差し替えることで行った。

 図5は,今回の検証で使用したディスク・ドライブの構成である。2台の72GB HDDをRAID 1(ミラーリング)で構成したCドライブにサーバー環境をセットアップし,同じく2台の72GB HDDをRAID 1で構成したDドライブにデータ・ファイルを置いた。今回の検証では,Cドライブのサーバー上で実行するディスクI/O負荷生成プログラムDiskStress.exeからDドライブへのディスクI/O性能と,サーバーのプロセッサ負荷を計測した。これを物理環境と仮想化環境のそれぞれで実施し,両者を比べることで「仮想化によるオーバーヘッド」がどの程度かを調べた。

図5●ディスクI/Oの検証環境(概要)
図5●ディスクI/Oの検証環境(概要)
同一のサーバー機を使って検証する。物理環境と仮想化環境の切り替えは,それぞれの環境をセットアップしたHDDを差し替えることで行う

 仮想化環境の仮想プロセッサ数は「1」に設定してある。物理環境では,この条件に近づけるために,OS上でプロセッサ・アフィニティを設定し、「DiskStress.exe」が1つのプロセッサ・コアしか使わないようにした。

 なお,メイン・メモリーは,仮想化環境の4GBに対し,物理環境では16GBを搭載している。検証環境に大差があるような印象を持たれるかもしれないが,「DiskStress.exe」はメイン・メモリーを極力使わないように設計してあるため,容量差は無視できる。

 ディスクI/O負荷として,以下の8つのパターンを使用した。いずれも計8GBのシーケンシャル・アクセスによるディスクI/Oを生成する。ランダム・アクセスにしなかった理由は,ストレージ装置がボトルネックになると,仮想マシン上で生成されるディスクI/Oが著しく抑制され,本検証の目的から外れてしまうためである。なお,同時に複数のファイルに対してディスクI/Oを生成することにより,実際のサーバー上のディスクI/Oに少しでも近づけるようにした。

【ReadのディスクI/Oパターン】
R1:128MBのファイルを同時に64個,シーケンシャルRead
R2:256MBのファイルを同時に32個,シーケンシャルRead
R3:512MBのファイルを同時に16個,シーケンシャルRead
R4:1024MBのファイルを同時に8個,シーケンシャルRead

【WriteのディスクI/Oパターン】
W1:128MBのファイルを同時に64個,シーケンシャルWrite
W2:256MBのファイルを同時に32個,シーケンシャルWrite
W3:512MBのファイルを同時に16個,シーケンシャルWrite
W4:1024MBのファイルを同時に8個,シーケンシャルWrite

ディスクI/O性能への影響は無視できる程度

 さて,最近のHDDはその性質上,ディスクの外周側と内周側で,ある程度のI/O速度差がある。つまり,ファイルがHDDのどのあたりに配置されるかによってI/O速度に差が出てしまうことがある。そのため,多少の速度差に対して神経質になる必要はないと言える。このことを前提とすると,図6に示した通り,物理環境と仮想化環境とでディスクI/O速度にはほぼ違いがないことが分かる。

図6●ディスクI/O性能の比較
図6●ディスクI/O性能の比較

 1つだけ差が見られるのは,ReadのディスクI/Oである。R2,R3,R4と,同時に読み出すファイル数が減り,ディスクI/Oがより純粋なシーケンシャルReadに近づくにつれて,徐々に違いが出ている。仮想化環境ではディスクI/O性能が一定なのに対し,物理環境では少しずつI/O性能が高くなっているからだ。

 しかし,実際の仮想化環境の運用を考えれば,この性能差はそれほど気にしなくていいだろう。そもそも仮想化環境では,ほとんどの場合,複数の仮想マシンを同時に稼働させるのが通例である。さらに,それぞれの仮想マシン上で複数のディスクI/Oが同時に発生する。常に多数のディスクI/Oが同時に発生するため,R2,R3,R4が前提としているようなディスクI/Oは発生しにくいと考えられる。

 なお,R2,R3,R4の読み出し性能の違いに関しては,物理環境では微増しているのに対して,仮想化環境のI/O速度が一定であることから,サーバー仮想化ソフトのハイパーバイザー層におけるディスクI/Oアルゴリズムが作用しているものと推測される。

ここからは会員の登録が必要です。