Medindo % de roubo de CPU em hipervisores VMware e Hyper-V

Medindo % de roubo de CPU em hipervisores VMware e Hyper-V

Para convidados do Xen Linux, %stealo tempo está prontamente disponível por meio de utilitários principais e outros.

É possível obter esta e outras métricas relacionadas de dentro de um convidado Linux ao executar um hipervisor não Xen, como ESXi ou Hyper-V?

Para convidados do Windows, tanto a VMware quanto a Microsoft fornecem contadores perfmon. Exemplo: desempenho vmware

Mas estes não parecem ser expostos via vanilla topno Centos 6.4.

Responder1

A única maneira de obter esses (e mais) contadores de desempenho dentro de um convidado VMware é usando o SDK VMGuestLib fornecido com o vmware-tools.

Eu escrevi um wrapper python para esta biblioteca, chamado python-vmguestlib e uma ferramenta vmguest-stats para obter acesso a esses contadores. E agora existem três plug-ins Dstat para correlacionar esses contadores de desempenho com outros recursos do sistema. É tão simples quanto:

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

Você pode encontrar o wrapper python, a ferramenta vmguest-stats e o Dstat em:

Feedback e melhorias são bem-vindos!

Responder2

o cluster vSphere em funcionamento está sobrecarregado, mas a ferramenta de medição usual do Zabbix não indicava tempo de roubo de CPU. Muito obrigado ao Dag, peguei seu programa de teste e escrevi um script apenas para imprimir a porcentagem de roubo da seguinte forma

#!/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()

confirmou o que eu pensava, muitas vezes perco 75% do meu tempo de CPU!

Responder3

Pelo que entendi, você está contando o total de milissegundos roubados.

Neste ponto você sabe pouco sobre o impacto do roubo.

Se você calcular os milissegundos roubados divididos pela quantidade de VMs, obterá os milissegundos roubados por VM.

Então, dividindo os milissegundos roubados pelos milissegundos reais aos quais o valor roubado se aplica (o intervalo de contagem dos milissegundos roubados), você obterá a porcentagem de tempo que uma VM foi roubada (em média).

Portanto o cálculo seria % roubado por VM = roubadoms/#VMsOn/intervalms

informação relacionada