请问大佬们, QEMU 中 KVM 和 TCG 这两种模式性能有很大差距么?

2020-03-03 18:06:53 +08:00
 chashao

我看了 QEMU 原理 TCG 将代码块转换为 host 的代码后再执行,而且有 TBCache 的存在,应该和 KVM 的性能差不多吧?实际用下来 KVM 快蛮多,这种情况是因为 TB 另外增加的 Prologue、Epilogue 造成的么?

2924 次点击
所在节点    问与答
5 条回复
tamlok
2020-03-03 18:13:35 +08:00
tcg 的话一整套都是软件模拟,kvm 是直接利用硬件虚拟化直接在硬件上跑,性能差距巨大吧
chashao
2020-03-03 18:23:04 +08:00
@tamlok 大佬,好像 TCG 翻译过程中,代码块会转换成 Host 的二进制指令,然后直接运行这个转换后二进制,我觉得速度应该挺快的才对。。
jkneedout
2020-03-03 18:24:51 +08:00
@chashao 硬件虚拟化基本不存在指令翻译。 性能损失会降到最低
tamlok
2020-03-03 18:51:48 +08:00
@chashao 翻译后会加进一堆维护寄存器之类的相关代码,连内存都是软件维护的
nevin47
2020-03-03 19:25:17 +08:00
你自己都提到了,TCG 是靠二进制转译工作的。而 KVM 是靠 kvm.ko 透过 vt-x/amd-v/ARM virtualization extension 这些 CPU 特性直接执行的,两者之间的路径差异就已经相当大了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/649501

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX