メモリの再利用方法

VMwareのドキュメントを探しても明示的に使用する順序が記載されている箇所を見つけられなかったので、研修ドキュメントより転記。

  • VMkernel には、ESXiホストでメモリを再利用するためのさまざまな方法があります。それぞれの方法について、VMkernelが使用する順に説明します。
  • 最初の方法は、物理メモリページを効率的に使用する方法で透過的なメモリページ共有(TPS)と呼ばれます。透過的なページ共有を使用すると、同一内容のページは1回のみ保存できます。複数の仮想マシンのワークロードは、物理マシン上で同様のワークロードを実行する場合と比べて、多くの場合、消費するメモリが少なくなります。TPSを使用することでホストで、より高度なメモリのオーバーコミットメントが可能になります。
  • メモリの競合が発生すると、VMkernelは、仮想マシンのアイドル状態のメモリや、割り当てられていても未使用のメモリの再利用を検討します。VMkernelは、通常VMwareToolsとともにインストールされるvmmemctlドライバを仕様して、アイドル状態の仮想マシンからメモリを開放し、メモリをより多く必要としている仮想マシンへ割り当てます。vmmemctlドライバは、「メモリバルーンドライバ」とも呼ばれます。
  • 次の方法は、メモリを圧縮する方法で、VMkernelがホストの物理メモリを再利用する場合に仕様します。これは、競合の発生率が高い場合に、仮想マシンスワップファイルにメモリがスワップアウトされるのを防ぐため、ページを圧縮して一部のメモリの再利用を試します。
  • 最後の方法は、ディスクに仮想マシンのメモリをページアウトする方法でが、あまり望まし方法ではありません。現在のシステムの需要を満たすための迅速なメモリの再利用が、ほかの方法では一時的に不可能な場合に、ディスクへのスワップが使用されます。この方法を使用するとパフォーマンスが著しく低下します。

ということで、まとめると次の順序。

  1. 透過的なメモリページ共有
  2. メモリバルーン
  3. メモリの圧縮
  4. メモリのページアウト