2010年 8月 7日
■0x07.) まとめ
今回は、LinuxをホストOSとして使うVMware Server 1.0.x系列について、サス
ペンド&リジュームや長期使用時のパフォーマンス劣化の原因が.vmemファイルの
断片化であることを特定し、またその対策として3つの案を提示した。.
vmemファイルの断片化を防止すれば、VMware Serverはすこぶる良好な使用感と
なり、非常に満足度の高い仮想化技術を提供してくれる。筆者はここ数年長い間
苦労してパフォーマンス劣化と戦ってきたが、ついに問題点を解決することがで
き、非常に晴れ晴れとした気分である。VMwareにはESXiなどもあるのでServerの
1系列にこだわる必要はないと思うかもしれないが、筆者はホストOSとしてのLin
uxの機能(iSCSI、ソフトウェアRAID、リモートから使用できる充実した管理機能
など)を必要としているのでServerにこだわっていたりする。今後もしばらくの
間は使い続けることになるだろう。
■0x08.) おまけでQ&A
なんでこのファッキンVMwareはこんなに具合悪いのマダファッカ?
.vmemファイルが断片化しているから
.vmemファイルの実際のサイズの確認方法は?
ls -lsuhあるいはduで確認が可能
.vmemファイルはいつ作成されるの?
ゲストOS起動直後
.vmemファイルはどこに作成されるの?
通常.vmxファイルと同じディレクトリだが、vmxファイルの設定でuseNamedFile
をfalseにしておくと/tmp以下の隠しファイルになる。この/tmpの位置は変更可能(本
文参照)
.vmemファイルはいつ書き込まれるの?
vmware-vmxプロセスがマターリとメモリと同期させる。数日がかりで観察する
と徐々に大きくなることが確認できる
.vmemファイルはいつ読み込まれる(役に立つ)の?
レジュームするとき。あるいはmemory page trimmingが有効な場合には、vmwa
re-vmxプロセスが判断して随時読み込む
.vmemファイルの断片化の程度はどうやって確認するの?
hdparmの最近のバージョンで hdparm —fibmap *.vmem | wc -lすればどの程度
かをつかめる。あるいはfilefragコマンドを使う
.vmemファイルの断片化を防ぐ方法は?
起動直後にサスペンドさせ、ddでファイルをコピーして入れ替え、リジューム
するか、LD_PRELOADしてスパースファイル生成を阻止する(詳細は本文参照)
.vmemファイルを使用しない方法はないの?
ない
.vmemファイルがなくなったみたいだけど?
/tmp以下に隠しファイルとして存在している。lsofでvmware-vmxプロセスを見
ると見つけることができる
サスペンドは使わない方がいい?
断片化しないように対策してあれば普通に使える
memory page trimmingは使わない方がいい?
ホストOSのメモリが足りなくなる可能性があるなら(かつ断片化を防止してい
るなら)便利に使える。メモリに余裕があるなら使わない方がいい
useNamedFile=”False”の意味は?
.vmemファイルを/tmp以下の隠しファイルにするという意味。理解していないと
地雷
ゲストOSが消費しているメモリ量の確認は?
vmware-vmxプロセスについて、/proc/PID/statusのRSSを見る。あるいはtopで
SHR項目を確認
VMWareがクソ重くて殺したくなる時に読むべきもの - いつまでもブタだと思うなよ
1年前 |
固定リンク | 2010年 8月 7日 |
