测量 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

相关内容