QEMU虚拟化加速方案 - KVM

QEMU执行引擎除了缺省TCG即时翻译外,还支持硬件加速方案kvm[1]及HAXM[2]。硬件加速方案对操作系统、硬件体系结构的要求总结:

* Linux + [Intel VT-d | AMD-V | Cortex-A15]
可采用KVM
* Windows 7及以后 + [Intel VT-d]
可采用HAXM
* 其他Windows
未找到开源可控硬件加速方案

## KVM的性能接近本机

* 公司VirtualOpenSystems曾以双核Cortex-A15(1.2GHz)、1GB RAM为硬件环境测试某SDL图形化动画程序[3]。该程序以Native方式启动,启动时间瞬时完成,在之后运行过程中FPS稳定在43。该程序以QEMU-KVM方式启动后,9.02秒后完成渲染,FPS开始时为35,之后逐渐上升并稳定在42。在性能上,QEMU-KVM与Native相差不大。

* 根据16年某非专业测试,KVM x86能达到95%-98%的HOST性能[4]。

需要留意,以上两项实验的目标分别是KVM-ARM方案和KVM-x86方案。KVM-ARM与KVM-x86之间的性能差异各有优势[5]。

## KVM比TCG快很多

* 根据VirtualOpenSystems的测试结果[3],QEMU-TCG需55秒完成应用启动,启动完成后FPS稳定在3;QEMU-KVM 9秒完成应用启动,启动完成后FPS最终稳定在42。

## LLVM与QEMU

有工作将QEMU执行引擎由TCG替换成LLVM[6]。性能上LLVM比TCG慢很多,TCG方案启动MS-DOS需4s,而LLVM方案需80s(20倍差距);TCG方案启动Windows XP消耗75s,而LLVMf方案消耗45min。LLVM方案绝大多数时间消耗在代码翻译上。

不过采用LLVM作为执行引擎后端的优势在于,可与基于LLVM的程序分析工具对接,如KLEE symbolic execution工具[7]等。

[1. KVM wiki]: https://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine
[2. Intel HAXM]:  https://software.intel.com/en-us/articles/intel-hardware-accelerated-execution-manager-intel-haxm
[3. kvm-vs-tcg]: http://www.virtualopensystems.com/en/solutions/demos/kvm-vs-tcg-virtualized-guests/
[4. How fast is KVM]: https://forum.level1techs.com/t/how-fast-is-kvm-host-vs-virtual-machine-performance/110192
[5. ARM virtualization: performance and architectural implications]: http://www.cs.columbia.edu/~cdall/pubs/isca2016-dall.pdf
[6. Dynamically Translating x86 to LLVM using QEMU]: https://infoscience.epfl.ch/record/149975/files/x86-llvm-translator-chipounov_2.pdf
[7. KLEE LLVM Execution Engine]: https://klee.github.io/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值