KVM和rdtsc延迟

问题描述:

作为调试客户VM的一部分,我们使用rdtsc进行相当广泛的监控,以监控正在使用的时间量(正确时钟周期)。有人提出这个问题,因为rdtsc产生VM退出,这本身很昂贵。我可以想象没有更低层次的方法来确定已经过了多少时钟或等效时间。还有其他解决方案吗?这真的很贵吗?KVM和rdtsc延迟

每个rdtsc都不需要导致VM退出,至少不是Intel CPU。 ASAIK,虚拟机控制结构(VMCS)有一点说明每个RDTSC是否应该引起VM退出。检查“基于主处理器的VM执行控制 - 位12的定义”(表21-6)Intel Architecture Manual

有一个nifty script(vmxcap.py)可用于快速转储此信息。例如,在我的机器上,RDTSC不会导致虚拟机退出,我得到如下:

[[email protected] ~]# ./vmxcap.py | grep -i rdtsc 
RDTSC exiting       no 

希望这会有所帮助。

+0

五,有趣的 - 我试图想知道现在如何使用它 - 似乎嵌套kvm(CPU_BASED_RDTSC_EXITING)如果CPU没有这个功能,那么外部虚拟机不需要为内部虚拟机做一个虚拟机退出从L2到L1。如果我正确地遵循这一点。 – 2015-02-24 02:26:08

+0

如果'RDTSC exiting'的值是'yes',那是什么意思?这个文件到底显示了什么? – 2017-12-04 11:41:49