vSphere Client[パフォーマンス] タブに、メモリ使用量の分析に使用できる、いくつかのメトリックが表示されます。

これらのメモリ メトリックには、ゲストの物理メモリを測定するものと、マシン メモリを測定するものがあります。たとえば、パフォーマンス メトリックを使用して検査できるメモリ使用量の 2 つのタイプは、ゲスト物理メモリとマシン メモリです。ゲスト物理メモリを測定するには、与えられたメモリ メトリック (仮想マシンの場合) または共有メモリ (ホストの場合) を使用します。しかし、マシン メモリを測定するには、消費されたメモリ (仮想マシンの場合) または一般共有メモリ (ホストの場合) を使用します。これらのメトリックが何を測定し、これらのメトリックをどのように解釈すべきかを知るためには、これらのタイプのメモリ使用量について、概念上の違いを理解することが重要です。

VMkernel はゲスト物理メモリをマシン メモリにマッピングしますが、必ずしも常に 1 対 1 でマッピングされるわけではありません。ゲスト物理メモリの複数の領域が、マシン メモリの同じ領域にマッピングされることもあれば(メモリ共有の場合)、ゲスト物理メモリの特定の領域がマシン メモリにマッピングされないこともあります(VMkernel がゲスト物理メモリをスワップ アウトするかバルーニングする場合)。そうした状況では、個々の仮想マシンやホストについてのゲスト物理メモリの使用量およびマシン メモリの使用量の計算が異なります。

次図の例を考えてみましょう。これは、1 つのホストで実行中の 2 つの仮想マシンを示しています。各ブロックは 4KB のメモリを表しており、それぞれの色または文字は、ブロック上の異なるデータ セットを表しています。

図 1. メモリ使用量の例

この図は、2 台の仮想マシンのメモリ使用量の例を示しています。

仮想マシンのパフォーマンス メトリックは、次のようにして判別できます。

  • 仮想マシン 1 の与えられたメモリ (マシン メモリにマッピングされたゲスト物理メモリの量) は、マシン メモリへ向かう矢印を持つ、仮想マシン 1 のゲスト物理メモリのブロック数をカウントし、それに 4KB を乗算します。矢印を持つブロックは 5 つあるため、与えられたメモリは 20KB です。
  • 使用されたメモリは、仮想マシンに割り当てられたマシン メモリの量で、共有メモリから差し引かれる量を示しています。最初に、仮想マシン 1 のゲスト物理メモリからの矢印を持つ、マシン メモリ内のブロックの数をカウントします。そのようなブロックは 3 つありますが、1 ブロックは仮想マシン 2 と共有されています。したがって、2 つの完全なブロックと、3 番目のブロックの半分をカウントし、それに 4KB を乗算し、合計 10KB が消費されたメモリになります。
これら 2 つのメトリックの重要な違いは、与えられたメモリがゲスト物理メモリ レベルで矢印を持つブロックの数をカウントし、使用されたメモリはマシン メモリ レベルで矢印を持つブロックの数をカウントすることです。ブロックの数はメモリ共有のために 2 つのレベル間で異なり、そのため与えられたメモリと使用されたメモリに違いが出ます。メモリが共有またはその他の解放の技法によって節約されています。
ホストの共有メモリおよび一般共有メモリの判別でも、同様な結果が得られます。
  • ホストの共有メモリは、各仮想マシンの共有メモリの合計です。共有メモリを計算するには、各仮想マシンのゲスト物理メモリに注目し、マシン メモリ ブロックを指す矢印を持ち、それ自体も複数の矢印で指されているブロックの数を数えます。例では、そのようなブロックが 6 つあるので、このホストの共有メモリは 24KB です。
  • 一般共有メモリは、複数の仮想マシンによって共有されているマシン メモリの量です。一般メモリを判別するには、マシン メモリに注目し、複数の矢印で指されているブロックの数をカウントします。そのようなブロックは 3 つあるので、一般共有メモリは 12KB です。
共有メモリは、ゲスト物理メモリに関するもので、矢印の起点に注目します。一方、一般共有メモリはマシン メモリに関するもので、矢印の宛先に注目します。

ゲスト物理メモリとマシン メモリを測定するメモリ メトリックは、矛盾して見える場合があります。これらのメトリックは、実際には仮想マシンのメモリ使用量の異なる局面を測定しています。これらのメトリックの違いを理解することにより、これらのメトリックをより上手に利用して、パフォーマンスの問題を診断できます。