VMwareServer on CentOS5.2のIO性能(HOSTはNot RAID)

前にVMwareServerのGuestOSのRead性能が著しく悪い(6MB/sec)というのを書きました。
http://d.hatena.ne.jp/ichikaway/20080918/1221722522

最近また、VMwareServerとかESXiとか触ってて、その流れでVMwareServerのIOのチューニングを試みようと思い、bonnie++で計測したら、なぜか性能が良かった。


今回の計測は下記の環境。前のときよりHDDの性能とか良いし、カーネルも標準インストールのままなので、そこらへんが効いてるのかな。

Dell SC440
 CPU PeniumE Dual 2G
 Mem 2G(ECC)
 HDD1台 (Seagate NSシリーズ 500G)
 VMware Server 1.07
  HostOSはCentOS5.2 64bitでカーネル標準インストールのまま
  GuestOSはCentOS5.2 32bitでカーネル標準インストールのまま
   VMのOptionsのAdvancedのSettingsはすべてチェック無し


この環境で、VM settingのところのWrite Cacheをオンにした場合と、オフにした場合で計測しました。
結果は下記

仮想ディスクWrite Cache ONのGuestOS上のbonnie++で、
Seq Read(char) : 24MB/sec
Seq Write(char) : 25MB/sec
Seq Read(block) : 102MB/sec
Seq Write(block) : 29MB/sec


仮想ディスクWrite Cache OFFのGuestOS上のbonnie++で、
Seq Read(char) : 31MB/sec
Seq Write(char) : 38MB/sec
Seq Read(block) : 125MB/sec
Seq Write(block) : 43MB/sec

block I/Oが100MB/sec超えるとかありえない値がでちゃったんですが、charベースの性能はそれっぽい値になってる。HDDのIOって円盤上の外周にデータがあった方が性能がよくなるので、もしかしてそれが効いてるのかな。


念のため、HostOS上でもbonnie++を動かしました

HostOS上のbonnie++で、
Seq Read(char) : 58MB/sec
Seq Write(char) : 41MB/sec
Seq Read(block) : 91MB/sec
Seq Write(block) : 79MB/sec

この結果はそれっぽいw


ということで、単体HDDのカーネル標準インストールではVMwareServerのGuestOSのI/Oはそこまでひどくないという感じになりました。
次のステップとしては、

  • HDDをHostOS上でSoftware RAID1にして同じように計測
  • HostOSのカーネルを2.6.22に上げて計測

を行い、どこがネックだったのかを考えていきたいと思います。


bonnie++の見方の参考

■連続書き込み(Sequential Output)
Per Char関数putc()を使用したキャラクタベースの書き込みテスト
Block関数write()を使用したブロックベースの書き込みテスト
Rewrite関数write()を使用した再書き込みテスト

■連続読み込み(Sequential Input)
Per Char関数getc()を使用したキャラクタベースの読み込みテスト
Block関数read()を使用したブロックベースの読み込みテスト

■ランダムシーク(Random Seek)
Seekdrand48()を使用した8000回のlseek()

■連続操作(Sequential Create)
Createcreat()を使用したファイルの作成テスト ファイル名は7桁数値、0-12までの英数字
Readstat()を使用したファイル情報の確認テスト
Deleteunlink()を使用したファイルの削除テスト

■ランダム操作(Random Create)
Createcreat()を使用したファイルの作成テスト ファイル名は任意
Readstat()を使用したファイル情報の確認テスト
Deleteunlink()を使用したファイルの削除テスト