VMware および Hyper-V ハイパーバイザーでの CPU % スチールの測定

VMware および Hyper-V ハイパーバイザーでの CPU % スチールの測定

Xen Linux ゲストの場合、%steal時間は top やその他のユーティリティを通じて簡単に入手できます。

ESXi や Hyper-V などの非 Xen ハイパーバイザーを実行しているときに、Linux ゲスト内からこれと関連メトリックを取得することは可能ですか?

Windows ゲストの場合、VMware と Microsoft の両方が perfmon カウンターを提供します。例: VMware パフォーマンスモニター

topしかし、これらはCentos 6.4 のバニラでは公開されていないようです。

答え1

VMware ゲスト内でこれらの (およびその他の) パフォーマンス カウンターを取得する唯一の方法は、vmware-tools に同梱されている VMGuestLib SDK を使用することです。

私は、このライブラリ用の python ラッパー (python-vmguestlib) と、これらのカウンターにアクセスするためのツール vmguest-stats を作成しました。また、これらのパフォーマンス カウンターを他のシステム リソースと相関させる Dstat プラグインが 3 つあります。これは次のように簡単です。

dstat -c –vm-cpu -m –vm-mem –vm-mem-adv

Python ラッパー、vmguest-stats ツール、Dstat は次の場所にあります。

フィードバックと改善を歓迎します!

答え2

職場の vSphere クラスタは過負荷状態ですが、通常の Zabbix 測定ツールでは CPU スチール時間が表示されませんでした。Dag に感謝します。彼のテスト プログラムを使用して、次のようにスチール パーセンテージを出力するスクリプトを作成しました。

#!/usr/bin/python

import sys, os, time
sys.path.append(os.path.join('/root/dagwieers/vmguestlib/'))

from vmguestlib import VMGuestLib

gl = VMGuestLib()

gl.UpdateInfo()
stolen_ms_1 = gl.GetCpuStolenMs()

time.sleep(1)

gl.UpdateInfo()
stolen_ms_2 = gl.GetCpuStolenMs()

# print percentage of stolen time
print '%d' % ((stolen_ms_2 - stolen_ms_1) / 10)

gl.CloseHandle()

それは私が考えていたことを確認しました。CPU 時間の 75% を頻繁に失っています。

答え3

私の理解では、盗まれた合計ミリ秒数をカウントしています。

この時点では、盗みの影響についてはほとんどわかっていません。

盗まれたミリ秒数を VM の数で割って計算すると、VM あたりの盗まれたミリ秒数が得られます。

次に、盗まれたミリ秒を、盗まれた値が適用される実際のミリ秒(盗まれたミリ秒をカウントする間隔)で割ると、VM が盗まれた時間の割合(平均)が得られます。

したがって、計算は VM あたりの盗難率 = 盗難ミリ秒 / #VMsOn / 間隔ミリ秒になります。

関連情報