XNUMXつのメトリックの物語:WindowsCPUまたはvCenterVM CPU

お客様やサポート担当者からのよくある質問は、「VMwareで実行されているWindowsシステムを監視すると、ESXiホストから仮想マシンを監視するのとは異なるCPUデータが報告されるのはなぜですか。 ESXの監視が間違っている必要があります!」

たとえば、ESXiで仮想マシンとして実行されているWindowsシステムのCPU負荷をグラフ化したLogicMonitorを次に示します。 この場合、CPUは、Windows OSにクエリを実行することにより、WMIから収集されます。

ESXi上で仮想マシンとして実行されているWindowsシステムのCPU負荷

これは同時に同じマシンですが、ESXiが負荷を認識する方法は次のとおりです。

ESXiが仮想マシンとして実行されているWindowsシステムのCPU負荷をどのように認識するか

では、どちらの見方が正しいのでしょうか? なぜ違うのですか? どちらに注意を払う必要がありますか?

どちらの見方も正しいです。 このゲスト仮想マシンは、3つのvCPUを備えたWindowsシステムでした。 100つのCPUを使用するように設定されたHyperPiを実行していました。 したがって、Windows(上のグラフ)の観点からは、75つのCPUがXNUMX%で実行されていました(上のグラフが示すように、システム全体の平均で約XNUMX%)。

スクリーンショット2:24:13:8 AM

ただし、ESXの観点からは、これら4つのCPUを使用しているゲストはこれだけではありません。 ハイパーバイザーのCPUリソースは限られており、他の多くのシステムと共有していました。 CPU使用率別の上位10個のVMのグラフを見ると、テスト対象システム(LMNOD1)がCPU要求を増やすと、他のシステムからCPUリソースを取得することがわかります。

CPU使用率別の上位10台のVMのグラフ

これは、Windowsシステムが4vCPUSでプロビジョニングされていても、プロビジョニングされた50つの仮想CPUの容量の4%弱のリソースしか取得できなかった理由を説明しています。

では、なぜWindowsは、ESXiが提供するよりも多くのCPUを取得していると考えたのでしょうか。 仮想化されていることを知らないからです。

ゲストOS(windows perfmonなど)のCPU使用率がVMwareのレポートよりも低い場合があります。 ゲストは、要求しているハードウェアリソースを仮想化するために使用されるCPUについて何も知りません。 ESXiはこれを行い、ロードする属性を正確に示します。 上のXNUMXつのグラフを比較すると、負荷テストの期間外では、WindowsはESXiよりもわずかに低いCPUリソース使用量を報告していることがわかります。

上記の負荷テストが実行されていた期間のように、ゲストOSがハイパーバイザーよりもCPUの使用率が高いと報告する場合もあります。 Windowsは、その時間の一部を認識していません。CPUが盗まれて、他のゲストマシンに渡されています。 それが知る限り、それは3つのCPUのうちの4つで可能なすべてのCPUを使用しているので、75%の負荷に等しくなければなりません。 その時間の一部を知らず、他の場所で使用されているためCPUにアクセスできないため、リアルタイムのCPU使用率は約50%にすぎません。

クロックスキューや調整など、内部測定値が異なる理由は他にもありますが、CPUの使用状況の絶対的なビューを探している場合は、ゲスト自身のビューを信頼できないと言えば十分です。

それはゲストの見解が無意味であることを意味しますか? それからは程遠い。 LogicMonitorでゲスト自体を監視している場合、またはPerfmonまたはTaskManagerを直接使用していて、CPU使用率が高い場合、これはゲストが多くの作業を行おうとしていて、CPUリソースが不足していることを示す有効な指標です。 実際に物理CPUのすべての容量を使用しているためにリソースが不足している場合(100%で実行されているスタンドアロンマシンの場合)、または他の仮想と無意識のうちに共有しているためにCPUリソースが不足している場合システムは関係ありません。 関連する事実は、システムが可能な限りすべてのCPUを使用しているということです。 CPUリソース、予約、共有の調整、またはワークロードの調査が必要になる場合があります。

では、ESXiホストのCPUに対する見方は重要ですか? これは、Vcenter管理者であり、実際に実際のCPUリソースを使用しているシステムを知りたい場合です。 (上記のような概要グラフは、これらの問題をすばやく調査するのに非常に役立ちます。)ただし、ESXiホストのCPU負荷のビューを使用して、システムに割り当てられたリソースより多くのリソースが必要かどうかを判断することはできません。リソースの量だけを確認できます。割り当てられたものが使用されています。 ただし、他のシステムが同じリソースを求めて競合している場合、割り当てられたリソースをXNUMX人のゲストが取得できない可能性があります。 ESXを調べている場合、ゲストがより多くのリソースを必要としているかどうかを判断するためのより良い方法は、CPU Readyを調べることです(つまり、ゲストはCPUでスケジュールする準備ができていましたが、CPUリソースは利用できませんでした)。上記のVMの場合、負荷テストの期間中に、CPU準備時間の大きなスパイクが明確に示されます。

仮想マシンでのCPUReadyのグラフ

したがって、ESXiホストまたはゲストのVcenter、Perfmon、またはLogicMonitorビューのいずれを見ている場合でも、何を見ているのか、それがどのように重要であるのか、さまざまなビューが一致しない理由を理解する必要があります。

(注:VMWareツールがインストールされている場合、ゲストのperfmonは、「VMプロセッサ」カウンターの下に正確なCPU使用率を表示できます。これは、Vcenter、またはESXiまたはVCenterの監視からLogicMonitorに表示されるCPU使用率と同じになります。それが何を意味し、それをどのように解釈するかを知る必要があります。)