V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
chashao
V2EX  ›  问与答

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

  •  
  •   chashao · 2020-03-03 18:06:53 +08:00 · 2943 次点击
    这是一个创建于 1726 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    5 条回复    2020-03-03 19:25:17 +08:00
    tamlok
        1
    tamlok  
       2020-03-03 18:13:35 +08:00 via Android
    tcg 的话一整套都是软件模拟,kvm 是直接利用硬件虚拟化直接在硬件上跑,性能差距巨大吧
    chashao
        2
    chashao  
    OP
       2020-03-03 18:23:04 +08:00
    @tamlok 大佬,好像 TCG 翻译过程中,代码块会转换成 Host 的二进制指令,然后直接运行这个转换后二进制,我觉得速度应该挺快的才对。。
    jkneedout
        3
    jkneedout  
       2020-03-03 18:24:51 +08:00 via iPhone
    @chashao 硬件虚拟化基本不存在指令翻译。 性能损失会降到最低
    tamlok
        4
    tamlok  
       2020-03-03 18:51:48 +08:00 via Android
    @chashao 翻译后会加进一堆维护寄存器之类的相关代码,连内存都是软件维护的
    nevin47
        5
    nevin47  
       2020-03-03 19:25:17 +08:00 via Android
    你自己都提到了,TCG 是靠二进制转译工作的。而 KVM 是靠 kvm.ko 透过 vt-x/amd-v/ARM virtualization extension 这些 CPU 特性直接执行的,两者之间的路径差异就已经相当大了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2809 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 14:32 · PVG 22:32 · LAX 06:32 · JFK 09:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.