Para convidados do Xen Linux, %steal
o 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:
Mas estes não parecem ser expostos via vanilla top
no 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