VMwareで新しいシステムを実行していますが、メモリの使用量を理解しようとしています。
VSphereクライアントでは、335,544KBを使用してアクティブであることが示されます。
ただし、Linuxでは3,146,148KBを使用していることが示されています。
root@PFDEV-SVN:~# free -k
total used free shared buffers cached
Mem: 4118636 3146148 972488 0 477216 1268364
-/+ buffers/cache: 1400568 2718068
Swap: 6040400 0 6040400
なぜこれがそんなに違うのですか?私はこれを間違って読んでいますか?
これはUbuntu9.10であり、vmwareツールがインストールされておらず、ESXiサーバーで実行されています。
メモリ管理とアクティブメモリワーキングセットサイズの計算のトピックに関する 詳細なホワイトペーパー があります。
基本的には、ゲストが常に割り当てられているすべてのメモリを使用しているわけではないという事実に要約されます。代わりに、特定の範囲のメモリのみが特定の期間に「アクティブ」と見なされ、物理メモリをオーバーコミットした場合、「非アクティブ」メモリがスワッピングの候補になります。ホスト内のメモリ使用量と大まかに一致させたい場合は、「消費された」メモリを確認する必要があります(複数のVM間で共有されるメモリページによる偏差が発生する可能性があります)。
それらが一致しないことを望むでしょう。仮想化の目的の1つは、多くのOSを1つの物理システムに常駐させることです。ハイパーバイザー(ESXやhyper-vなど)を構築するときに注意することの1つは、オペレーティングシステムが実際に割り当てられたRAMのすべてを使用するわけではないことです。ハイパーバイザーはそれに応じて他のOSで物理RAMを利用できるようにし、利用可能なRAMの量を「オーバーコミット」できるようにします。オーバーコミットの欠点は、各OSが実際に割り当てられたRAMの量を使用する状況に遭遇した場合、パフォーマンスが低下することです。