国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁 > 營銷資訊 > 網(wǎng)站運(yùn)營 > 嵌入式虛擬機(jī)管理器Xvisor對(duì)比分析

嵌入式虛擬機(jī)管理器Xvisor對(duì)比分析

時(shí)間:2023-07-14 03:39:01 | 來源:網(wǎng)站運(yùn)營

時(shí)間:2023-07-14 03:39:01 來源:網(wǎng)站運(yùn)營

嵌入式虛擬機(jī)管理器Xvisor對(duì)比分析:虛擬化(Virtualization)這種起源于上世紀(jì)60年代IBM大型機(jī)系統(tǒng)的技術(shù)在處理器性能大幅度提升的當(dāng)下,再次迅速發(fā)展起來,并從最初的的裸機(jī)虛擬化(Type-I虛擬化)技術(shù)開始,演化出主機(jī)虛擬化(Type-II虛擬化)、混合虛擬化(Hybrid虛擬化)等更復(fù)雜的虛擬化模型,并在此基礎(chǔ)山發(fā)展出了當(dāng)下最熱門的云計(jì)算技術(shù),極大地降低了IT成本,增強(qiáng)了系統(tǒng)的安全性,可靠性和擴(kuò)展性。

嵌入式系統(tǒng)則是虛擬化技術(shù)在嵌入式領(lǐng)域的應(yīng)用。文中的Xvisor正是一款開源的采用裸機(jī)虛擬化技術(shù)的輕量級(jí)嵌入式Hypervisor,具有良好的代碼架構(gòu)和和可移植性,支持ARM和X86處理器的半虛擬化基于硬件的全虛擬化技術(shù)。

文中圍繞嵌入式Hypervisor的5個(gè)核心部分 - 客戶機(jī)IO事件模擬、主機(jī)中斷、 鎖同步延遲、內(nèi)存管理和內(nèi)存占用,基于當(dāng)下最流行的ARM處理器架構(gòu),進(jìn)行了深入的闡述和對(duì)比。

本文翻譯自Embedded Hypervisor Xvisor: A Comparative Analysis。譯者在翻譯時(shí)盡量逐詞翻譯,但是某些語句為了更清楚的表述根據(jù)譯者的理解進(jìn)行了轉(zhuǎn)述。若有不妥,請(qǐng)參考原文。



















摘要

由于與減少費(fèi)用、提高資源利用率和更高的性能直接相關(guān),虛擬化技術(shù)已經(jīng)在嵌入式系統(tǒng)中廣泛流行。為了在嵌入式系統(tǒng)的嚴(yán)格時(shí)間約束和低內(nèi)存占用的虛擬化環(huán)境中獲得高效的性能,我們需要高效的Hypervisor(虛擬機(jī)管理器)。雖然現(xiàn)在已經(jīng)有了一些開源的Hypervisor,例如Xen,Linux KVM和OKL4 Microvisor,這仍然是第一篇介紹開源嵌入式虛擬機(jī)管理器Xvisor(eXtensible Versatile hypervisor),并從對(duì)整個(gè)系統(tǒng)性能的影響上,與兩個(gè)常用虛擬機(jī)管理器KVM和Xen進(jìn)行對(duì)比的論文。實(shí)驗(yàn)證明,在ARM處理器架構(gòu)上,Xvisor具有更低的CPU開銷,更高的內(nèi)存帶寬,更低的鎖同步延遲和虛擬定時(shí)器中斷開銷,并且能夠全面提升嵌入式系統(tǒng)性能。

關(guān)鍵詞:嵌入式系統(tǒng); 虛擬化; Xen, Linux KVM; Xvisor;ARM;Hypervisor(虛擬機(jī)管理器);

1. 介紹

近年來,多核嵌入式系統(tǒng)需求的增長已經(jīng)開始引領(lǐng)虛擬化技術(shù)在嵌入式系統(tǒng)中的研究。嵌入式系統(tǒng)通常具有資源有限,實(shí)時(shí)性約束,高性能要求,增長的應(yīng)用程序棧需求(必須使用有限外設(shè))等特點(diǎn)[參考文獻(xiàn)1]。

虛擬化技術(shù)提供了在單核或多核處理器上以虛擬機(jī)(VM或客戶機(jī))方式運(yùn)行多個(gè)操作系統(tǒng)的方法。每個(gè)客戶機(jī)運(yùn)行在一個(gè)或多個(gè)虛擬處理單元(vCPU)上。進(jìn)而,一個(gè)客戶機(jī)的所有vCPU(虛擬CPU)同另外一個(gè)客戶機(jī)的vCPU完全隔離,但是共享同一套外設(shè)。

因此,虛擬化的應(yīng)用提供了如下優(yōu)勢(shì)[參考文獻(xiàn)2]:

  1. 過去運(yùn)行在不同設(shè)備上的服務(wù)現(xiàn)在可以作為多個(gè)VM運(yùn)行在同一個(gè)設(shè)備上;
  2. 在同一個(gè)設(shè)備上合并操作系統(tǒng)的實(shí)時(shí)特性和通用目的特性,即在不同的VM中執(zhí)行實(shí)時(shí)程序和通用程序[參考文獻(xiàn)3];
  3. 更好的容錯(cuò)性;
  4. 提供高可靠應(yīng)用間的隔離性。
同樣的,嵌入式虛擬化已經(jīng)有在如下方面有力的證明了它的能力:

  1. 摩托羅拉Evoke,第一個(gè)虛擬化手機(jī)[參考文獻(xiàn)4];
  2. 工業(yè)自動(dòng)化,虛擬化允許添加額外的應(yīng)用而不需要增加更多的處理單元[參考文獻(xiàn)5];
  3. 汽車可以通過在若干個(gè)互相隔離的VM(虛擬機(jī))上分別運(yùn)行娛樂信息操作系統(tǒng)、AUTOSAR(汽車開放系統(tǒng)架構(gòu))操作系統(tǒng)和RTOS(實(shí)時(shí)操作系統(tǒng)),從而使得多個(gè)服務(wù)可以在同一套硬件上運(yùn)行[參考文獻(xiàn)6];
  4. 其他用戶案例,例如零售和博彩行業(yè)。
基于下面的考慮,文中的分析性研究將新的嵌入式Hypervisor - Xvisor與2個(gè)現(xiàn)存的嵌入式開源Hypervisor - KVM/Xen進(jìn)行對(duì)比:

  1. 本次研究基于ARM架構(gòu)。這是由于最新的ARM處理器架構(gòu)已經(jīng)提供了硬件虛擬化擴(kuò)展,并且ARM處理器在嵌入式系統(tǒng)中已經(jīng)得到了廣泛應(yīng)用。另外,這3個(gè)Hypervisor共有的的大部分板級(jí)支持包(BSP)都使用了ARM架構(gòu)處理器。
  2. KVM和Xen被選中作為對(duì)比的虛擬機(jī)管理器,是基于如下原因:



  1. 實(shí)驗(yàn)使用小型基準(zhǔn)測(cè)試工具在客戶機(jī)上進(jìn)行測(cè)試。這些測(cè)試工具測(cè)試內(nèi)存訪問,Cache(高速緩存)訪問,整形操作,任務(wù)處理等。這些操作上的性能增強(qiáng)能夠提升系統(tǒng)的整體性能,不像是那些專注于測(cè)試某種特殊工作負(fù)荷(例如Web服務(wù)器,內(nèi)核編譯,圖形渲染等)的宏基準(zhǔn)測(cè)試工具。
  2. 實(shí)驗(yàn)僅使用通用目的操作系統(tǒng)(GPOS)Linux作為客戶機(jī)。因?yàn)椋@是唯一可被這3種Hypervisor支持的客戶機(jī)操作系統(tǒng)。目前沒有一個(gè)通用的實(shí)時(shí)操作系統(tǒng)可以同時(shí)為這3種ypervisor所支持。因此時(shí)間約束測(cè)試將通過如下因素的吞吐量測(cè)試來實(shí)施:



Xen,KVM和Xvisor實(shí)現(xiàn)的說明和限制的討論如下所示:

2. 虛擬化技術(shù)分類

基于如下兩個(gè)特征[參考文獻(xiàn)11],我們把虛擬化技術(shù)劃分為5類:







相應(yīng)的,虛擬化技術(shù)分類在通過客戶機(jī)獲取的性能測(cè)量中扮演著重要角色。

2.1 Hypervisor設(shè)計(jì)

Hypervisor的角色是硬件和虛擬機(jī)之間的接口。這些Hypervisor的實(shí)現(xiàn)風(fēng)格決定了他們作為虛擬化管理器的操作效率。給予他們的實(shí)現(xiàn),所有Hypervisor都屬于下面3種設(shè)計(jì)分類之一:

  1. 完全宏內(nèi)核設(shè)計(jì)
    完全宏內(nèi)核Hypervisor使用一個(gè)單一的軟件層來負(fù)責(zé)主機(jī)硬件訪問,CPU虛擬化和客戶機(jī)IO模擬。例如XvisorVMware ESXi Server[參考文獻(xiàn)12]。
  2. 部分宏內(nèi)核設(shè)計(jì)
    部分宏內(nèi)核Hypervisor通常是一個(gè)通用目的宏內(nèi)核操作系統(tǒng)(例如Linux,F(xiàn)reeBSD,NETBSD,Windows等)的擴(kuò)展。他們?cè)诓僮飨到y(tǒng)內(nèi)核支持主機(jī)硬件訪問和CPU虛擬化,并通過用戶空間軟件支持客戶機(jī)IO模擬。例如Linux KVMVMware Workstation[參考文獻(xiàn)13]。
  3. 微內(nèi)核設(shè)計(jì)
    微內(nèi)核Hypervisor通常是在Hypervisor內(nèi)核種提供基本的主機(jī)硬件訪問和CPU虛擬化功能的輕量級(jí)微內(nèi)核。它們依賴于一個(gè)管理VM來支持整個(gè)主機(jī)的硬件訪問,客戶機(jī)IO模擬和其他服務(wù)。這些微內(nèi)核Hypervisor中的一些在一個(gè)分離的驅(qū)動(dòng)VM上運(yùn)行每一個(gè)主機(jī)設(shè)備驅(qū)動(dòng)程序而不是在通用管理VM上運(yùn)行。例如Xen,微軟Hyper-V[參考文獻(xiàn)14],OKL4 Microvisor[參考文獻(xiàn)15]和INTEGRITY Multivisor[參考文獻(xiàn)16]。

2.2 虛擬化模式

虛擬化模式?jīng)Q定了能夠在Hypervisor上運(yùn)行的客戶機(jī)的類型[參考文獻(xiàn)17,18]:

  1. 全虛擬化
    通過提供系統(tǒng)虛擬機(jī)(例如模擬類似于真實(shí)硬件的整個(gè)系統(tǒng)),允許未經(jīng)修改的客戶機(jī)操作系統(tǒng)作為客戶機(jī)運(yùn)行。(譯者注:該模式需要借助硬件的虛擬化支持,例如X86架構(gòu)AMD-V/Intel VT,ARMv8和Power架構(gòu)的虛擬化profile等。)
  2. 半虛擬化
    通過提供Hypercall(虛擬機(jī)調(diào)用接口),允許修改過的的客戶機(jī)操作系統(tǒng)作為客戶機(jī)運(yùn)行。這個(gè)模式要求客戶機(jī)使用Hypercall來進(jìn)行各種IO操作(例如,網(wǎng)絡(luò)收發(fā),塊讀寫,終端讀寫等等)和在某些時(shí)候執(zhí)行某些關(guān)鍵指令。這些Hypercall會(huì)觸發(fā)一個(gè)trap(陷阱)中斷以進(jìn)入Hypervisor。這些trap中斷基于Hypercall參數(shù),使得Hypervisor為客戶機(jī)提供期待的服務(wù)。

3. 嵌入式系統(tǒng)的開源Hypervisor

下面是兩個(gè)開源虛擬機(jī)管理器Xen和KVM的一個(gè)簡(jiǎn)單介紹,用于在Hypervisor研究中跟Xvisor進(jìn)行對(duì)照。

由于我們研究中對(duì)性能比較的關(guān)系,我們講述了這些Hypervisor中已知的招致客戶機(jī)運(yùn)行并由此影響整個(gè)虛擬化嵌入式系統(tǒng)性能的系統(tǒng)組件的實(shí)現(xiàn)細(xì)節(jié)。這包括每個(gè)Hypervisor如何處理CPU虛擬化,客戶機(jī)IO模擬和主機(jī)硬件訪問。另外,每個(gè)Hypervisor的某些主要優(yōu)勢(shì)也會(huì)被提及。

2.1 XEN

如圖2所示,Xen Hypervisor是一個(gè)支持全虛擬化和半虛擬化客戶機(jī)的微內(nèi)核Hypervisor。Xen Hypervisor內(nèi)核是一個(gè)輕量級(jí)微內(nèi)核,提供:

Domain(域)是Xen內(nèi)核相應(yīng)于虛擬機(jī)或客戶機(jī)的概念。

Domain0(Dom0)是一個(gè)特殊類型的域,運(yùn)行著一個(gè)Linux內(nèi)核的修改版本。Dommain0必須運(yùn)行在一個(gè)比任何其他VM或客戶機(jī)更高的優(yōu)先級(jí)上,并且具有對(duì)主機(jī)硬件的完全訪問權(quán)限。Dom0的主要目的是利用Linux內(nèi)核提供IO虛擬化和客戶機(jī)管理服務(wù)。

DomainU(DomU)相應(yīng)于運(yùn)行著一個(gè)客戶機(jī)操作系統(tǒng)的客戶虛擬機(jī)??蛻魴C(jī)的IO事件模擬和半虛擬化通過DomU和Dom0之間的通訊來實(shí)現(xiàn)。這一目的通過使用Xen事件通道來完成。半虛擬化客戶機(jī),相應(yīng)于DomU PVM,使用Xen事件通道來訪問Dom0半虛擬化IO服務(wù)??墒?,全虛擬化客戶機(jī),相應(yīng)于DomU HVM,使用運(yùn)行在Dom0用戶空間中的QEMU來模擬客戶機(jī)IO事件。

所有用來管理客戶機(jī)或域的用戶接口都通過運(yùn)行在Dom0用戶控件的Xen工具棧來完成。沒有Dom0,Xen不能提供DomU PVM或者DomU HVM。



Xen最重要的優(yōu)勢(shì)是使用Linux內(nèi)核作為Dom0,因?yàn)檫@能幫助Xen重用Linux內(nèi)核現(xiàn)有的設(shè)備驅(qū)動(dòng)和其他部分??墒?,這個(gè)優(yōu)勢(shì)帶來了后面章節(jié)將會(huì)提到的額外代價(jià)。也就是說,作為Dom0運(yùn)行的Linux內(nèi)核比直接運(yùn)行在真實(shí)硬件上(沒有Xen)稍微慢了一點(diǎn)。這是因?yàn)?,Dom0只是Xen的另一個(gè)域,有它自己的嵌套頁表,并且可能被Xen調(diào)度器調(diào)度出去。

2.2 KVM

KVM(基于內(nèi)核的虛擬機(jī))是一個(gè)支持全虛擬化和半虛擬化技術(shù)的部分宏內(nèi)核Hypervisor。KVM主要提供全虛擬化客戶機(jī),并以可選的VirtIO設(shè)備[參考文獻(xiàn)20]的形式提供半虛擬化支持。



KVM擴(kuò)展Linux內(nèi)核的執(zhí)行模式以允許Linux作為一個(gè)Hypervisor來工作。除了已有的2種執(zhí)行模式(內(nèi)核模式和用戶模式),客戶機(jī)模式被作為一種新的模式添加到Linux內(nèi)核中。這種方式允許客戶機(jī)操作系統(tǒng)與主機(jī)操作系統(tǒng)運(yùn)行在相同的執(zhí)行模式下(除了某些特殊指令和寄存器訪問),并且IO訪問將陷入到主機(jī)Linux內(nèi)核。主機(jī)Linux內(nèi)核將把一個(gè)虛擬機(jī)視作一個(gè)QEMU進(jìn)程。KVM只能在主機(jī)內(nèi)核上虛擬化CPU,并且依賴于運(yùn)行在用戶控件的QEMU來處理客戶機(jī)IO事件的模擬和半虛擬化。

如圖2所示,KVM包含2個(gè)主要組件:

  1. 內(nèi)核空間字符設(shè)備驅(qū)動(dòng),通過一個(gè)字符設(shè)備文件/dev/kvm提供CPU虛擬化服務(wù)和內(nèi)存虛擬化服務(wù);
  2. 提供客戶機(jī)硬件模擬的用戶空間模擬器(通常是QEMU)。
與這兩個(gè)組件之間的服務(wù)請(qǐng)求通訊,例如虛擬機(jī)和vCPU的創(chuàng)建,通常通過/dev/kvm設(shè)備文件的IOCTRL操作來處理。

KVM最重要的優(yōu)勢(shì)(類似于Xen)是使用Linux內(nèi)核作為主機(jī)內(nèi)核。這樣有助于KVM重用Linux內(nèi)核現(xiàn)有的設(shè)備驅(qū)動(dòng)和其他部分。然而,由于KVM依賴于嵌套頁表故障機(jī)制的客戶機(jī)模式到主機(jī)模式的虛擬機(jī)切換,特殊指令陷阱(Trap),主機(jī)中斷,客戶機(jī)IO事件,和另一個(gè)從主機(jī)模式喚醒客戶機(jī)執(zhí)行的虛擬機(jī)切換,這個(gè)優(yōu)勢(shì)也導(dǎo)致了KVM整體性能本質(zhì)上的降低。

2.3 Xvisor

圖4中的Xvisor是一個(gè)支持全虛擬化和半虛擬化技術(shù)的完全宏內(nèi)核Hypervisor。它的目的是提供一個(gè)僅需少量系統(tǒng)開銷和很小內(nèi)存占用的在嵌入式系統(tǒng)中使用的輕量級(jí)Hypervisor。Xvisor主要提供全虛擬化客戶機(jī),并以VirtIO設(shè)備[參考文獻(xiàn)20]的形式提供半虛擬化支持。





Xvisor的所有核心組件,例如CPU虛擬化,客戶機(jī)IO模擬,后端線程,半虛擬化服務(wù),管理服務(wù)和設(shè)備驅(qū)動(dòng),都作為一個(gè)獨(dú)立的軟件層運(yùn)行,不需要任何必備的工具或者二進(jìn)制文件。

客戶機(jī)操作系統(tǒng)運(yùn)行在Xvisor上,具有更少的特權(quán);而Xvisor的實(shí)現(xiàn)負(fù)責(zé)調(diào)用標(biāo)準(zhǔn)vCPU。此外,所有設(shè)備驅(qū)動(dòng)和管理功能的后端處理運(yùn)行在不具有最高優(yōu)先級(jí)的孤兒vCPU(沒有分配給某個(gè)客戶機(jī)的vCPU)上??蛻魴C(jī)配置信息以設(shè)備樹(Device Tree)[參考文獻(xiàn)21]的形式維護(hù)。這種方式通過使用設(shè)備樹腳本(DTS),使得客戶機(jī)硬件信息的維護(hù)更加容易。換句話說,為嵌入式系統(tǒng)定制一個(gè)虛擬機(jī)時(shí)不需要修改代碼。

Xvisor最重要的優(yōu)勢(shì)是運(yùn)行在提供所有虛擬化相關(guān)服務(wù)的最高特權(quán)等級(jí)上的單一軟件層。不像KVM,Xvisor的上下文切換非常輕量級(jí)(參見第5章),因此嵌套頁表、特殊指令陷阱、主機(jī)中斷和客戶機(jī)IO事件等的處理也非??焖?。進(jìn)而,所有設(shè)備驅(qū)動(dòng)都作為Xvisor的一部分直接運(yùn)行,具有完全的特權(quán)并且沒有嵌套頁表,以確保不會(huì)出現(xiàn)性能退化。另外,Xvisor的vCPU調(diào)度器是基于單CPU的,不處理多核系統(tǒng)的負(fù)載均衡。在Xvisor中,多核系統(tǒng)的負(fù)載均衡器是一個(gè)分離的部分,獨(dú)立于vCPU調(diào)度器(不像KVM和XEN)。在Xvisor中,vCPU調(diào)度器和負(fù)載均衡器都是可擴(kuò)展的。

Xvisor唯一的限制是缺少Linux那樣豐富的單板和設(shè)備驅(qū)動(dòng)。為了處理這個(gè)限制,Xvisor提供了Linux兼容層頭文件以方便從Linux內(nèi)核移植設(shè)備驅(qū)動(dòng)框架和設(shè)備驅(qū)動(dòng)。盡管不能完全解決問題,移植成本也可以大幅度減少。

4. 客戶機(jī)IO事件模擬

嵌入式系統(tǒng)需要作為虛擬機(jī)(VM)或客戶機(jī)運(yùn)行傳統(tǒng)軟件。傳統(tǒng)嵌入式軟件可能期待需要Hypervisor模擬的特殊硬件。這就是為什么Hypervisor必須盡可能減小客戶機(jī)IO事件模擬的開銷。后面的小章節(jié)解釋了前面提及的Hypervisor在ARM處理器架構(gòu)上模擬的客戶機(jī)IO事件的生命周期。注意,這非常重要。因?yàn)樵谶@些Hypervisor中,客戶機(jī)IO事件流在所有處理器架構(gòu)包括ARM上都是相同的。

4.1 Xen ARM

圖5展示了Xen ARM用于DomU HVM(全虛擬化客戶機(jī))的客戶機(jī)IO事件模擬的生命周期。從標(biāo)志1開始,一個(gè)客戶機(jī)IO事件被觸發(fā),然后使用標(biāo)志2和標(biāo)志3所示的Xen事件通道轉(zhuǎn)發(fā)到Dom0內(nèi)核。隨后,運(yùn)行在Dom0用戶空間的QEMU在標(biāo)志4模擬客戶機(jī)IO事件。最后在標(biāo)志5,控制返回到DomU。

圖中所示流程導(dǎo)致了一定數(shù)目的開銷。首先,盡管已經(jīng)進(jìn)行過優(yōu)化,基于域間通信的Xen事件通道還是具有非零開銷。其次,Dom0內(nèi)核到用戶空間和相反方向的上下文切換增加了客戶機(jī)IO事件模擬的開銷。





4.2 KVM ARM

圖6展示了客戶機(jī)IO事件模擬在KVM ARM上的處理流程。圖中場(chǎng)景開始在標(biāo)志1,即一個(gè)客戶機(jī)IO事件被觸發(fā)的時(shí)刻??蛻魴C(jī)IO事件引起一個(gè)VM-Exit事件,引起KVM從客戶機(jī)模式切換到主機(jī)模式。然后,如標(biāo)志2和3所示,客戶機(jī)IO事件被運(yùn)行在用戶空間的QEMU處理。最后,在標(biāo)志4處,VM-enter發(fā)生,引起KVM從主機(jī)模式切換到客戶機(jī)模式。

處理開銷主要由VM-exit和Vm-ente上下文切換引起,而這正是KVM眾所周知的嚴(yán)重開銷。





4.3 Xvisor ARM

不像其他Hypervisor,Xvisor ARM在客戶機(jī)IO事件模擬上不會(huì)引發(fā)額外的調(diào)度或者上下文切換的開銷。如圖7所示,流程開始在標(biāo)志1,一個(gè)客戶機(jī)IO事件被Xvisor ARM捕獲時(shí)。隨后,事件在標(biāo)志2處的不可睡眠的通用上下文中被處理以確保時(shí)間被處理,并具有預(yù)期的開銷。





5. 主機(jī)中斷

嵌入式系統(tǒng)在處理主機(jī)中斷時(shí),必須遵守嚴(yán)格的時(shí)間約束。在虛擬化環(huán)境中,Hypervisor在處理主機(jī)中斷時(shí)可能會(huì)有額外的開銷,轉(zhuǎn)而影響主機(jī)IO性能。請(qǐng)重點(diǎn)注意,文中所述的Hypervisor的主機(jī)中斷處理流程對(duì)所有處理器架構(gòu)包括ARM都是相同的。

5.1 Xen ARM

在Xen中,主機(jī)設(shè)備驅(qū)動(dòng)作為Dom0 Linux內(nèi)核的一部分運(yùn)行。因此所有主機(jī)中斷都被轉(zhuǎn)發(fā)到Dom0。如圖8所示,流程開始在標(biāo)志1,一個(gè)主機(jī)IRQ(中斷請(qǐng)求)被觸發(fā),然后在標(biāo)志2處被轉(zhuǎn)發(fā)到Dom0。如圖中標(biāo)志3和4所示,所有主機(jī)中斷由Dom0處理。如果一個(gè)主機(jī)中斷在DomU運(yùn)行時(shí)被觸發(fā),那么它將在Dom0被調(diào)度進(jìn)來后才能得到處理,因此主機(jī)中斷處理引發(fā)了調(diào)度開銷。





5.2 KVM ARM

圖9所示為KVM ARM上客戶機(jī)正在運(yùn)行時(shí)的主機(jī)中斷處理流程[參考文獻(xiàn)22]。如圖中標(biāo)志1所示,每個(gè)主機(jī)中斷觸發(fā)一個(gè)VM-exit。一旦中斷如圖中標(biāo)志2和3所示,被主機(jī)內(nèi)核處理,KVM通過標(biāo)志4處的VM-entry恢復(fù)客戶機(jī)。當(dāng)某個(gè)KVM客戶機(jī)處于運(yùn)行狀態(tài)時(shí),VM-exit和VM-entry增加了相當(dāng)大的主機(jī)中斷處理開銷。進(jìn)而,如果主機(jī)中斷被轉(zhuǎn)發(fā)到KVM客戶機(jī),那么調(diào)度開銷也會(huì)存在。





5.3 Xvisor ARM

Xvisor的主機(jī)設(shè)備驅(qū)動(dòng)通常作為Xvisor的一部分以最高權(quán)限運(yùn)行。因此,圖10中,處理主機(jī)中斷時(shí)是不需要引發(fā)調(diào)度和上下文切換開銷的。只有當(dāng)主機(jī)中斷被轉(zhuǎn)發(fā)到一個(gè)當(dāng)前沒有運(yùn)行的客戶機(jī)時(shí),才會(huì)引發(fā)調(diào)度開銷。





6. 鎖同步延遲

在虛擬化環(huán)境中,鎖同步延遲問題是[參考文獻(xiàn)23]中提到的一個(gè)眾所周知的問題。這個(gè)問題因如下2個(gè)調(diào)度器的存在而產(chǎn)生:

這里,兩個(gè)調(diào)度器互相意識(shí)不到對(duì)方,導(dǎo)致客戶機(jī)vCPU被Hypervisor隨意搶占。我們給出了一個(gè)關(guān)于這種延遲和所有3個(gè)Hypervisor如何處理它們的一個(gè)簡(jiǎn)要介紹。

同一個(gè)客戶機(jī)中vCPU之間鎖同步的低效處理導(dǎo)致了圖11和12中顯示的兩個(gè)不確定場(chǎng)景:vCPU搶占和vCPU堆積問題。兩種問題都可能導(dǎo)致在獲取同一個(gè)客戶機(jī)的vCPU鎖時(shí)增加等待時(shí)間。

當(dāng)一個(gè)運(yùn)行在持有鎖的某主機(jī)CPU(pCPU0)上的vCPU(vCPU0)被搶占,而同時(shí)另一個(gè)運(yùn)行在其他主機(jī)CPU(pCPU1)上的vCPU(vCPU1)正在等待這個(gè)鎖,那么vCPU搶占問題就會(huì)發(fā)生。另外,發(fā)生在一個(gè)運(yùn)行著多個(gè)vCPU的單主機(jī)CPU上的鎖調(diào)度沖突問題也會(huì)導(dǎo)致vCPU堆積問題發(fā)生。也就是說,希望獲取某個(gè)鎖的vCPU(vCPU1)搶占了運(yùn)行在同一個(gè)主機(jī)CPU上的vCPU(vCPU0),但是vCPU0正在持有這個(gè)鎖。






在ARM機(jī)構(gòu)上,操作系統(tǒng)典型的使用WFE(等待事件)指令來等待請(qǐng)求一個(gè)鎖,并使用SEV(發(fā)送事件)指令來釋放一個(gè)鎖。ARM架構(gòu)允許WFE指令被Hypervisor捕獲,但是SEV指令不能被捕獲。為了解決vCPU堆積問題,所有3種Hypervisor(Xen ARM,KVM ARM和Xvisor ARM)都使用捕獲WFE指令的方法使得vCPU讓出時(shí)間片。ARM架構(gòu)的vCPU搶占問題能夠通過使用半虛擬化鎖的方式來解決,但是需要對(duì)客戶機(jī)操作系統(tǒng)進(jìn)行源碼級(jí)的修改。

7. 內(nèi)存管理

嵌入式系統(tǒng)要求有效的內(nèi)存處理。對(duì)于嵌入式Hypervisor來說,內(nèi)存管理的開銷需要慎重考慮。ARM架構(gòu)提供2級(jí)翻譯表(或者說嵌套頁表),用于客戶機(jī)內(nèi)存虛擬化,即圖13所示的2階段MMU??蛻魴C(jī)操作系統(tǒng)負(fù)責(zé)編程第1階段頁表,將客戶機(jī)虛擬地址(GVA)翻譯到間接物理地址(IPA)。ARM Hypervisor負(fù)責(zé)編程第2階段頁表來從將間接物理地址(IPA)翻譯成實(shí)際物理地址(PA)。



TLB-miss(Translation Look-aside Buffers miss,即頁表緩沖缺失)時(shí)必須檢索翻譯表。這個(gè)過程中使用的第2階段頁表的級(jí)數(shù)影響內(nèi)存帶寬和虛擬化系統(tǒng)的整體性能。比如最糟糕的情況下,N級(jí)第1階段翻譯表和M級(jí)第2階段翻譯表需要NxM次內(nèi)存訪問。對(duì)任何虛擬化系統(tǒng)上的客戶機(jī)來說,TLB-miss損失都是非常昂貴的。為了減少2階段MMU中的TLB-miss損失,ARM Hypervisor在第2階段創(chuàng)建更大的頁。

7.1 Xen ARM

Xen ARM為每個(gè)客戶機(jī)或域(Dom0或DomU)創(chuàng)建一個(gè)獨(dú)立的3級(jí)第2階段翻譯表。Xen ARM能創(chuàng)建4K字節(jié),2M字節(jié)或1G字節(jié)的第2階段翻譯表項(xiàng)。Xen ARM也按需分配客戶機(jī)內(nèi)存,并試圖基于IPA和PA對(duì)齊構(gòu)造盡可能最大的第2階段翻譯表項(xiàng)。

7.2 KVM ARM

KVM用戶空間工具(QEMU)預(yù)先分配作為客戶機(jī)RAM使用的用戶空間內(nèi)存,并向KVM內(nèi)核模塊通知其位置。KVM內(nèi)核模塊為每個(gè)客戶機(jī)vCPU創(chuàng)建一個(gè)獨(dú)立的3級(jí)第2階段翻譯表。典型的,KVM ARM將創(chuàng)建4K字節(jié)大小的第2階段翻譯表項(xiàng),但是也能夠使用巨大化TLB優(yōu)化模式創(chuàng)建2M字節(jié)大小的第2階段翻譯表項(xiàng)。

7.3 Xvisor ARM

Xvisor ARM在客戶機(jī)創(chuàng)建時(shí),預(yù)先分配連續(xù)的主機(jī)內(nèi)存以做為客戶機(jī)RAM。它為每個(gè)客戶機(jī)創(chuàng)建一個(gè)獨(dú)立的3級(jí)第2階段翻譯表。Xvisor ARM能創(chuàng)建4K字節(jié),2M字節(jié)或1G字節(jié)的第2階段翻譯表項(xiàng)。另外,Xvisor ARM總是基于IPA和PA對(duì)齊創(chuàng)建盡可能最大的第2階段翻譯表項(xiàng)。最后,客戶機(jī)RAM是扁平化和連續(xù)的(不像其它Hypervisor)。這有助于緩存預(yù)取訪問,從而進(jìn)一步提升客戶機(jī)內(nèi)存訪問性能。

8. 內(nèi)存占用比較

嵌入式系統(tǒng)要求小內(nèi)存占用([參考文獻(xiàn)[24])。下表I,II和III顯示Cubieboard2([參考文獻(xiàn)[25])上的安裝需求和最小內(nèi)存占用。因此后面問題答復(fù)如下:

  1. 需要滿足什么條件才能使Xen ARM,KVM ARM和Xvisor ARM運(yùn)行在系統(tǒng)上?
  2. Xen ARM,KVM ARM和Xvisor ARM需要消耗的的最小內(nèi)存是多少?




上圖中:





上圖中:

9. 基準(zhǔn)測(cè)試程序

我們實(shí)驗(yàn)中使用的基準(zhǔn)測(cè)試程序?qū)W⒂趶腃PU開銷、內(nèi)存帶寬和鎖同步機(jī)制方面比較Hypervisor。

9.1 Dhrystone

Dhrystone是一個(gè)用于測(cè)量處理器整形性能的簡(jiǎn)單基準(zhǔn)測(cè)試([參考文獻(xiàn)[26])。Dhrystone基準(zhǔn)測(cè)試的每秒總迭代次數(shù)被稱為每秒Dhrystones。進(jìn)而,Dhrystone結(jié)果的另外一個(gè)表示是DMIPS(每秒百萬條Dhrystone指令數(shù)),也就是每秒Dhrystones除以1757。DMIPS只不過是與VAX 11/780,,典型的1 MIPS機(jī)器([參考文獻(xiàn)[27])進(jìn)行比較的計(jì)算機(jī)系統(tǒng)的性能。

9.2 Cachebench

Cachebench來評(píng)估計(jì)算機(jī)系統(tǒng)內(nèi)存體系的性能。它專注于把處理器內(nèi)外的高速緩存的多個(gè)級(jí)別參數(shù)化。Cachebench進(jìn)行不同緩沖區(qū)大小的測(cè)試:內(nèi)存設(shè)置、內(nèi)存復(fù)制、整數(shù)讀取,整數(shù)寫入和整數(shù)讀取-修改-寫入。對(duì)于我們的實(shí)驗(yàn),我們將生成以兆字節(jié)每秒為單位的內(nèi)存復(fù)制和整數(shù)讀取-修改-寫入測(cè)試的結(jié)果。

9.3 Stream

內(nèi)存帶寬已經(jīng)被認(rèn)為能夠影響系統(tǒng)性能([參考文獻(xiàn)[29])。STREAM是一個(gè)設(shè)計(jì)用來測(cè)量持續(xù)內(nèi)存帶寬(以兆字節(jié)每秒為單位)的簡(jiǎn)單復(fù)合基準(zhǔn)測(cè)試程序。STREAM基準(zhǔn)測(cè)試被明確的設(shè)計(jì)在任何系統(tǒng)的非常大的數(shù)據(jù)集合上工作,而不是可用的高速緩沖上。我們實(shí)驗(yàn)中使用的STREAM版本是v5.10,2000000數(shù)組大?。ù蠹s45.8M字節(jié))

9.4 Hackbench

Hackbench通過確定調(diào)度給定數(shù)目任務(wù)花費(fèi)的時(shí)間來測(cè)量系統(tǒng)調(diào)度器性能。Hackbench的主要工作是調(diào)度線程和進(jìn)程。調(diào)度實(shí)體通過套接字或管道收發(fā)數(shù)據(jù)來通訊。運(yùn)行測(cè)試程序時(shí)能夠?qū)?shù)據(jù)大小和消息數(shù)目進(jìn)行設(shè)置。

10. 實(shí)驗(yàn)

后面的實(shí)驗(yàn)?zāi)康脑谟谠u(píng)估近期提議的嵌入式Hypervisor - Xvisor相較KVM和Xen的效率。本文試圖在Cubieboard2([參考文獻(xiàn)[25])上的客戶機(jī)Linux上運(yùn)行4個(gè)基準(zhǔn)測(cè)試程序。Cubieboard2是一塊包含1GB RAM的ARM Cortex-A7雙核1GHz單板。試驗(yàn)中使用了如下Hypervisor版本:

  1. KVM: 最新的Linux-3.16-rc3被用作主機(jī)KVM內(nèi)核??蛻魴C(jī)內(nèi)核是Linux-3.16-rc3。
  2. Xen:2014年8月3日發(fā)布的最新的Xen-4.5-unstable內(nèi)核被用作Hypervisor。Dom0內(nèi)核和DomU均為Linux-3.16-rc3。
  3. Xvisor:2014年7月18日發(fā)布的最新的Xvisor-0.2.4+被用作Hypervisor??蛻魴C(jī)內(nèi)核是Linux-3.16-rc3。
實(shí)驗(yàn)結(jié)果通過兩個(gè)測(cè)試向量獲取。第一個(gè)運(yùn)行在一個(gè)單核上,而另一個(gè)運(yùn)行在一個(gè)雙核上。測(cè)試系統(tǒng)(SUT,systems under test)如下:

  1. 沒有任何Hypervisor的主機(jī);
  2. Xvisor客戶機(jī);
  3. KVM客戶機(jī);
  4. HugeTLB模式KVM客戶機(jī);
  5. Xen客戶機(jī)。
為了確保只有CPU開銷,內(nèi)存帶寬和鎖同步延遲被引入測(cè)試結(jié)果,兩個(gè)測(cè)試向量都有一個(gè)具有2個(gè)vCPU的半虛擬化客戶機(jī)。而且,所有Hypervisor都進(jìn)行了如下優(yōu)化:

表IV和V顯示以DMIPS為單位的Dhrystone結(jié)果。Xvisor客戶機(jī)的DMIPS比KVM客戶機(jī)高大約0.2%,比HugeTLB模式KVM客戶機(jī)高0.19%,比Xen DomU高0.46%。Dhrystone基準(zhǔn)測(cè)試很小,在運(yùn)行時(shí)幾乎可以放在高速緩存中,因此內(nèi)存訪問開銷不會(huì)對(duì)其產(chǎn)生影響。盡管只有2個(gè)DMIPS的提升,這仍然提升了整個(gè)系統(tǒng)性能,因?yàn)?個(gè)DMIPS等于每秒1757次迭代。所以,使肌體上將是每秒數(shù)千次迭代(通常是幾百萬條機(jī)器指令)。












表VI, VII, VIII和IX顯示內(nèi)存復(fù)制和整數(shù)讀取-修改-寫入兩種操作的Cachebench結(jié)果。Xvisor客戶機(jī)的內(nèi)存復(fù)制結(jié)果比KVM客戶機(jī)高大約18%,比HugeTLB模式KVM客戶機(jī)高1.2%,比Xen DomU高0.67%。Xvisor客戶機(jī)的整數(shù)讀取-修改-寫入結(jié)果也比KVM客戶機(jī)高大約1.14%,比HugeTLB模式KVM客戶機(jī)高1.2%,比Xen DomU高1.64%。


























表X和XI顯示Xvisor客戶機(jī)的持續(xù)性內(nèi)存帶寬比KVM客戶機(jī)高大約0.72%,比HugeTLB模式KVM客戶機(jī)高1.57%,比Xen DomU高1.2%。














表XII和XIII中的Hackbench結(jié)果顯示示Xvisor客戶機(jī)的任務(wù)分發(fā)延遲比KVM客戶機(jī)低大約12.5%,比HugeTLB模式KVM客戶機(jī)低5.62%,比Xen DomU低6.39%。
















11. 結(jié)論

這篇論文介紹了作為開源Hypervisor - Xen和KVM性能缺點(diǎn)解決方案的新嵌入式Hypervisor - Xvisor。Xvisor的實(shí)現(xiàn)優(yōu)點(diǎn)體現(xiàn)在如下幾個(gè)方面:

而且,4種不同基礎(chǔ)準(zhǔn)測(cè)試的顯示結(jié)果支撐了Xvisor的實(shí)現(xiàn)優(yōu)勢(shì)。

實(shí)驗(yàn)結(jié)果顯示Dhrystone,Cachebench和Stream基準(zhǔn)測(cè)試在Xvisor ARM客戶機(jī)上具有更高的速率。這證明Xvisor ARM客戶機(jī)具有相對(duì)于KVM ARM客戶機(jī)和Xen ARM DomU更低的CPU開銷和更高的內(nèi)存帶寬。進(jìn)而,Hackbench在Xvisor ARM客戶機(jī)上具有更少的執(zhí)行時(shí)間。這說明Xvisor ARM客戶機(jī)具有相對(duì)于KVM ARM客戶機(jī)和Xen ARM DomU更低的鎖同步延遲和虛擬定時(shí)器中斷開銷。這些結(jié)果意味著Xvisor ARM下的客戶機(jī)相對(duì)于KVM ARM和Xen ARM更接近原生性能。最后, Xvisor ARM更小的內(nèi)存占用允許它在嵌入式系統(tǒng)上更有效的利用有限的內(nèi)存。

Xvisor允許額外的板級(jí)支持包(BSP)。更多的多核體驗(yàn)(不止是雙核)也是可能的。而且,基于上述測(cè)量數(shù)據(jù)已經(jīng)證明的性能提升,Xvisor將來在網(wǎng)絡(luò)和存儲(chǔ)虛擬化方面的實(shí)現(xiàn)也能具有更好的性能。

參考文獻(xiàn)

  1. Motivation for running a Hypervisor on Embedded Systems
  2. R.Kaiser, "Complex embedded systems-A case for virtualization," in Intelligent solutions in Embedded Systems, 2009 Seventh Workshop on, pp. 135-140. IEEE, 2009.
  3. Heiser, Gernot. "The role of virtualization in embedded systems," in Proceedings of the 1st workshop on Isolation and integration in embedded systems, pp. 11-16. ACM, 2008.
  4. Heiser, Gernot. "The Motorola Evoke QA4-A Case Study in Mobile Virtualization." Open Kernel Labs (2009).
  5. “Case Study: The Use of Virtualization in Embedded Systems,” white paper,2013.
  6. G.Heiser, "Virtualizing embedded systems: why bother?," in Proceedings of the 48th Design Automation Conference, pp. 901-905. ACM, 2011.
  7. Dall, Christoffer, and Jason Nieh. "KVM/ARM: Experiences Building the Linux ARM Hypervisor." (2013).
  8. Rossier, Daniel. "EmbeddedXEN: A Revisited Architecture of the XEN hypervisor to support ARM-based embedded virtualization." White paper, Switzerland (2012).
  9. Soriga, Stefan Gabriel, and Mihai Barbulescu. "A comparison of the performance and scalability of Xen and KVM hypervisors." In Networking in Education and Research, 2013 RoEduNet International Conference 12th Edition, pp. 1-6. IEEE, 2013.
  10. [ARMv7-AR architecture reference manual](http://infocenter.arm.com/help/topic/com.arm.doc.ddi0406c/index.
    html)
  11. Xvisor open-source bare metal monolithic hypervisor
  12. The Architecture of VMware ESXi
  13. E. Bugnion, S. Devine, M. Rosenblum, J. Sugerman, and E. Y.Wang, “Bringing Virtualization to the x86 Architecture the Origiinal VMware Workstation,” ACM Transactions on Computer Systems, 30(4):12:1-12:51, Nov 2012.
  14. OKL4 Microvisor
  15. H. Fayyad-Kazan, L. Perneel and M. Timerman, “Benchmarking the Performance of Microsoft Hyper-V server, VMware ESXi, and Xen Hypervisors”, Journal of Emerging Trends in Computing and Information Sciences, Vol. 4, No. 12, Dec 2013.
  16. INTEGRITY Multivisor
  17. Full Virtualization
  18. Paravirtualization
  19. Xen Project Beginners Guide
  20. R. Russell. Virtio PCI Card Specification v0.9.5 DRAFT, May
  21. G.Likely, and J.Boyer, "A symphony of flavours: Using the device tree to describe embedded hardware," in Proceedings of the Linux Symposium, vol. 2, pp. 27-37. 2008.
  22. R.Ma, F.Zhou, E.Zhu, and H.GUAN, "Performance Tuning Towards a KVM-based Embedded Real-Time Virtualization System." Journal of Information Science and Engineering 29, no. 5 (2013): 1021-1035.
  23. X.Song, J.Shi, H.Chen, and B.Zang, "Schedule processes, not vcpus," in Proceedings of the 4th Asia-Pacific Workshop on Systems, p. 1. ACM, 2013.
  24. Memory Footprint
  25. Cubiboard
  26. RP.Weicker, "Dhrystone: a synthetic systems programming benchmark," Communications of the ACM 27, no. 10 (1984):1013-1030.
  27. Dhrystone
  28. PJ.Mucci, K.London, and J.Thurman. "The cachebench report."University of Tennessee, Knoxville, TN 19 (1998).
  29. Stream
  30. Hackbench Ubuntu Manuals



本文使用 WPL/s 發(fā)布 @GitHub,首發(fā)于本人簡(jiǎn)書專欄。


關(guān)鍵詞:對(duì)比,分析,管理,虛擬

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉