VMware vSphere での VM パフォヌマンス分析。 パヌト 2: 蚘憶

VMware vSphere での VM パフォヌマンス分析。 パヌト 2: 蚘憶

パヌト 1. CPU に぀いお

この蚘事では、vSphere のランダム アクセス メモリ (RAM) のパフォヌマンス カりンタヌに぀いお説明したす。
メモリの堎合、プロセッサの堎合よりもすべおがより明確になるようです。VM にパフォヌマンスの問題がある堎合、それに気付かないのは困難です。 しかし、それらが珟れた堎合、それらに察凊するこずははるかに困難です。 しかし、たず最初に。

いく぀かの説

仮想マシンの RAM は、VM が実行されおいるサヌバヌのメモリから取埗されたす。 それは非垞に明癜です:)。 サヌバの RAM がすべおの人にずっお十分ではない堎合、ESXi はメモリ再利甚技術を䜿甚しお RAM の消費を最適化したす。 そうしないず、VM オペレヌティング システムが RAM アクセス ゚ラヌでクラッシュしたす。

ESXi でどのテクニックを䜿甚するかは、RAM の負荷に応じお決たりたす。

メモリの状態

ボヌダヌ

掻動

ハむ

minFree の 400%

䞊限に達するず、倧きなメモリ ペヌゞが小さなメモリ ペヌゞに分割されたす (TPS は暙準モヌドで動䜜したす)。

クリア

minFree の 100%

倧きなメモリ ペヌゞが小さなメモリ ペヌゞに分割され、TPS が匷制的に動䜜したす。

゜フト

minFree の 64%

TPS+バルヌン

ハヌド

minFree の 32%

TPS + 圧瞮 + スワップ

ロヌ

minFree の 16%

圧瞮 + スワップ + ブロック

゜ヌス

minFree は、ハむパヌバむザヌが動䜜するために必芁な RAM です。

ESXi 4.1 より前では、minFree はデフォルトで固定されおおり、サヌバヌの RAM の 6% でした (この割合は ESXi の Mem.MinFreePct オプションで倉曎できたす)。 埌のバヌゞョンでは、サヌバヌのメモリ サむズが増加したため、minFree は固定パヌセンテヌゞではなくホスト メモリの量に基づいお蚈算されるようになりたした。

minFree (デフォルト) 倀は次のように蚈算されたす。

minFree 甚に予玄されおいるメモリの割合

メモリ範囲

6%

04GB

4%

412GB

2%

1228GB

1%

メモリ残量

゜ヌス

たずえば、128 GB の RAM を搭茉したサヌバヌの堎合、MinFree 倀は次のようになりたす。
MinFree = 245,76 + 327,68 + 327,68 + 1024 = 1925,12MB = 1,88GB
実際の倀はサヌバヌず RAM に応じお数癟 MB 異なる堎合がありたす。

minFree 甚に予玄されおいるメモリの割合

メモリ範囲

128 GB の䟡倀

6%

04GB

245,76MB

4%

412GB

327,68MB

2%

1228GB

327,68MB

1%

メモリ残量100GB

1024MB

通垞、生産的なスタンドでは、High 状態のみが正垞ずみなされたす。 テストおよび開発ベンチの堎合、クリア/゜フト状態が蚱容される堎合がありたす。 ホスト䞊の RAM が MinFree の 64% 未満の堎合、ホスト䞊で実行されおいる VM には明らかにパフォヌマンスの問題がありたす。

各状態では、VM のパフォヌマンスに実質的に圱響を䞎えない TPS から始たり、スワッピングで終わる特定のメモリ再利甚技術が適甚されたす。 それらに぀いお詳しくお話したす。

透過的ペヌゞ共有 (TPS)。 TPS は、倧たかに蚀えば、サヌバヌ䞊の仮想マシンのメモリ ペヌゞの重耇排陀です。

ESXi は、ペヌゞのハッシュ合蚈を数えお比范するこずによっお仮想マシン RAM の同䞀のペヌゞを探し、重耇したペヌゞを削陀しお、サヌバヌの物理メモリ内の同じペヌゞぞのリンクに眮き換えたす。 その結果、物理メモリの消費量が削枛され、パフォヌマンスをほずんどたたはたったく䜎䞋させるこずなく、メモリのオヌバヌサブスクリプションをある皋床実珟できたす。

VMware vSphere での VM パフォヌマンス分析。 パヌト 2: 蚘憶
゜ヌス

このメカニズムは、4 KB のメモリ ペヌゞ (小さいペヌゞ) でのみ機胜したす。 ハむパヌバむザヌは 2 MB のペヌゞ (倧きなペヌゞ) の重耇排陀を詊みたせん。このサむズの同䞀のペヌゞが芋぀かる可胜性は高くありたせん。

デフォルトでは、ESXi は倧きなペヌゞにメモリを割り圓おたす。 倧きなペヌゞを小さなペヌゞに分割するこずは、High 状態のしきい倀に達するず開始され、Clear 状態に達するず匷制的に行われたす (ハむパヌバむザヌ状態テヌブルを参照)。

ホスト RAM がいっぱいになるのを埅たずに TPS が動䜜を開始するようにするには、ESXi の詳现オプションで倀を蚭定する必芁がありたす。 「Mem.AllocGuestLargePage」 0 に蚭定したす (デフォルトは 1)。 その埌、仮想マシンぞの倧きなメモリ ペヌゞの割り圓おが無効になりたす。

2014 幎 XNUMX 月以降、理論䞊、ある VM から別の VM の RAM ぞのアクセスを蚱可する脆匱性が発芋されたため、ESXi のすべおのリリヌスでは VM 間の TPS がデフォルトで無効になっおいたす。 詳现はこちら。 TPS の脆匱性を悪甚する実際の実装に関する情報は芋぀かりたせんでした。

詳现オプションで制埡される TPS ポリシヌ 「Mem.ShareForceSalting」 ESXi の堎合:
0 - VM 間 TPS。 TPS は、さたざたな VM のペヌゞに察しお機胜したす。
1 – VMX で同じ「sched.mem.pshare.salt」倀を持぀ VM の TPS。
2 (デフォルト) - VM 内 TPS。 TPS は VM 内のペヌゞに察しお機胜したす。

テストベンチでラヌゞ ペヌゞをオフにしお、Inter-VM TPS をオンにするこずは間違いなく合理的です。 同皮のVMを倚数搭茉するスタンドにも䜿甚できたす。 たずえば、VDI を備えたスタンドでは、物理メモリの節玄が数十パヌセントに達する可胜性がありたす。

蚘憶が膚らむ。 バルヌニングは、VM オペレヌティング システムにずっお、TPS ほど無害で透過的な技術ではなくなりたした。 ただし、適切なアプリケヌションを䜿甚すれば、Ballooning を䜿甚しお䜜業するこずもできたす。

Vmware Tools ずずもに、Balloon Driver (別名 vmmemctl) ず呌ばれる特別なドラむバヌが VM にむンストヌルされたす。 ハむパヌバむザヌが物理メモリを䜿い果たし始め、゜フト状態になるず、ESXi はこのバルヌン ドラむバを通じお未䜿甚の RAM を再利甚するように VM に芁求したす。 次に、ドラむバヌはオペレヌティング システム レベルで動䜜し、そこに空きメモリを芁求したす。 ハむパヌバむザヌは、Balloon Driver が物理メモリのどのペヌゞを占有しおいるかを確認し、仮想マシンからメモリを取埗しおホストに返したす。 OSレベルではBalloon Driverがメモリを占有しおいるため、OSの動䜜に問題はありたせん。 デフォルトでは、Balloon Driver は VM メモリの最倧 65% を占有する可胜性がありたす。

VMware Tools が VM にむンストヌルされおいない堎合、たたはバルヌニングが無効になっおいる堎合 (お勧めしたせんが、 KB:)、ハむパヌバむザヌは、より厳栌なメモリ削陀手法に盎ちに切り替えたす。 結論: VMware Tools が VM 䞊にあるこずを確認しおください。

VMware vSphere での VM パフォヌマンス分析。 パヌト 2: 蚘憶
OSからVMware Tools経由でBalloon Driverの動䜜確認が可胜.

メモリの圧瞮。 この手法は、ESXi がハヌド状態に達したずきに䜿甚されたす。 名前が瀺すように、ESXi は RAM の 4KB ペヌゞを 2KB に瞮小し、サヌバヌの物理メモリ䞊のスペヌスを解攟しようずしたす。 この手法では、最初にペヌゞを解凍する必芁があるため、VM RAM ペヌゞのコンテンツぞのアクセス時間が倧幅に増加したす。 すべおのペヌゞを圧瞮できない堎合があり、プロセス自䜓に時間がかかりたす。 したがっお、この手法は実際にはあたり効果的ではありたせん。

メモリの亀換。 短いメモリ圧瞮フェヌズの埌、ESXi はほが必然的に (VM が他のホストに移動しおいない堎合、たたは電源がオフになっおいない堎合)、スワッピングに切り替わりたす。 たた、メモリがほずんど残っおいない堎合 (䜎状態)、ハむパヌバむザは VM ぞのメモリ ペヌゞの割り圓おも停止するため、VM のゲスト OS で問題が発生する可胜性がありたす。

スワッピングの仕組みは次のずおりです。 仮想マシンをオンにするず、.vswp 拡匵子を持぀ファむルが仮想マシン甚に䜜成されたす。 これは、VM の予玄されおいない RAM ず同じサむズです。぀たり、構成されたメモリず予玄されたメモリの差です。 スワッピングの実行䞭、ESXi は仮想マシンのメモリ ペヌゞをこのファむルにアンロヌドし、サヌバの物理メモリの代わりにそのファむルの操䜜を開始したす。 もちろん、そのような「動䜜可胜な」メモリは、たずえ .vswp が高速ストレヌゞ䞊にあったずしおも、実際のメモリよりも数桁遅いです。

バルヌニングずは異なり、スワッピングでは、未䜿甚のペヌゞが VM から取埗されるず、VM 内の OS たたはアプリケヌションによっおアクティブに䜿甚されおいるペヌゞをディスクに移動できたす。 その結果、VM のパフォヌマンスがフリヌズ点たで䜎䞋したす。 VM は正匏に動䜜し、少なくずも OS から適切に無効にするこずができたす。 蟛抱匷いなら😉

VM がスワップに移行した堎合、これは異垞な状況であるため、可胜であれば回避するのが最善です。

䞻芁な VM メモリ パフォヌマンス カりンタヌ

それで本題に入りたした。 VM のメモリの状態を監芖するために、次のカりンタヌがありたす。

アクティブ — 前回の枬定期間に VM がアクセスした RAM の量 (KB) を瀺したす。

䜿甚法 - アクティブず同じですが、VM の構成された RAM の割合ずしお衚されたす。 次の匏を䜿甚しお蚈算されたす: アクティブ ÷ 仮想マシンの構成メモリ サむズ。
高䜿甚率ずアクティブは、それぞれ VM のパフォヌマンスの問題を瀺すものではありたせん。 VM がメモリを積極的に䜿甚する (少なくずもアクセスできる) 堎合、これはメモリが䞍足しおいるこずを意味するものではありたせん。 むしろ、これは OS で䜕が起こっおいるかを確認する機䌚です。
VM には暙準のメモリ䜿甚量アラヌムがありたす。

VMware vSphere での VM パフォヌマンス分析。 パヌト 2: 蚘憶

共有 - TPS を䜿甚しお重耇排陀された VM RAM の量 (VM 内たたは VM 間)。

付䞎 - VM に割り圓おられた物理ホスト メモリの量 (KB)。 共有も含たれたす。

消費された (蚱可 - 共有) - VM がホストから消費する物理メモリの量 (KB)。 共有は含たれたせん。

VM メモリの䞀郚がホストの物理メモリからではなくスワップ ファむルから䞎えられる堎合、たたはメモリがバルヌン ドラむバヌを通じお VM から取埗される堎合、この量は付䞎および消費では考慮されたせん。
付䞎倀ず消費倀が高いのは完党に正垞です。 オペレヌティング システムは埐々にハむパヌバむザヌからメモリを奪い、返さなくなりたす。 アクティブに実行されおいる VM では、時間の経過ずずもに、これらのカりンタヌの倀が構成されたメモリの量に近づき、そこに留たりたす。

蚭定䜜業無し — VM RAM の量 (KB)。れロが含たれたす。 このようなメモリはハむパヌバむザヌによっお空きずみなされ、他の仮想マシンに割り圓おるこずができたす。 ゲスト OS がれロ化されたメモリに䜕かを曞き蟌むず、消費状態になり、元に戻りたせん。

予玄枈みオヌバヌヘッド — VM 操䜜甚にハむパヌバむザヌによっお予玄された VM RAM の量 (KB)。 これは少量ですが、ホスト䞊で䜿甚できる必芁がありたす。そうでない堎合、VM は起動したせん。

バルヌン — Balloon Driver を䜿甚しお VM から占有された RAM の量 (KB)。

圧瞮された - 圧瞮された RAM の量 (KB)。

スワップ - サヌバヌ䞊の物理メモリ䞍足によりディスクに移動された RAM の量 (KB)。
バルヌンおよびその他のメモリ再利甚技術のカりンタヌはれロです。

150 GB の RAM を搭茉し、正垞に動䜜しおいる VM のメモリ カりンタヌのグラフは次のようになりたす。

VMware vSphere での VM パフォヌマンス分析。 パヌト 2: 蚘憶

以䞋のグラフでは、VM に明らかな問題がありたす。 グラフの䞋で、この VM では、RAM を操䜜するための説明されたすべおのテクニックが䜿甚されたこずがわかりたす。 この VM のバルヌンは、消費されたバルヌンよりもはるかに倧きくなりたす。 実際、VM は生きおいるずいうよりも死んでいる状態です。

VMware vSphere での VM パフォヌマンス分析。 パヌト 2: 蚘憶

ESXTOP

CPU ず同様に、ホスト䞊の状況やそのダむナミクスを最倧 2 秒間隔で迅速に評䟡したい堎合は、ESXTOP を䜿甚する必芁がありたす。

Memory による ESXTOP 画面は「m」キヌで呌び出され、次のようになりたす (フィヌルド B、D、H、J、K、L、O が遞択されおいたす)。

VMware vSphere での VM パフォヌマンス分析。 パヌト 2: 蚘憶

以䞋のパラメヌタが興味深いでしょう。

平均オヌバヌコミットメモリ - 1、5、15 分間のホスト䞊のメモリ オヌバヌサブスクリプションの平均倀。 れロを超えおいる堎合は、䜕が起こっおいるかを確認する機䌚ですが、必ずしも問題を瀺しおいるわけではありたせん。

ラむンで PMEM/MB О VMKMEM/MB - サヌバヌの物理メモリず VMkernel が䜿甚できるメモリに関する情報。 ここで興味深いこずに、minfree の倀 (MB 単䜍)、メモリ内のホストの状態 (この堎合は高) がわかりたす。

列をなしお NUMA/MB NUMA ノヌド (゜ケット) ごずの RAM の分垃を確認できたす。 この䟋では、分垃は䞍均䞀であり、原理的にはあたり良奜ではありたせん。

以䞋は、メモリ再利甚技術に関する䞀般的なサヌバヌ統蚈です。

PSARE/MB は TPS 統蚈です。

スワップ/MB — スワップ䜿甚統蚈。

ZIP/MB — メモリペヌゞ圧瞮統蚈。

MEMCTL/MB — バルヌンドラむバヌの䜿甚統蚈。

個々の VM に぀いおは、次の情報が必芁ずなる堎合がありたす。 芖聎者を混乱させないように、VM 名は隠したした :)。 ESXTOP メトリックが vSphere のカりンタに類䌌しおいる堎合は、察応するカりンタを瀺したす。

メムズ — VM 䞊に構成されたメモリの量 (MB)。
MEMSZ = GRANT + MCTLSZ + SWCUR + 未凊理。

GRANT — MB に付䞎されたした。

TCHD — MBで掻躍䞭。

MCTL? - Balloon Driver が VM にむンストヌルされおいるかどうか。

MCTLSZ — MB ぞのバルヌン。

MCTLGT — ESXi がバルヌン ドラむバヌ (Memctl タヌゲット) 経由で VM から取埗したい RAM の量 (MB)。

MCTLMAX - ESXi がバルヌン ドラむバヌを通じお VM から取埗できる RAM の最倧量 (MB)。

SWCUR — スワップ ファむルから VM に割り圓おられおいる珟圚の RAM 量 (MB)。

S.W.G.T. - ESXi がスワップ ファむル (スワップ タヌゲット) から VM に提䟛したい RAM の量 (MB)。

たた、ESXTOP を通じお、VM の NUMA トポロゞに関する詳现情報を確認できたす。 これを行うには、フィヌルド D、G を遞択したす。

VMware vSphere での VM パフォヌマンス分析。 パヌト 2: 蚘憶

NHN – VM が配眮されおいる NUMA ノヌド。 ここでは、XNUMX ぀の NUMA ノヌドに収たらないワむド vm にすぐに気づくこずができたす。

NRMEM - VM がリモヌト NUMA ノヌドから取埗するメモリのメガバむト数。

NLMEM - VM がロヌカル NUMA ノヌドから取埗するメモリのメガバむト数。

N%L – ロヌカル NUMA ノヌド䞊の VM メモリの割合 (80% 未満の堎合、パフォヌマンスの問題が発生する可胜性がありたす)。

ハむパヌバむザヌ䞊のメモリ

ハむパヌバむザヌの CPU カりンタヌが通垞は特に重芁ではない堎合、メモリに関しおは状況が逆転したす。 VM 䞊の高いメモリ䜿甚量が必ずしもパフォヌマンスの問題を瀺しおいるわけではありたせんが、ハむパヌバむザヌ䞊の高いメモリ䜿甚量はメモリ管理手法を匕き起こし、VM のパフォヌマンス䞊の問題を匕き起こしたす。 VM がスワップ状態にならないように、ホスト メモリ䜿甚量アラヌムを監芖する必芁がありたす。

VMware vSphere での VM パフォヌマンス分析。 パヌト 2: 蚘憶

VMware vSphere での VM パフォヌマンス分析。 パヌト 2: 蚘憶

スワップを解陀する

VM がスワップ状態にある堎合、そのパフォヌマンスは倧幅に䜎䞋したす。 バルヌニングず圧瞮の痕跡は、ホストに空き RAM が珟れるずすぐに消えたすが、仮想マシンはスワップからサヌバヌ RAM に急いで戻りたせん。
ESXi 6.0 より前は、VM をスワップから解陀する唯䞀の信頌できる迅速な方法は、再起動するこずでした (より正確には、コンテナの電源をオフ/オンにしたす)。 ESXi 6.0 以降、完党に公匏ではありたせんが、スワップから VM を削陀する有効か぀信頌できる方法が登堎したした。 あるカンファレンスで、CPU スケゞュヌラを担圓する VMware ゚ンゞニアの XNUMX 人ず話すこずができたした。 圌は、この方法が非垞に効果的で安党であるこずを確認したした。 私たちの経隓䞊、これでも問題はありたせんでした。

スワップから VM を削陀するための実際のコマンド 説明した ダンカン・゚ッピング。 詳现な説明は繰り返さないので、䜿甚䟋を瀺すだけです。 スクリヌンショットでわかるように、指定されたコマンドの実行埌しばらくするず、VM 䞊でスワップが消えたす。

VMware vSphere での VM パフォヌマンス分析。 パヌト 2: 蚘憶

ESXi メモリ管理のヒント

最埌に、RAM による VM パフォヌマンスの問題を回避するのに圹立぀ヒントをいく぀か玹介したす。

  • 実皌働クラスタヌでのメモリヌのオヌバヌサブスクリプションを回避したす。 DRS (および管理者) が操䜜できる䜙地があり、移行䞭に VM がスワップ状態にならないように、クラスタヌ内に垞に玄 20  30% の空きメモリがあるこずが望たしいです。 たた、耐障害性のためのマヌゞンも忘れないでください。 XNUMX 台のサヌバヌに障害が発生し、HA を䜿甚しお VM が再起動されるず、䞀郚のマシンもスワップ状態になるのは䞍快です。
  • 高床に統合されたむンフラストラクチャでは、ホスト メモリの半分を超える VM を䜜成しないようにしおください。 これにより、DRS が問題なくクラスタ サヌバヌ党䜓に仮想マシンを分散できるようになりたす。 もちろん、このルヌルは普遍的ではありたせん:)。
  • ホストのメモリ䜿甚量アラヌムを監芖したす。
  • VM に VMware Tools を忘れずにむンストヌルし、バルヌニングをオフにしないでください。
  • VDI およびテスト環境では、Inter-VM TPS を有効にし、ラヌゞ ペヌゞを無効にするこずを怜蚎しおください。
  • VM でパフォヌマンスの問題が発生しおいる堎合は、リモヌト NUMA ノヌドのメモリを䜿甚しおいるかどうかを確認しおください。
  • できるだけ早く VM をスワップから解攟しおください。 特に、VM がスワップ状態にある堎合、明らかな理由により、ストレヌゞ システムに圱響が生じたす。

RAM に぀いおは以䞊です。 さらに詳しく知りたい方は以䞋の関連蚘事をどうぞ。 次の蚘事は storadzh に぀いお取り䞊げたす。

䟿利なリンク集http://www.yellow-bricks.com/2015/03/02/what-happens-at-which-vsphere-memory-state/
http://www.yellow-bricks.com/2013/06/14/how-does-mem-minfreepct-work-with-vsphere-5-0-and-up/
https://www.vladan.fr/vmware-transparent-page-sharing-tps-explained/
http://www.yellow-bricks.com/2016/06/02/memory-pages-swapped-can-unswap/
https://kb.vmware.com/s/article/1002586
https://www.vladan.fr/what-is-vmware-memory-ballooning/
https://kb.vmware.com/s/article/2080735
https://kb.vmware.com/s/article/2017642
https://labs.vmware.com/vmtj/vmware-esx-memory-resource-management-swap
https://blogs.vmware.com/vsphere/2013/10/understanding-vsphere-active-memory.html
https://www.vmware.com/support/developer/converter-sdk/conv51_apireference/memory_counters.html
https://docs.vmware.com/en/VMware-vSphere/6.5/vsphere-esxi-vcenter-server-65-monitoring-performance-guide.pdf

出所 habr.com

コメントを远加したす