我正在使用 VMware Guest SDK 库来找出运行我的应用程序的虚拟机的 CPU 就绪时间。
VMGuestLib_GetCpuStolenMs
根据 VMware 文档, vmGuestLib 的方法提供了以下值:
VM 可运行但尚未安排的时间(以毫秒为单位)。
但是,如果我在 vSphere Client 中绘制同一虚拟机的 CPU 就绪时间图表,则会得到不同的值。例如,虽然我在 vSphere Client 中以 20 秒为间隔获得 0 到 22 毫秒之间的 CPU 就绪时间,但使用 VMware Guest SDK 库在(大致)相同的时间跨度内获得 550 到 650 毫秒的偷取时间。
我对过去 20 秒的 CPU 被盗时间的计算如下(伪代码):
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