国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Jailhouse原理及openEuler下的性能剖析

openEuler ? 來源:openEuler ? 2023-12-12 10:40 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

Jailhouse 原理

Jailhouse 本身并不改造 Linux 內核,而是利用 Linux 系統的開放性,增加一個或多個實時操作系統,實現多系統在一個多核處理器上運行,如下圖所示:

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

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

一般而言,虛擬機監控器擁有兩種結構類型:Type-I 類型和 Type-II 類型。Type-I 類型的虛擬機監控器是獨立運行在硬件/固件層之上的一層很薄的軟件;而 Type-II 類型的虛擬機監控器則是運行在宿主機操作系統之上的。

Jailhouse 上擁有一個主控節點,通常運行 Linux 操作系統,負責完成系統的初始化并提供管理員接口。該主控節點并不具備全部硬件資源的控制權限。當虛擬機監控器完成初始化,新的分區完成創建后,相關的硬件資源將直接劃分至對應的分區中,由運行在分區中的操作系統進行管理。如果從運行時的系統結構看,Jailhouse 是一種 Type-I 型的虛擬機監控器。但與 Type-I 型虛擬機監控器不同,其系統的初始化過程依賴于主控 Linux 分區。但它也不像 Type-II 型虛擬機監控器圖,通過宿主操作系統來實現運行時的管理。它更類似于一種 Type-I 和 Type-II 的混合結構,主控 Linux 分區被用作當成虛擬機監控器的 BootLoader,而不是一個具有特權的管理域。

內存虛擬化

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

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

在兩階段地址轉換下,第一階段地址轉換頁表由操作系統進行管理,負責將應用程序的虛擬地址(VA)轉換成操作系統視圖下的物理地址。由于此時操作系統所使用的內存資源處于虛擬機監控器的管理之下,操作系統視圖下的物理地址并非真實的物理內存,而是一個中間物理地址(IPA)。虛擬機監控器在 EL2 下管理第二階段地址轉換的頁表,該階段將 IPA 最終轉換成物理地址。

每一階段所使用的頁表級數由 VA、IPA 以及 PA 的地址空間以及頁面大小所決定。當第二階段轉換被使能時,所有 IPA 將通過一組專用的頁表被轉換為 PA。兩個階段的轉換均可以被獨立的使能與禁用。當第一階段地址轉換被禁用時,VA 和 IPA 相等。與其類似,當第二階段地址轉換被禁用時,IPA 和 PA 相等。兩個階段地址轉換使用的頁表格式有細節上的區別。

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

IO 虛擬化

客戶機系統使用外圍設備區域來訪問其看到的物理外圍設備,這其中包含了直通設備和虛擬外圍設備。虛擬設備由 Jailhouse 模擬

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

中斷虛擬化

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

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

域間通信

雖然分區將硬件資源進行了劃分,通過虛擬機監控器實現了相互隔離,但在實際應用過程中,分區間也需進行通信。為此,Jailhouse 為分區間使用共享內存與信號機制構建分區間通信的通道。具體來說,一個通道將兩個分區 1:1 對應地連接起來,不存在“1:N”,“N:M”的連接范式,如圖:

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

可使用兩種類型的通信機制:通過傳輸控制協議/互聯網協議(TCP/IP)進行網絡通信,該協議使用 TCP/IP 協議在節點之間發送數據,或通過使用分區之間的共享內存(利用此功能的協議示例為 IVSHMEM)。

TCP/IP 是一種更適合于客戶機駐留在獨立物理機中的協議,換句話說,當多個物理機需要相互連接時,它意味著為多個物理機提供通信通道。然而,考慮到要傳輸的數據經過協議棧,通過 TCP/IP 進行通信更耗時。

共享內存更適用于虛擬機駐留再內存中的情況,因為不同的分區在同一個物理機上建立。使用共享內存協議可以減少交換數據所需的操作次數,并且更改是直接可見的。

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

Jailhouse 對 openEuler 系統性能評估

「對 HostOS 的影響性能評估」

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

Jailhouse 設備穿透性能評估

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

LTP 穩定性測試

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

「Jailhouse 在 openEuler 的現狀」

Jailhouse 是由工業控制 SIG 組引進,由麒麟軟件和菁蓉聯創科技共同維護。

已支持飛騰 FT2004、D2000、E2000Q、E2000D、RK3588 等設備 。

目前 jailhouse 已經適配 openEuler2203 Embedded 系統,可以在樹莓派 4B 平臺運行 FreeRTOS 虛擬化,由菁蓉聯創科技貢獻的jailhouse-gui 項目也已同步發布。

Jailhouse 在 openEuler 的未來發展

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

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    11279

    瀏覽量

    224995
  • 西門子
    +關注

    關注

    98

    文章

    3312

    瀏覽量

    120382
  • Linux
    +關注

    關注

    88

    文章

    11760

    瀏覽量

    219036
  • 實時操作系統

    關注

    1

    文章

    206

    瀏覽量

    31950
  • openEuler
    +關注

    關注

    2

    文章

    337

    瀏覽量

    6731

原文標題:Jailhouse原理及openEuler下的性能剖析

文章出處:【微信號:openEulercommunity,微信公眾號:openEuler】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    jailhouse是什么?有何優點

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

    如何完成openEuler面向RK3399開發板的移植?

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

    openEuler 社區 2022 年 6 月運作報告

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

    openEuler 社區完成首批顧問專家聘用,共同為社區的發展?貢獻力量

    openEuler 在2021年11月捐贈給開放原子開源基金會后,在生態構建、技術創新和商業落地全面加速,取得了跨越式進展。作為一個支持多樣性計算和持續推動技術創新的操作系統開源社區
    發表于 07-29 10:11

    openEuler資源利用率提升之道02:典型應用的效果

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

    使用 Canonical MAAS 部署 openEuler 測試

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

    一次 Rancher 和 openEuler 的上云之旅

    和 Docker 容器技術領域都有豐富的研發和實踐經驗。Rancher 是一套開源的企業級容器管理平臺,支持大量的 Kubernetes 發行版以及 Linux 操作系統,[將 openEuler Linux
    發表于 09-29 10:57

    openEuler RISC-V 23.03 創新版本亮相:全面提升硬件兼容性和桌面體驗

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

    openEuler RISC-V 成功適配 LicheePi 4A 開發板

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

    HPC SIG致力openEuler上的高性能計算軟件生態

    openEuler 社區技術委員會討論批準,openEuler 社區正式成立 HPC SIG。HPC SIG 致力于發展 openEuler 上的高性能計算軟件生態,在
    的頭像 發表于 09-26 09:37 ?2687次閱讀

    歐拉(openEuler)Summit 2021:基于AI的操作系統性能調優引擎

     歐拉(openEuler)Summit 2021直播會上,重點介紹基于AI的操作系統性能調優引擎。
    的頭像 發表于 11-10 10:46 ?2784次閱讀
    歐拉(<b class='flag-5'>openEuler</b>)Summit 2021:基于AI的操作系統<b class='flag-5'>性能</b>調優引擎

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

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

    歐拉(openEuler)亮點openEuler Summit 2021上中科創達展示在邊緣側的能力

    可能。 在openEuler Summit 2021上中科創達展示在邊緣側的能力;你在攝像頭拿根煙出來,都可以識別,并且發出提示。 圖源? 直播視頻
    的頭像 發表于 11-10 11:42 ?2009次閱讀
    歐拉(<b class='flag-5'>openEuler</b>)亮點<b class='flag-5'>openEuler</b> Summit 2021上中科創達展示在邊緣側的能力

    openEuler Call for X 計劃”正式啟動

    openEuler最具價值專家, openEuler Valuable Professional,是openEuler社區頒發給技術專家的一項榮譽認證,以此表彰他們熱衷實踐、樂于分享的布道精神,為
    的頭像 發表于 06-21 14:36 ?1269次閱讀
    “<b class='flag-5'>openEuler</b> Call for X 計劃”正式啟動

    RocketMQ on openEuler提供高性能消息隊列的穩定性解決方案

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