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]:
[2. intel haxm]:
[3. kvm-vs-tcg]:
[4. how fast is kvm]:
[5. arm virtualization: performance and architectural implications]:
[6. dynamically translating x86 to llvm using qemu]:
[7. klee llvm execution engine]:
linux虛擬化之KVM虛擬化 kvm的安裝
kvm 是基於核心的虛擬機器 kernel based virtual machine 它是linux 的乙個核心模組,核心版本需要在linux 2.6.20以上。kvm虛擬機器是基於硬體輔助虛擬化技術。目前支援這個功能的應用為qume。所以qume和kvm虛擬機器磁碟的指令相關。ps 後面提到這個...
KVM 記憶體虛擬化
除了 cpu 虛擬化,另乙個關鍵是記憶體虛擬化,通過記憶體虛擬化共享物理系統記憶體,動態分配給虛擬機器。虛擬機器的記憶體虛擬化很象現在的作業系統支援的虛擬記憶體方式,應用程式看到鄰近的記憶體位址空間,這個位址空間無需和下面的物理機器記憶體直接對應,作業系統保持著虛擬頁到物理頁的對映。現在所有的 x8...
KVM 記憶體虛擬化
dev kvm 裝置 虛擬化分為軟體虛擬化和硬體虛擬化,而且遵循 intercept 和 virtualize 的規律。記憶體虛擬化也分為基於軟體的記憶體虛擬化和硬體輔助的記憶體虛擬化,其中,常用的基於軟體的記憶體虛擬化技術為 影子頁表 技術,硬體輔助記憶體虛擬化技術為 intel 的 ept ex...