測量 VMware 和 Hyper-V 虛擬機器管理程式上的 CPU %steal

測量 VMware 和 Hyper-V 虛擬機器管理程式上的 CPU %steal

對於 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 外掛程式可以將這些效能計數器與其他系統資源關聯起來。它很簡單:

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()

它證實了我的想法,我經常損失 75% 的 CPU 時間!

答案3

據我了解,您正在計算被盜的總毫秒數。

此時您對偷竊的影響知之甚少。

如果將被盜的毫秒數除以虛擬機器的數量,您將得到每個虛擬機器被盜的毫秒數。

然後,將被盜毫秒除以被盜值應用的實際毫秒(計算被盜毫秒的間隔),您將得到虛擬機器被盜的時間百分比(平均)。

因此,計算結果為每個虛擬機器的被盜百分比=被盜ms / #VMsOn / 間隔ms

相關內容