VMware が頻繁にディスクアクセスして OS 全体が固まる件
こんな現象が発生するようになったのも XP + VMware 5 → Vista + VMware 6ベータ にしてからなのですが、物理メモリもたっぷりのっていて空きメモリもある状態にもかかわらず、VM を起ち上げていると頻繁にディスクアクセスが発生してマシンが数分間フリーズしたかのごとく固まる現象が続いています。
以前物理メモリが 2GB だった時は、まぁ〜しょうがないか〜と思っていたのですが今は 3GB のっていて(ホントは4GBだけど OS が 32bit なのでうまく認識しない・・・)コレは流石にキツイ。ってことで原因を調べてみました。
まずはリソースモニタを起ち上げて VM を使ってディスクアクセスが発生するのを待つ。すぐに発生した。
どうやら VMware の .vmem ってのが頻繁にディスクアクセス(read)を行っている模様。もう少し様子を見てみる。
こんどは頻繁にディスクアクセス(write)が発生している。Vista のリソースモニタではメモリのハードフォルトつまりスワップの発生をモニタすることができる。同じくこの .vmem が原因でなぜかスワップまで発生していることが確認できました。
ぐぐったらすぐに情報が出てきました。2ch のVMware の質問に物凄い勢いで答えるスレ に情報がありました。スレ抜粋は最後に引用しておくとして、こんな感じで VM の環境を設定してあげるとよいみたいです。
VMware で仮想メモリを使わず実メモリを使う方法
1. 仮想マシンの Advanced オプションで disable memory page timing にチェックをいれる。2. 仮想マシンの環境設定ファイル .vmx に mainMem.useNamedFile = "FALSE" の1行を加える。
これだけです。設定変更前と後で .vmem が消えているかどう違うか確認しました。まずはこれが変更前。
設定変更後はちゃんと .vmem が生成されないくなっています。
リソースモニタでメモリの使用状況をみるとちゃんと vmware がワーキングセットとしてメモリを確保してるのがわかります。
これで妙なディスクアクセスが激減して快適な開発環境が戻りました! あーつかれた。
追記:そうそう、vista のスリープから復帰した後にこの VMware の不具合が発生することが多い気がします。
最後に 2ch のスレ引用。過去ログで消えてしまう前に備忘録として...
85 :Be名無しさん :2006/09/07(木) 11:56:11 GSXServerからVirtualServerにバージョンアップしたらやたらと遅くなって しまったんですが、何か原因わかる方いらっしゃいますでしょうか。 バージョン : VMWareServer 1.0.1 ハードウェア : Opteron Dualcore × 2 OS : WindowsServer2003 Enterprise Edition メモリ : 16GB ゲストOS : 8台(WindowsXP4台、Windows2003Server4台) ゲストOSを起動しVMWareConsoleから確認すると各ゲストOSが起動後も頻繁に HDDへアクセスしているようで、これが原因かと思います。 全ゲストOSが何らかの動作でHDDへアクセスしていますがメモリは1GB〜2GB を割り当てているためゲストOS内のメモリ不足ではないようです。 ホストOSのタスクマネージャでメモリの使用量をモニタしていると以下の ような動作をしていました。 1.ホストOSが起動(ゲストはまだ起動していない状態) > 500MB程度 2.全ゲストOSが起動 > 14GBほどに増える ちなみにGSXServerの時は物理メモリ内におさまっていたのメモリは 足りていると思います。 この状態ではまだHDDへのアクセスは頻繁ではないです。 3.ゲストOSが起動して数分立つとHDDへのアクセスが始まる。 4つ5つ目のゲストが起動した辺りでやたらHDDへのアクセスが増えます。 ゲストOS内のタスクマネージャを見ると負荷がほとんどないのでホスト OSからのアクセスのようです。 4.ホストOSのタスクマネージャを再度確認するとメモリの使用量が徐々 に減少していき、最終的に3.5GBほどになる。 このことからゲストOSで使用していない余分なメモリを開放している のではないかと推測しています。 86 :85:2006/09/07(木) 11:58:18 続き・・・ ・ホストのメモリ割り当て Home>ConfigureHost>Memory内で 「Reserved Memory」>「14745MB」 「How should the system allocate memory for virtual machine.」 >「Fit virtual machine memory into reserved host RAM」変更後再起動も行いました。 ・起動アカウント Virtual Machine Setting > Startup/Shutdown This User > Administrator/PW ・その他 Virtual Machine Setting > Advanced >Settings ここはすべてチェックをはずしています。 別の人に聞いてみたところホストのメモリが足りない際にゲストOSの空き メモリを使うということを聞きました。 なので「Reserved Memory」の容量を若干減らしてホストOSで使えるメモリ を増やしてみたのですがこちらも変化がありません。 起動後、HDDのアクセスが始まるとホストOSのメモリ使用量(PF容量)が徐々に 少なくなっていきHDDへのアクセスが止まるとメモリの使用量に大きな変化が なくなります。この状態なるとやっと実用に耐える速度で動き始めます。 こうなるまで起動してから約3時間。 GSXServerのころはホストOSのメモリ内にゲストOSに割り当てたメモリが常駐していました。 (タスクマネージャのグラフを見ると目盛りの使用量が10数GBで横ばいになっている状態) しかし現在はゲストOSに割り当てたメモリが何故か解放され、その結果HDDからの読み こみが増えて動作が遅くなっているという状態だと思われます。 (タスクマネージャのグラフを見ると目盛りの使用量が10数GB→3GB強へ下降する形) より多くのゲストをというのならこちらの方がいいんでしょうが、メインメモリ内 を専有させてパフォーマンス優先で使いたいのですが・・・ 長くてすいまっしぇん。 88 :85:2006/09/08(金) 05:41:27 自己レスです。 C:\Documents and Settings\All Users\Application Data\VMware\VMware Server\config.ini 内に mainMem.useNamedFile = "FALSE" としてVMEMを使わないようにしたら直りました。 VerUp前のGSXの時のconfig.iniも取ってあるんですが、確認したら mainMem.useNamedFile の記述がありません。ということは GSXServer・・・・デフォルトでVMEM使わない VMWareServer ・・デフォルトでVMEM使う という設定なのかな? 140 :Be名無しさん :2006/10/18(水) 20:59:42 >>88 Vmware Server 1.01 を使っています。 クリーンインスコした2003 R2 64bit版に入れました。 やはり、ゲストが使用するvmware-vmxプロセスのメモリ消費量が 徐々に減っていき、ホストのHDDが、ホスト、ゲストともに アクセスがないときでもやたらカリカリいうので気にかかっていた のですが、デフォルトではvmemを使うっぽいです。 Workstation 4.5 でテストしている環境ではゲストはメモリを 開放せず、320MBのRAMならホスト上で10%増しぐらいの350MB程度の メモリを消費しつづけます。 Serverではこれが徐々に減っていきます。 十分なメモリがある環境ではこれがかえってうざいのです。 設定ファイルを直接書き換えなくても、GUI上から設定できる オプションならわかりやすかったのですが、これにしばらく悩まされ ました。 144 :Be名無しさん :2006/10/19(木) 12:36:52 140です mainMem.useNamedFile = "FALSE" だけでは仮想マシンが物理メモリを開放 してしまうようで、仮想マシンのAdvancedオプションで disable memory page timing にチェックをいれるとよいみたいです。 このオプションが無効だと、 vmemを使わい場合でも、ホスト側のpagefile.sys にスワップしてしまうの でしょうか? タスクマネージャでみると コミットチャージの合計量は多いのに、メモリ使用量はすくなかったりします。
コメントやシェアをお願いします!
drk
Taiyou-neko さん> ご指摘有り難うございます!表示されているメッセージをしっかり読んでいない証拠ですね。(^^ゞ
Taiyou-neko
> 1. 仮想マシンの Advanced オプションで disable memory page timing にチェックをいれる。
Trimming ですよね(;´▽`A``