相关参考
提出问题:
在使用vfio-mdev进行数据传输的时候, 有个问题:
Guest 通过vfio-pci下发数据时,一次iowrite32的时间 是多久,Host才可以收到?
Host通过eventfd给Guest发送中断时,需要多久Guest才可以收到中断?
也就是 vfio-mdev的通信性能如何评估?
我尝试在 Guest给Host发送消息时,
Guest获取ktime,然后在Host获取Ktime,进行比较时,发现 Guest有时候时间竟然比Host快???
那么问题是: Guest的时钟来自于哪里?Guest的RTC来自哪里?Guest的定时器来自哪里?Guest时间精度是多少?
本文:假设已经了解了 Linux时钟的机制,这里主要学习Guest时钟的机制。
关于时钟的配置(应用)
qemu-kvm参数
(base) baiy@inno-MS-7B89:drivers$ qemu-system-x86_64 -h
-realtime [mlock=on|off]
run qemu with realtime features
mlock=on|off controls mlock support (default: on)
-rtc [base=utc|localtime|<datetime>][,clock=host|rt|vm][,driftfix=none|slew]
set the RTC base and clock, enable drift fix for clock ticks (x86 only)
-realttime配置
mlock=on | off 影响了什么?
-rtc 的配置
base配置:
utc:
localtime:
datetime:
clock配置:
host
rt
vm
driftfix配置:
Libvirt中时间配置
官方配置:libvirt-formatdomain配置 的 Time keeping 章节
......
<clock offset='utc'>
<timer name='rtc' tickpolicy='catchup'/>
<timer name='pit' tickpolicy='delay'/>
<timer name='hpet' present='no'/>
</clock>
clock参数的配置
clock 的offset配置值:
utc:
localtime:
timezone:
variable:
timer参数的配置
虚拟机的时钟(原理)
内核关于kvm 的墙上时间的描述
参考: virt-timekeeping