免責事項:これは英文の記事 「Impact of virtual machine memory and CPU resource limits」の日本語訳です。
記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。
最新情報は英語版の記事で参照してください。
この記事では、仮想マシンのリソース制限がCPUとメモリに与える影響について説明します。
ESXi ホストに余力があるように見える場合でも、仮想マシンのパフォーマンスが低下し、バルーニングや VMkernel スワップが発生します。
VMware vSphere ESXi 7.0
VMware vSphere ESXi 8.0
仮想マシンにおけるCPUとメモリの両方に対するリソース制限は、仮想マシンに対する人為的な上限を設けます。
仮想マシンのメモリ制限が、割り当て(プロビジョニング)メモリより小さい場合、その制限値が 当該 VM に直接割り当て可能な物理メモリの上限として機能します。
ゲスト OS はこの制限を認識せず、割り当てメモリ量に基づいて独自のメモリ管理を最適化します。
制限に達した場合、ゲスト OS は新規ページを要求できますが、VMkernel はそれ以上の物理メモリを消費することを許可せず、リソース逼迫時であるかの様に扱います。
仮想マシンが要求されたメモリを消費できるようにするために、メモリ回収技術が使用されます。
仮想マシンから要求されたページ数によっては、最悪の場合、VMkernelは要求を満たすためにVMkernelスワップに頼ることがあります。
VMkernelはまず、バルーンドライバを拡張してメモリの回収を試みます。これにより、ゲストメモリマネージャはページアウトするページを決定できます。
また、VMkernelはメモリページをスワップアウトする前に、圧縮を試みます。
esxtop を実行し、 MCTLSZ と MCTLTGT 、SWCUR と SWTGT 、CACHEUSD を確認することで、メモリ制限の影響を検証できます 。
esxtop の使用に関する詳細については、メモリパネル を参照してください。
仮想マシンのリソース設定にCPU制限が設定されている場合、仮想マシンは割り当てられたCPUリソースを使い果たすと、物理CPU(pCPU)へのスケジュールが意図的に停止されます。
これはホストのCPU使用率に関わらず発生します。指定された制限は、ゲストOSではなく、仮想マシン全体のCPUリソースに適用されます。
制限が500MHzに設定されている場合、仮想マシンはpCPUから再スケジュールされ、再度スケジュールできるようになるまで待機する必要があります。
そのため、仮想マシンのパフォーマンスが低下する可能性があります。
同じESXiホスト上で多くの仮想マシンにこの制限が設定されている場合、ESXi全体のアクティビティに影響を与える可能性があります。
注 :SMP仮想マシンの場合、すべてのvCPUの合計が指定された制限を超えることはできません。
例えば、4つのvCPUを持つ仮想マシンで1200MHzの制限があり、vCPU間の負荷が均等である場合、vCPUあたりの最大速度は300MHzになります。
esxtop を実行して %RDY と %MLMTDを確認することで、 CPU 制限の影響を確認できます 。
esxtop の使用に関する詳細については、CPU パネル を参照してください。
シェアを使用して、ホストがオーバーコミットされた場合にのみ、特定の仮想マシンのリソース使用を制限することもできます。
制限を使用することで、リソースのオーバーコミットを事前にシミュレートしたり、仮想マシンのリソース使用量を動的に制限したりできます(例えば、問題のある仮想マシンによる過剰なリソース使用がホストや他の仮想マシンに悪影響を与える場合など)。
メモリとCPUの管理の仕組みの詳細については、以下をご覧ください。