chashao
V2EX  ›  问与答

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

  •  
  •   chashao · Mar 3, 2020 · 3585 views
    This topic created in 2266 days ago, the information mentioned may be changed or developed.

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

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