作为调试我们的来宾VM的一部分,我们非常广泛地使用rdtsc来监视正在使用的时间量(ok,时钟周期)。有人提出这个问题本身就很昂贵,因为rdtsc会产生VM退出。我可以想到没有更低级别的方法来找出时钟时间或等效时间已经过去了。还有其他解决方案吗?这真的很贵吗?
答案 0 :(得分:4)
每个rdtsc都没有必要导致VM退出,至少不在Intel CPU上。 ASAIK,虚拟机控制结构(VMCS)有一个位,它指示每个RDTSC是否应该导致VM退出。检查Intel Architecture Manual
中的“基于主处理器的VM执行控件的定义 - BIT 12”(表21-6)有nifty script(vmxcap.py)可用于快速转储此信息。例如,在我的机器上,RDTSC没有招致VM-Exit,我得到以下内容:
[root@XYZ ~]# ./vmxcap.py | grep -i rdtsc
RDTSC exiting no
希望这有帮助。