プロジェクト

全般

プロフィール

VMwareESXi 6.x Windows10系OSがvmemファイルに頻繁にアクセスして遅い

※このメッセージは体感的な記事なので推測が多く含まれます。

推測

VMwareESXi 6.x Windows10系OSがvmemファイルに頻繁にアクセスして遅いと思われる。
最初はVM相応に動作しているが、長時間の運用やスナップショットの作成を行うと
起動時にWindowsのバックグラウンドサービス起動がタイムアウトしてしまう規模で
速度が低下してしまう。

仮想マシンのメモリ内容は他の仮想マシンのメモリ利用を優先させるためや
スリープなどに備えて、スワップとは別に利用率の低いメモリ領域をデータストア上
のvmemファイルに記録されるようであるが、頻繁にメモリアクセスを行うシステム
ではその処理がボトルネックになってしまい、異常なパフォーマンス低下を引き起こ
してしまうと考えられる。

解決策

仮想メモリ内容をvmemファイルに書き起こさないようにし、常に物理メモリ上に
置くようにする。

変更手順

仮想マシンをシャットダウンさせた状態でvCenterの仮想マシン設定を開き詳細
パラメータを編集するか、vmxファイルをテキストエディタなどで開き次の設定を
追加する。

mainMem.useNamedFile = "FALSE" 

注意

仮想マシンが使用しているメモリ量のぶん、そのままホストの物理メモリが消費
されるためこれまでvmemファイルに退避されていた分のメモリ量をホストが消費
してしまう可能性がある。

また、事前にvmemファイルにメモリが記録されていないのでスリープやパワーオン
状態でのスナップショットにメモリ内容すべてを書き出すだけの時間がかかるよう
になる。

……とおもわれる(だいじ)

ゲスト側での対策

上記に加えて、ゲスト側でもメモリ内容を頻繁にディスクに書き出す機能があるため、
Windowsサービスから以下のサービスを停止し、手動起動に変更する。

Superfetch
または
Sysmain

上記はアップグレードでSuperfetchからSysmainに名称が変わったというもので
同一のサービスとなる。、OSのバージョンやアップグレードの経緯などによっては
最新のOSにアップグレードされていても名称がSuperfetchのままということもある。
いずれか片方しかないので、見つけたほうを停止すること。