Estou usando a biblioteca do VMware Guest SDK para descobrir o tempo de prontidão da CPU da máquina virtual que está executando o meu aplicativo.
De acordo com a documentação da VMware, o método VMGuestLib_GetCpuStolenMs
do vmGuestLib fornece esse valor:
The time (in ms) that the VM was runnable but not scheduled.
No entanto, se eu mapear o tempo de prontidão da CPU para a mesma máquina virtual no cliente vSphere, obtenho valores diferentes. Por exemplo, embora eu tenha tempos de CPU entre 0 e 22ms no vSphere Client por intervalos de 20s, recebo tempos de 550 a 650ms roubados usando a biblioteca VMware Guest SDK por (aproximadamente) os mesmos períodos de tempo.
Meu cálculo do tempo roubado da CPU nos últimos 20 anos é semelhante a esse (pseudo código):
oldStolenMs = vmLib.getCpuStolenMs()
sleep_in_seconds(20)
newStolenMs = vmLib.getCpuStolenMs()
stolenMs = newStolenMs - oldStolenMs
// additionally I verify that the elapsed time of the VM is indeed 20s
Tags virtual-machine vsphere