KVM和rdtsc延迟

Nei*_*ill 2 x86 kvm

作为调试来宾VM的一部分,我们非常广泛地使用rdtsc来监视使用的时间量(正常,时钟周期)。有人提出这样的问题,因为rdtsc会导致VM退出,这本身就很昂贵。我认为没有更低级别的方法可以找出已经消耗了多少时钟时间或等效时间。还有其他解决方案吗?这真的很贵吗?

use*_*708 5

没有必要让每个rdtsc都退出VM,至少不会在Intel CPU上退出。ASAIK,虚拟机控制结构(VMCS)具有指示每个RDTSC是否应导致VM退出的位。检查“ 英特尔体系结构手册 ”中的“基于主处理器的VM执行控件的定义– BIT 12”(表21-6)

有一个漂亮的脚本(vmxcap.py)可用于快速转储此信息。例如,在我的RDTSC不会导致VM退出的计算机上,我得到以下信息:

[root@XYZ ~]# ./vmxcap.py  | grep -i rdtsc
RDTSC exiting                            no
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。