【发布时间】:2014-09-16 04:45:00
【问题描述】:
我正在尝试提高 qemu 的运行速度,例如,真实 CPU 的一个滴答声将对应 qemu 虚拟时间的两个滴答声。这是可能的吗?如果可以,是否有人对如何进行此操作有任何指示?
【问题讨论】:
标签: emulation qemu system-clock
我正在尝试提高 qemu 的运行速度,例如,真实 CPU 的一个滴答声将对应 qemu 虚拟时间的两个滴答声。这是可能的吗?如果可以,是否有人对如何进行此操作有任何指示?
【问题讨论】:
标签: emulation qemu system-clock
有 qemu 选项可以改变客人看到的时间提前。
我使用的参数(使用 qemu v4.2.0)是:
qemu-system-x86_64 -rtc base=localtime,clock=vm -icount shift=7,align=off,sleep=off ...
请注意,icount 与硬件加速不兼容。另请注意,移位值太高可能会导致客户操作系统行为不端。例如,当我尝试将值设置为 10 时,linux 内核一直在抱怨任务停滞 >120 秒。
可能感兴趣:https://github.com/zephyrproject-rtos/zephyr/issues/14173 上的 cmets 和链接的问题/PR。
【讨论】:
你不能这样做。 QEMU 不是为这样的事情而生的。
QEMU 不模拟执行时间。它对 CPU 缓存等一无所知,因此即使它是可取的也不能准确。它只是尽可能快地执行客户代码。没有加速或减速。
至少不要这样寻求解决方案。
【讨论】:
也许你应该看看 libvirt https://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/Virtualization_Deployment_and_Administration_Guide/sect-Virtualization-Tips_and_tricks-Libvirt_Managed_Timers.html 中的 tickpolicy 选项。
它能够“赶上”主机时间。效果是客人似乎加速了。
选项从 libvirt 转换为 qemu 为 -rtc ,driftfix=slew
请注意,它不会改变代码的执行速度。
【讨论】: