作为调试客户VM的一部分,我们相当广泛地使用rdtsc来监视所使用的时间量(好,时钟周期)。有人提出这样的问题,因为rdtsc会产生VM退出,这本身就很昂贵。我想不出有什么更低层次的方法可以知道有多少时钟时间或等效时间已经过去了。还有别的解决办法吗?这个真的很贵吗?
发布于 2015-02-24 00:21:11
并不是每个rdtsc都会导致VM退出,至少在Intel CPU上不需要。ASAIK,虚拟机控制结构(VMCS)有一个比特来决定每个RDTSC是否应该导致VM退出。检查英特尔架构手册的“基于主处理器的VM执行控件的定义-位12”(表21-6)。
有一个精妙的脚本(vmxcap.py)可以用来快速转储这些信息。例如,在我的机器上,在RDTSC不产生VM-Exit的情况下,我得到以下信息:
[root@XYZ ~]# ./vmxcap.py | grep -i rdtsc
RDTSC exiting no希望这能有所帮助。
https://stackoverflow.com/questions/28573068
复制相似问题