0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Jailhouse原理及openEuler下的性能剖析

openEuler ? 來源:openEuler ? 2023-12-12 10:40 ? 次閱讀

Jailhouse 誕生于西門子,自 2013 年 11 月遵循 GPLv2,至今發(fā)展 9 年,最新版本為 v0.12。Jailhouse 本身不對 Linux 做任何修改,通過硬件隔離的方式實(shí)現(xiàn) Linux 和多 RTOS 的同時運(yùn)行,使用 Cell 來配置 CPU 和設(shè)備資源,且 Cell 之間設(shè)備資源不可共用。硬件至少需要 2 個邏輯 CPU 支撐它的運(yùn)行,支持 x86 架構(gòu)支持 VMX、EPT、Preemption timer 與帶有虛擬化擴(kuò)展的 ARMv7 或 ARMv8 架構(gòu)。

feb5d042-9837-11ee-8b88-92fbcf53809c.png

Jailhouse 原理

Jailhouse 本身并不改造 Linux 內(nèi)核,而是利用 Linux 系統(tǒng)的開放性,增加一個或多個實(shí)時操作系統(tǒng),實(shí)現(xiàn)多系統(tǒng)在一個多核處理器上運(yùn)行,如下圖所示:

fec53c1c-9837-11ee-8b88-92fbcf53809c.png

它是一個基于 Hypervisor 虛擬化技術(shù)的 Linux 靜態(tài)分區(qū)管理程序,其可以運(yùn)行裸機(jī)應(yīng)用程序或 RTOS 應(yīng)用程序。為此,Jailhouse 使用 cell 單元節(jié)點(diǎn)來配置 CPU 和設(shè)備硬件平臺的虛擬化功能,且各個節(jié)點(diǎn)分配的資源互不干擾。Jailhouse 啟動后,可以在相對獨(dú)立的空間運(yùn)行裸機(jī)應(yīng)用程序、RTOS 系統(tǒng),甚至是 Linux 系統(tǒng)。Jailhouse 不支持硬件的多單元節(jié)點(diǎn)復(fù)用,其希望用戶僅分配需要安全隔離控制的外設(shè)硬件資源,這樣能保證裸機(jī)應(yīng)用程序或 RTOS 最大限度減少因?yàn)閼?yīng)用虛擬化技術(shù)所造成的實(shí)時性損失。Jailhouse 不執(zhí)行任何調(diào)度。

一般而言,虛擬機(jī)監(jiān)控器擁有兩種結(jié)構(gòu)類型:Type-I 類型和 Type-II 類型。Type-I 類型的虛擬機(jī)監(jiān)控器是獨(dú)立運(yùn)行在硬件/固件層之上的一層很薄的軟件;而 Type-II 類型的虛擬機(jī)監(jiān)控器則是運(yùn)行在宿主機(jī)操作系統(tǒng)之上的。

Jailhouse 上擁有一個主控節(jié)點(diǎn),通常運(yùn)行 Linux 操作系統(tǒng),負(fù)責(zé)完成系統(tǒng)的初始化并提供管理員接口。該主控節(jié)點(diǎn)并不具備全部硬件資源的控制權(quán)限。當(dāng)虛擬機(jī)監(jiān)控器完成初始化,新的分區(qū)完成創(chuàng)建后,相關(guān)的硬件資源將直接劃分至對應(yīng)的分區(qū)中,由運(yùn)行在分區(qū)中的操作系統(tǒng)進(jìn)行管理。如果從運(yùn)行時的系統(tǒng)結(jié)構(gòu)看,Jailhouse 是一種 Type-I 型的虛擬機(jī)監(jiān)控器。但與 Type-I 型虛擬機(jī)監(jiān)控器不同,其系統(tǒng)的初始化過程依賴于主控 Linux 分區(qū)。但它也不像 Type-II 型虛擬機(jī)監(jiān)控器圖,通過宿主操作系統(tǒng)來實(shí)現(xiàn)運(yùn)行時的管理。它更類似于一種 Type-I 和 Type-II 的混合結(jié)構(gòu),主控 Linux 分區(qū)被用作當(dāng)成虛擬機(jī)監(jiān)控器的 BootLoader,而不是一個具有特權(quán)的管理域。

內(nèi)存虛擬化

在非虛擬化條件下,虛擬地址經(jīng)過 CPU 的內(nèi)存管理單元(MMU)的一輪多級頁表查詢轉(zhuǎn)換為物理地址。在虛擬化平臺下,虛擬地址(VA)通過客戶操作系統(tǒng)所管理的頁表轉(zhuǎn)換后不再是實(shí)際發(fā)送到內(nèi)存總線的物理地址(PA),而是一個待虛擬機(jī)化平臺繼續(xù)轉(zhuǎn)換(至物理地址)的中間地址。本文稱之為中間物理地址(IPA)。盡管直接重用針對操作系統(tǒng)設(shè)計的虛擬內(nèi)存機(jī)制 ? 可找到支持虛擬機(jī)的方案,但通常而言這需要在虛擬機(jī)訪問虛存控制寄存器時發(fā)生自陷,并由虛擬機(jī)監(jiān)控器構(gòu)建一個影子頁表。影子頁表方案的缺點(diǎn)在于增加了性能開銷和實(shí)現(xiàn)復(fù)雜度。因此,使客戶操作系統(tǒng)不通過自陷管理虛存數(shù)據(jù)結(jié)構(gòu),同時允許虛擬機(jī)監(jiān)控器對物理內(nèi)存資源全權(quán)管理,是硬件內(nèi)存虛擬化技術(shù)所追求的目標(biāo)。為了實(shí)現(xiàn)該目標(biāo),ARM64 處理器實(shí)現(xiàn)了一個基于兩階段地址轉(zhuǎn)換的虛存管理機(jī)制,如下圖所示:

fee15d8e-9837-11ee-8b88-92fbcf53809c.png

在兩階段地址轉(zhuǎn)換下,第一階段地址轉(zhuǎn)換頁表由操作系統(tǒng)進(jìn)行管理,負(fù)責(zé)將應(yīng)用程序的虛擬地址(VA)轉(zhuǎn)換成操作系統(tǒng)視圖下的物理地址。由于此時操作系統(tǒng)所使用的內(nèi)存資源處于虛擬機(jī)監(jiān)控器的管理之下,操作系統(tǒng)視圖下的物理地址并非真實(shí)的物理內(nèi)存,而是一個中間物理地址(IPA)。虛擬機(jī)監(jiān)控器在 EL2 下管理第二階段地址轉(zhuǎn)換的頁表,該階段將 IPA 最終轉(zhuǎn)換成物理地址。

每一階段所使用的頁表級數(shù)由 VA、IPA 以及 PA 的地址空間以及頁面大小所決定。當(dāng)?shù)诙A段轉(zhuǎn)換被使能時,所有 IPA 將通過一組專用的頁表被轉(zhuǎn)換為 PA。兩個階段的轉(zhuǎn)換均可以被獨(dú)立的使能與禁用。當(dāng)?shù)谝浑A段地址轉(zhuǎn)換被禁用時,VA 和 IPA 相等。與其類似,當(dāng)?shù)诙A段地址轉(zhuǎn)換被禁用時,IPA 和 PA 相等。兩個階段地址轉(zhuǎn)換使用的頁表格式有細(xì)節(jié)上的區(qū)別。

通過使能兩階段地址轉(zhuǎn)換機(jī)制,客戶操作系統(tǒng)無需自陷至 EL2 來管理自己的第一階段地址轉(zhuǎn)換的頁表以及相關(guān)的虛存控制寄存器。對于客戶操作系統(tǒng)中的應(yīng)用程序,第一階段頁表將其 VA 轉(zhuǎn)換成 IPA,隨后 IPA 通過第二階段地址轉(zhuǎn)換被映射為 PA。第二階段地址轉(zhuǎn)換僅支持在 EL2 下進(jìn)行配置,可被完全的禁止或使能。虛擬機(jī)監(jiān)控器負(fù)責(zé)管理 IPA 到 PA 的地址映射。對于虛擬機(jī)監(jiān)控器自身的程序,其 VA 的轉(zhuǎn)換并非為兩階段的轉(zhuǎn)換機(jī)制,而是使用一個特殊的頁表基地址寄存器(TTBR0_EL2),通過一個階段的地址轉(zhuǎn)換直接轉(zhuǎn)換成 PA。這是因?yàn)?,虛擬機(jī)監(jiān)控器擁有對物理內(nèi)存資源的所有管理權(quán)限,其自身所使用的地址即為真實(shí)的物理資源地址,而非如同在操作系統(tǒng)視圖下的物理地址那樣實(shí)際上只是一個中間物理地址。

IO 虛擬化

客戶機(jī)系統(tǒng)使用外圍設(shè)備區(qū)域來訪問其看到的物理外圍設(shè)備,這其中包含了直通設(shè)備和虛擬外圍設(shè)備。虛擬設(shè)備由 Jailhouse 模擬。

一個直通設(shè)備被直接分配給客戶機(jī)并映射到 IPA 地址空間,這使得客戶機(jī)中的軟件可用直接訪問真實(shí)的物理硬件。雖然客戶機(jī)中的軟件看來其是直接與物理設(shè)備交互,但實(shí)際上這一訪問會陷入相應(yīng)的異常處理程序。IO 虛擬化實(shí)現(xiàn)之前首先是對 IO 訪問的攔截和校驗(yàn),因?yàn)?Jailhouse 首先要知道的是此次 IO 訪問是否合法,這是保證安全隔離的必要條件。通過與系統(tǒng)配置信息對比,如果是非法 IO 的話,MMIO 會轉(zhuǎn)到 panic 流程。在 panic 中 Jailhouse 會輸出此次非法 IO 的地址、讀寫以及異常發(fā)生時的上下文。只有當(dāng) IO 校驗(yàn)符合系統(tǒng)配置要求時,才會進(jìn)入 MMIO 的 handler 處理。這是做到安全隔離的必要手段。

中斷虛擬化

GIC 針對中斷虛擬化的需求進(jìn)行了虛擬化功能擴(kuò)展,降低了虛擬機(jī)監(jiān)控器對虛擬中斷傳遞模擬的開銷。GICv3 在物理 CPU 接口的基礎(chǔ)上擴(kuò)展了虛擬 CPU 接口(VirtualCPUInterface)和相應(yīng)的虛擬化控制接口(VirtualizationControlInterface)。虛擬機(jī)在運(yùn)行時被配置為訪問虛擬 CPU 接口,而不是實(shí)際的物理 CPU 接口。虛擬中斷是通過向虛擬化控制接口中特殊寄存器 LR(ListRegiter)發(fā)起寫操作而生成的,虛擬中斷產(chǎn)生后直接進(jìn)入 EL1。由于虛擬 CPU 接口中包含了對 ACK 和 EOI 的支持,因此當(dāng)客戶操作系統(tǒng)的 ACK 或 EOI 操作不再觸發(fā)虛擬機(jī)監(jiān)控器的自陷和模擬,從而降低了虛擬機(jī)接收中斷的開銷。例如,當(dāng)虛擬設(shè)備通過軟件編程接口向虛擬機(jī)發(fā)送虛擬中斷時,虛擬機(jī)監(jiān)控器將虛擬中斷號寫入 LR 寄存器,實(shí)現(xiàn)將虛擬中斷注入到虛擬機(jī)的操作。當(dāng)進(jìn)入虛擬機(jī)后,GIC 的虛擬化擴(kuò)展中斷虛擬機(jī)內(nèi)用戶進(jìn)程的執(zhí)行,使之進(jìn)入客戶操作系統(tǒng)所定義的異常向量入口,隨后由客戶操作系統(tǒng)獨(dú)立完成 ACK、EOI 等操作:

fefbc3d6-9837-11ee-8b88-92fbcf53809c.png

域間通信

雖然分區(qū)將硬件資源進(jìn)行了劃分,通過虛擬機(jī)監(jiān)控器實(shí)現(xiàn)了相互隔離,但在實(shí)際應(yīng)用過程中,分區(qū)間也需進(jìn)行通信。為此,Jailhouse 為分區(qū)間使用共享內(nèi)存與信號機(jī)制構(gòu)建分區(qū)間通信的通道。具體來說,一個通道將兩個分區(qū) 1:1 對應(yīng)地連接起來,不存在“1:N”,“N:M”的連接范式,如圖:

ff0dac40-9837-11ee-8b88-92fbcf53809c.png

可使用兩種類型的通信機(jī)制:通過傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議(TCP/IP)進(jìn)行網(wǎng)絡(luò)通信,該協(xié)議使用 TCP/IP 協(xié)議在節(jié)點(diǎn)之間發(fā)送數(shù)據(jù),或通過使用分區(qū)之間的共享內(nèi)存(利用此功能的協(xié)議示例為 IVSHMEM)。

TCP/IP 是一種更適合于客戶機(jī)駐留在獨(dú)立物理機(jī)中的協(xié)議,換句話說,當(dāng)多個物理機(jī)需要相互連接時,它意味著為多個物理機(jī)提供通信通道。然而,考慮到要傳輸?shù)臄?shù)據(jù)經(jīng)過協(xié)議棧,通過 TCP/IP 進(jìn)行通信更耗時。

共享內(nèi)存更適用于虛擬機(jī)駐留再內(nèi)存中的情況,因?yàn)椴煌姆謪^(qū)在同一個物理機(jī)上建立。使用共享內(nèi)存協(xié)議可以減少交換數(shù)據(jù)所需的操作次數(shù),并且更改是直接可見的。

對每個分區(qū),通信通道的終端編程接口被設(shè)計為 PCI 設(shè)備接口,以便分區(qū)客戶操作系統(tǒng)通過初始化階段的 PCI 設(shè)備掃描發(fā)現(xiàn)。設(shè)備的實(shí)現(xiàn)參考了 ivshmem 設(shè)備模型,使用 intx 中斷實(shí)現(xiàn)信號通知機(jī)制。為了實(shí)現(xiàn)分區(qū)間設(shè)備狀態(tài)的同步,通道 PCI 設(shè)備提供了兩個額外的 MMIO 寄存器,一個用于寫入本地分區(qū)狀態(tài),另一個用于讀取遠(yuǎn)程分區(qū)寫入的狀態(tài)。在兩個分區(qū)之間建立通信通道時,虛擬機(jī)監(jiān)控器首先需要在兩個分區(qū)的地址空間中分別分配一片內(nèi)存區(qū)域,然后分配一片與之大小相同的可讀寫物理頁面并進(jìn)行映射。最終在各個分區(qū)使用這個虛擬的 pci 設(shè)備進(jìn)行域間通信。

Jailhouse 對 openEuler 系統(tǒng)性能評估

「對 HostOS 的影響性能評估」

ff2bc504-9837-11ee-8b88-92fbcf53809c.png

Jailhouse 設(shè)備穿透性能評估

ff3794ba-9837-11ee-8b88-92fbcf53809c.png

LTP 穩(wěn)定性測試

Intel I7-8700、鯤鵬 920、飛騰 2000/4、樹莓派 4B 平臺測試 5 天,開啟 Jailhouse 后無新增穩(wěn)定性問題出現(xiàn)。

「Jailhouse 在 openEuler 的現(xiàn)狀」

Jailhouse 是由工業(yè)控制 SIG 組引進(jìn),由麒麟軟件和菁蓉聯(lián)創(chuàng)科技共同維護(hù)。

已支持飛騰 FT2004、D2000、E2000Q、E2000D、RK3588 等設(shè)備 。

目前 jailhouse 已經(jīng)適配 openEuler2203 Embedded 系統(tǒng),可以在樹莓派 4B 平臺運(yùn)行 FreeRTOS 虛擬化,由菁蓉聯(lián)創(chuàng)科技貢獻(xiàn)的jailhouse-gui 項(xiàng)目也已同步發(fā)布。

Jailhouse 在 openEuler 的未來發(fā)展

未來工業(yè)控制 SIG 組的麒麟軟件會關(guān)注于其他國內(nèi)平臺適配,瑞芯微系列(RK3399、RK3568)、全志系列等;易用性工具推廣,如配置文件自動生成工具、UEFI 兼容等;新特新優(yōu)化,如子頁訪問效率提升、jailhouse coredump、PCIE 設(shè)備隔離。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10702

    瀏覽量

    209395
  • 西門子
    +關(guān)注

    關(guān)注

    93

    文章

    2958

    瀏覽量

    114839
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11123

    瀏覽量

    207919
  • 實(shí)時操作系統(tǒng)

    關(guān)注

    1

    文章

    194

    瀏覽量

    30683
  • openEuler
    +關(guān)注

    關(guān)注

    2

    文章

    299

    瀏覽量

    5784

原文標(biāo)題:Jailhouse原理及openEuler下的性能剖析

文章出處:【微信號:openEulercommunity,微信公眾號:openEuler】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    jailhouse是什么?有何優(yōu)點(diǎn)

    簡介jailhouse是一個嵌入式系統(tǒng)的虛擬化工具,它的英文介紹如下,非常強(qiáng)調(diào)partition。實(shí)時性比較好,隔離的也比較好。Jailhouse, a Linux-based partitioning hypervisor由德國西門子開發(fā)。。版權(quán):GPLv2代碼地址:論
    發(fā)表于 12-23 08:05

    如何完成openEuler面向RK3399開發(fā)板的移植?

    如何制作openEuler的rootfs.img?如何完成openEuler面向RK3399開發(fā)板的移植?
    發(fā)表于 03-04 07:42

    openEuler 社區(qū) 2022 年 6 月運(yùn)作報告

    openEuler社區(qū)運(yùn)作報告2022年6月去年11月,openEuler社區(qū)捐贈給開放原子開源基金會后,openEuler在技術(shù)、商業(yè)、生態(tài)、開源建設(shè)等各方面取得顯著發(fā)展。本月,我們來聊聊
    發(fā)表于 07-08 14:37

    openEuler 社區(qū)完成首批顧問專家聘用,共同為社區(qū)的發(fā)展?貢獻(xiàn)力量

    openEuler 在2021年11月捐贈給開放原子開源基金會后,在生態(tài)構(gòu)建、技術(shù)創(chuàng)新和商業(yè)落地全面加速,取得了跨越式進(jìn)展。作為一個支持多樣性計算和持續(xù)推動技術(shù)創(chuàng)新的操作系統(tǒng)開源社區(qū)
    發(fā)表于 07-29 10:11

    openEuler資源利用率提升之道02:典型應(yīng)用的效果

    前文[1]介紹了資源利用率提升這個課題的產(chǎn)生背景、形成原因、解決思路,以及在 openEuler 上所構(gòu)建的資源利用率整體解決方案和技術(shù)演進(jìn)思路。本篇我們針對容器在離線場景的典型應(yīng)用類型( CPU
    發(fā)表于 08-10 11:12

    使用 Canonical MAAS 部署 openEuler 測試

    /openeuler$“http/ openeuler.ks”則基于“rhel8.ks”并刪除那些在openeuler會失敗的配置。其中最重要修改如下:ubuntu@vm-
    發(fā)表于 08-24 11:43

    一次 Rancher 和 openEuler 的上云之旅

    和 Docker 容器技術(shù)領(lǐng)域都有豐富的研發(fā)和實(shí)踐經(jīng)驗(yàn)。Rancher 是一套開源的企業(yè)級容器管理平臺,支持大量的 Kubernetes 發(fā)行版以及 Linux 操作系統(tǒng),[將 openEuler Linux
    發(fā)表于 09-29 10:57

    openEuler RISC-V 23.03 創(chuàng)新版本亮相:全面提升硬件兼容性和桌面體驗(yàn)

    VisionFive 2 和算能 SG2042 兩款設(shè)備。支持 SG2042openEuler RISC-V 23.03 創(chuàng)新版本成功接入 RISC-V 64 cores 高性能處理器 SG2042(EVB
    發(fā)表于 04-15 13:55

    openEuler RISC-V 成功適配 LicheePi 4A 開發(fā)板

    近期,RISC-V SIG 在 LicheePi 4A 開發(fā)板上成功實(shí)現(xiàn)了歐拉操作系統(tǒng)的適配。目前,最新版本的 openEuler RISC-V 23.03 V1 鏡像已在 LicheePi 4A
    發(fā)表于 05-04 22:22

    全面剖析負(fù)極材料和電池性能關(guān)系

    全面剖析負(fù)極材料和電池性能關(guān)系
    的頭像 發(fā)表于 03-11 15:53 ?2260次閱讀
    全面<b class='flag-5'>剖析</b>負(fù)極材料和電池<b class='flag-5'>性能</b>關(guān)系

    HPC SIG致力openEuler上的高性能計算軟件生態(tài)

    經(jīng) openEuler 社區(qū)技術(shù)委員會討論批準(zhǔn),openEuler 社區(qū)正式成立 HPC SIG。HPC SIG 致力于發(fā)展 openEuler 上的高性能計算軟件生態(tài),在
    的頭像 發(fā)表于 09-26 09:37 ?2044次閱讀

    歐拉(openEuler)Summit 2021:基于AI的操作系統(tǒng)性能調(diào)優(yōu)引擎

     歐拉(openEuler)Summit 2021直播會上,重點(diǎn)介紹基于AI的操作系統(tǒng)性能調(diào)優(yōu)引擎。
    的頭像 發(fā)表于 11-10 10:46 ?2018次閱讀
    歐拉(<b class='flag-5'>openEuler</b>)Summit 2021:基于AI的操作系統(tǒng)<b class='flag-5'>性能</b>調(diào)優(yōu)引擎

    歐拉(openEuler)Summit 2021:歐拉demo分享——etMem

    歐拉(openEuler)Summit 2021上,歐拉開源社區(qū)Maintainer,鄭振宇關(guān)于etMem內(nèi)存分級擴(kuò)展,同等性能內(nèi)存成本顯著降低的相關(guān)介紹。
    的頭像 發(fā)表于 11-10 09:51 ?1832次閱讀
    歐拉(<b class='flag-5'>openEuler</b>)Summit 2021:歐拉demo分享——etMem

    全面剖析電子管的性能

    全面剖析電子管的性能
    發(fā)表于 01-20 10:14 ?9次下載

    RocketMQ on openEuler提供高性能消息隊(duì)列的穩(wěn)定性解決方案

    RocketMQ on openEuler,是一種將 RocketMQ 消息中間件通過容器化的方式部署在 openEuler 操作系統(tǒng)上運(yùn)行,借助 openEuler 系統(tǒng)對于 OS 緩存回收
    的頭像 發(fā)表于 06-28 10:57 ?477次閱讀
    RocketMQ on <b class='flag-5'>openEuler</b>提供高<b class='flag-5'>性能</b>消息隊(duì)列的穩(wěn)定性解決方案