Для гостей Xen Linux %steal
время легко доступно через top и другие утилиты.
Можно ли получить эти и связанные с ними показатели из гостевой ОС Linux при запуске гипервизора, отличного от Xen, например ESXi или Hyper-V?
Для гостевых систем Windows и VMware, и Microsoft предоставляют счетчики perfmon. Пример:
Но, похоже, они не отображаются в ванили top
в Centos 6.4.
решение1
Единственный способ получить эти (и другие) счетчики производительности внутри гостевой ОС VMware — использовать VMGuestLib SDK, поставляемый с vmware-tools.
Я написал обертку python для этой библиотеки, названную python-vmguestlib, и инструмент vmguest-stats для доступа к этим счетчикам. И теперь есть три плагина Dstat для корреляции этих счетчиков производительности с другими системными ресурсами. Это так же просто, как:
dstat -c –vm-cpu -m –vm-mem –vm-mem-adv
Оболочку Python, инструмент vmguest-stats и Dstat можно найти по адресу:
Отзывы и улучшения приветствуются!
решение2
кластер vSphere на работе перегружен, но обычный инструмент измерения Zabbix не показывал время кражи ЦП. Большое спасибо Дагу, я взял его тестовую программу и написал скрипт, чтобы просто вывести процент кражи следующим образом
#!/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% процессорного времени!
решение3
Насколько я понимаю, вы считаете общее количество украденных миллисекунд.
На данный момент вы мало что знаете о влиянии кражи.
Если посчитать украденные миллисекунды, разделенные на количество виртуальных машин, вы получите украденные миллисекунды на одну виртуальную машину.
Затем, разделив украденные миллисекунды на фактические миллисекунды, к которым относится украденное значение (интервал подсчета украденных миллисекунд), вы получите процент времени, в течение которого виртуальная машина была украдена (в среднем).
Таким образом, расчет будет следующим: % украденных на одну виртуальную машину = stealms / #VMsOn / intervalms