Я использую библиотеку VMware Guest SDK, чтобы определить время готовности процессора виртуальной машины, на которой запущено мое приложение.
Согласно документации VMware, метод VMGuestLib_GetCpuStolenMs
vmGuestLib обеспечивает это значение:
Время (в мс), в течение которого виртуальная машина работала, но не была запланирована.
Однако, если я планирую время готовности ЦП для той же виртуальной машины в клиенте vSphere, я получаю другие значения. Например, хотя я получаю время готовности ЦП от 0 до 22 мс в vSphere Client с интервалами в 20 с, я получаю украденное время от 550 до 650 мс, используя библиотеку VMware Guest SDK для (примерно) одинакового промежутка времени.
Мой расчет времени кражи процессора за последние 20 секунд выглядит следующим образом (псевдокод):
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