vSphere 5.0のメモリテクノロジー

habrahabrでは、さまざまなハイパーバイザーで使用されるメモリを使用した作業の技術がすでに繰り返し議論されています。 多くの場合、これらのテクノロジーは、一般的な名前-メモリのオーバーコミットメントで結合されます。

通常、メモリオーバーコミットメント2を適用することで達成しようとする目標:

この小さなトピックでは、他のHabraユーザーによって既にかなり詳しく説明されているテクノロジーの簡単な思い出を提供し、vSphere 5.0ハイパーバイザーに実装されている比較的新しいテクノロジーについて詳しく説明します。



透過的なページ共有(TPS)



多くの仮想マシンが実行されている場合、それらの一部には同一のメモリページが含まれる場合があります。 ページ共有を使用すると、ハイパーバイザーの物理メモリにそのようなページを1つのインスタンスのみで保持できます。 その結果、たとえば2つの仮想マシン(同様のコードを実行する)でメモリページが使用される場合、どちらも1つのメモリページのみで機能します。 つまり、ページは重複排除されます。 メソッドは、使用済みの各ページのハッシュとハッシュテーブルでの比較を計算するために使用されます。 一致した場合、ビットごとの比較プロセスが追加で開始されます。 このような共有ページは読み取り専用です。 マシンの1つがページのコンテンツを変更する必要がある場合、プライベートコピーが開始され、このページが置き換えられます。 再マッピングが許可されるのは、再マッピング後のみです。 そのため、TPSの通常のパフォーマンスのわずかな低下(1%未満)は、記録の代わりにこのような置換を再生する手順に正確にあります。 TPSは有効であり、デフォルトでは4KBのゲストメモリページで機能します。 2MBページの場合はオフです。



バルーニング



ホストの空きメモリの値が減少し、4%のしきい値を超えたときにオンになります。 すでに選択されているが使用されていないメモリページを置き換えることができます。 最良の場合、これらはオペレーティングシステムが通常「空き」リストにマークするページです(OSは、大まかに言って、ゲスト物理メモリのページを2つのリストに配置します-「割り当て」と「空き」)。 VMware Toolsバンドルのドライバーである擬似デバイスvmmemctlから、OSは必要な量のメモリを割り当てる要求を受け取り、受け取った後、このボリュームのページはハイパーバイザーに空きとして報告されます。



メモリ圧縮



この技術は、メモリのページを圧縮することです。 ホストの空きメモリの値が2%のしきい値を超えると、スワップ仮想マシン(OSスワップと混同しないでください)とともにアクティブになります。

この方法は、各仮想マシンに専用のメモリ領域を作成することです。圧縮キャッシュは、圧縮されたメモリページを含むように設計されています。 この領域は最初は空で、蓄積するにつれて大きくなります。 メモリページのスワップが決定されると、まず圧縮の分析が行われます。 レベルが50%を超える場合、ページは圧縮され、圧縮キャッシュに配置されます。



したがって、ページはすぐにスワップに陥るのではなく(図a)、ホストの物理メモリ上にありますが、圧縮された形式(図b)のままです。 したがって、少なくとも2倍のメモリがアクセスの犠牲で解放されます。

このページが必要な場合、キャッシュから解凍され、ゲストメモリで再び使用可能になります。 これにより、スワップに比べてページの取得時間が大幅に短縮されます。

圧縮キャッシュボリュームのデフォルトサイズは、構成された仮想マシンメモリの10%です。 キャッシュがいっぱいになると、長時間アクセスされていないページが圧縮解除によって取得され、スワップに陥ります。 圧縮キャッシュページから、圧縮された形式のスワップに移動されることはありません。

圧縮キャッシュの下で使用されているメモリ領域でも解放する必要がある場合(メモリが極端に不足している場合)、すべての圧縮ページが抽出され、スワップに陥り、領域が解放されます。

圧縮キャッシュに使用されるメモリの量は、仮想マシンのゲストメモリに割り当てられることに注意することも重要です。 つまり、このボリュームは、オーバーヘッド用のメモリとして個別に割り当てられません。 したがって、最適な最大圧縮キャッシュサイズを維持することが重要です。 サイズが小さすぎると、メモリの多くの圧縮ページがスワップに陥り、メモリ圧縮の利点が大幅に平準化されます。 値が大きすぎる場合、キャッシュには長時間要求されない可能性があるページが多く含まれすぎ、肥大化したキャッシュは単にゲストメモリを浪費します。 テクノロジーの動作は、Mem.MemZipで始まる名前の高度なパラメーターによって管理されます。 たとえば、キャッシュサイズは主にMem.MemZipMaxPcパラメーターによって制御されます。



ハイパーバイザーの交換



TPS、バルーニング、メモリ圧縮を使用する場合、ハイパーバイザーはホストの空きメモリ制限を2%超えることができません。ESXiはスワッピング仮想マシンを積極的に使用します(仮想マシンの起動時にページがディスクストレージに作成された.swapファイルにドロップアウトし始めます)。

原則として、仮想マシンのスワップを単独で検討する場合、特定の時間に特定のメモリ値の解放を保証することができますが、次のような重大な欠点があります。

したがって、ESXiは次の3つの方法を使用して、上記の欠点の影響を軽減します。

VMwareからのいくつかのテスト結果



メモリ圧縮を有効にした場合としない場合のSharepoint構成のパフォーマンスの低下を比較します。



水平方向では、ハイパーバイザーが使用できる物理メモリの量が徐々に減少しました。 そして、左側に垂直に、パフォーマンスの低下が見られます。



このテストでは、 Swingbenchの負荷パフォーマンスの低下も同様に比較されました。





また、このテストでは、SSDを使用した場合と使用しない場合のホストキャッシュを使用したパフォーマンスの低下を比較します。



残念ながら、それは残っており、ホストキャッシュなしのテストでどのタイプのディスクが使用されたかは不明です。



さらに、上記のすべてのチャートにスワップ値が表示されているため、これらのテストにも含まれていたTPSおよびバルーニングテクノロジーのパフォーマンスを簡単に追跡できます。 TPSおよびバルーニングテクノロジーの詳細なテストについては、以下のリンクを参照してください。



このトピックでは、ESXi 5.0で宣言されているメモリ障害分離機能についても覚えておく必要があると思います。 ハイパーバイザーは、不良メモリ領域を検出し、それらを分離できます。 そのため、ゲストメモリのページで不良領域が見つかった場合、仮想マシンは再起動します。 ただし、ESXiは、そのような領域がハイパーバイザーコードで占有されている場合にのみ紫色の画面にドロップします。



材料別:

www.petri.co.il/memory-compression-in-vsphere-4-1.htm

www.vmware.com/pdf/Perf_Best_Practices_vSphere5.0.pdf

www.vmware.com/files/pdf/mem_mgmt_perf_vsphere5.pdf

www.vmware.com/support/vsphere5/doc/vsphere-esx-vcenter-server-50-new-features.html



All Articles