前に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()を使用したファイルの削除テスト