1. 程式人生 > >用Zynq UltraScale+ MPSoC 上的 Xen 管理程式實現虛擬化

用Zynq UltraScale+ MPSoC 上的 Xen 管理程式實現虛擬化

http://xilinx.eetrend.com/d6-xilinx/article/2016-05/10070.html
由 kai 於 星期四, 05/05/2016 - 11:19 發表

摘要:虛擬化對桌面系統已是司空見慣,但對嵌入式系統設計人員來說,卻一直是一個棘手的問題,因為嵌入式系統設計人員需要優化 SoC 系統的利用率和效能。

傳統上,虛擬化難以用於嵌入式領域,是因為缺乏既可簡化解決方案實現工作,又能提供滿意效能的合適硬體資源。因此,需要在同一處理器上執行異構軟體協議棧的系統不得不依賴於人工管理各種軟體協議棧,或不得不接受未加速虛擬化所帶來的更大時延和效能特性下降等缺陷。

位於每個 Zynq UltraScale+ MPSoC 核心的 ARM®v8 架構能確保真正的硬體加速虛擬化,克服這些實現障礙。此外,Xen 管理程式提供的易用性為在嵌入式系統中實現桌面級效能和生產力奠定了基礎。執行在 Zynq UltraScale+ MPSoC 上的 Xen 管理程式為系統設計人員提供完整的解決方案,能充分釋放嵌入式系統設計的全部潛力。

簡介

虛擬化通過讓多個軟體協議棧同時執行在同一處理器上,已經征服了桌面系統,現在將進軍嵌入式系統。VMWare 和 VirtualBox 這樣的常用套件已經讓虛擬化成為桌面使用者司空見慣的做法。這類軟體被視為臺式電腦生產力增強器,不過賽靈思 Zynq UltraScale+ MPSoC 等嵌入式片上系統(SoC) 也可運用同一原理充分發揮最大潛能。

虛擬化的作用隨系統發生變化。對某些設計人員來說,虛擬化能夠讓處理器始終保持滿負載狀態,從而節省電力,最大化效能。對其他系統,虛擬化可對各個軟體協議棧進行分割槽,實現隔離或冗餘。

傳統上,虛擬化難以用於嵌入式領域,是因為缺乏既可簡化解決方案實現工作,又能提供滿意效能的合適硬體資源。因此,需要在同一處理器上執行異構軟體協議棧的系統不得不依賴於人工管理各種軟體協議棧,或不得不接受未加速虛擬化所帶來的更大時延和效能特性下降等缺陷。

位於每個 Zynq UltraScale+ MPSoC 核心的 ARM®v8 架構能確保真正的硬體加速虛擬化,克服這些實現障礙。此外,Xen 管理程式提供的易用性為在嵌入式系統中實現桌面級效能和生產力奠定了基礎。執行在 Zynq UltraScale+ MPSoC 上的 Xen 管理程式為系統設計人員提供完整的解決方案,能充分釋放嵌入式系統設計的全部潛力。

為什麼要虛擬化嵌入式系統?

是否需要虛擬化一般由下列三大系統設計特徵之一決定的:

• 處理器必須能根據效能規範要求儘量保持滿載。
• 應安全、可擴充套件性和/ 或可靠性的要求需要進行軟體隔離或分割槽。
• 為滿足可靠性要求,需要進行縮放或提供冗餘。

硬體加速的虛擬化位於 Zynq UltraScale+ MPSoC 的 ARMv8 架構的核心位置。這種協同架構不僅能滿足上述每一項要求,實際上它還能簡化實現工作。之所以能這樣,是因為它為每個客戶軟體協議棧提供一個隔離的沙盒。沒有這樣的硬體加速,這些系統會變得複雜得多,給實現和管理帶來切實的問題。

經優化的系統載入

對系統載入進行精心管理是嵌入式系統的共通難題,在沒有管理程式輔助時還會造成一系列嚴峻的執行問題。Linux 等傳統作業系統非常擅長於處理對稱多處理 (SMP) 任務,此時所有處理器核都處在它的控制之下。但是如果不是每一個處理器都有任務會怎麼樣? Linux 會讓沒有使用的處理器處於待機狀態。

Linux 的多個例項可按原樣虛擬化(即對 Linux 不做修改),每個例項都執行自己的一組任務。可以根據需要將 Linux 的新例項投入使用。相反如果需求較低,這些 Linux 例項可以關閉。因此處理器可以根據需要啟用或待機,但系統總體上能保持近乎持續的繁忙。另外,管理多個不同的軟體協議棧也可採用類似的方法。這樣無需要求所有的虛擬作業系統相同,從而提高最終系統的靈活性和模組化水平。

經優化的軟體隔離與分割槽

軟體隔離和分割槽是另一個能給非託管環境帶來嚴峻挑戰的常見用例。這個問題與系統載入問題類似,但是包含一項額外的要求,即每個軟體協議棧不能與任何同時執行的軟體協議棧發生干擾。這種情況的最簡單的例子是兩個並行執行的實時作業系統。滿足這些需求的傳統方法會增大軟體的複雜性,以確保每個 RTOS 只與分配給自己的有限資源互動。相比之下,虛擬化系統採用的沙盒模式能讓每個 RTOS 完全控制其沙盒中可用的資源。它把這個沙盒視為完整系統,在使用時無需瞭解是否有其他軟體可能在系統上執行。這種沙盒模式能極大地減少繫結到特定硬體平臺的資源,提高程式碼的可移植性。此外,該 RTOS無需感知系統中的任何其他軟體,讓它能大幅得到簡化。這種脫離依賴性的方法,對開發人員來說是一個巨大的福音,因為他們只需編寫一次程式碼,就能將它部署到眾多的不同系統上。

經優化的縮放與冗餘

對於嵌入式系統,縮放與冗餘需求會隨著 SoC 的效能和功能的增強而提升。縮放要求載入在處理器上的軟體量隨系統需求增長而增加。例如高效能運算環境要求將更多 Linux 作業系統例項投入使用,滿足使用者提出的更多請求。通過運用虛擬化,能夠根據需要將 Linux 的相同複本投
入使用。隨後,隨著系統上的需求減少,這些 Linux 的例項可被關閉。

冗餘要求特定服務保持可用,甚至是在系統處於非常時期的時候也一樣。例如 RTOS 能提供對特定系統功能的關鍵監測。如果該 RTOS 因某種原因失效呢?使用虛擬化,系統監控器能檢測到故障,還能重新啟動該 RTOS,或者啟動該 RTOS 的一個新例項,從而最大限度地降低或消除這些關鍵系統服務的停機時間。

為什麼選擇 Xen

在選擇管理程式解決方案的時候,重要的是讓它穩健和可靠。此外,它必須通過積極主動的開發來跟上它周圍世界發生的變化的步伐。Xen 管理程式就是這樣的一種解決方案。

Xen 最初是上個世紀 90 年代晚期在劍橋大學作為更大的Xenoserver 專案的子專案開始的。它於 2000 年代早期釋出給開源社群,並在 2013 年得到 Linux 基金會的支援。在 Linux 基金會的鼎力支援下,Xen 已經成為基於 Linux 的作業系統的事實管理程式解決方案。

雖然 Xen 的傳統架構一直是相容 x86,近期的主機開發使之也成為 ARM 架構上的穩健解決方案。Xen 能充分發揮包括系統儲存器管理單元 (SMMU) 在內的 ARMv8 底層虛擬硬體的作用。

Xen 免費提供,並配套標準的 GPLv2 許可證,有活躍的使用者社群開發新特性,以及豐富的技術支援資源。對需要商業化維護和支援的整合商而言,有 DornerWorks 這樣的廠商為 Xen 提供專業支援和結構。

在選擇管理程式解決方案時,軟體支援也是一個關鍵的差異化因素。Xen 本身是一種 I 類管理程式,即它能直接在底層硬體上執行,而不像 II 類管理程式 VMWare 或 VirtualBox 執行在主機作業系統上。

Xen 管理程式把客戶作業系統劃分為域。它使用特殊的管理介面Dom0 控制管理程式的執行時操作。該域為 Xen 管理程式提供專用軟體基礎架構。這種執行結構對 Xen 的正常工作是必須的。Dom0 使用其核心內的專用軟體以及能夠直接訪問底層硬體的專用管理驅動程式。最常見的 Dom0 作業系統之一是Linux,它能夠有力地支援 Zynq UltraScale+ MPSoC。

所有存在於非專用域內的標準客戶操作程式都被集中稱之 DomU。包括 Linux 這樣的高階作業系統、FreeRTOS 這樣的實時作業系統乃至裸機程式碼等各種客戶軟體都在底層受 Xen 支援用於 DomU。任何主機與客戶的組合都完全受系統設計人員的需求驅動。相比之下,大部分商業管理程式解決方案只支援有限數量的客戶而且是在極為具體的配置中,一般是管理程式提供方自己開發的配置中。

將 Xen 管理程式與 Zynq UltraScale+ MPSoC 整合簡便易行

即便管理程式解決方案使用最出色的技術元件,如果不能簡單直觀地實施在使用者系統中,也基本上沒有什麼用處。通過極為貼近 Linux 核心,Xen 在這方面能提供很多便利。實現 Xen 管理程式功能與在Linux 核心中實現任何其他特性沒有區別。此外。管理 DomU 沙盒既可以手動處理,也可以通過稱為Xen 工具的工具套件處理。

對於將 Linux 用作 Dom0 的設計人員,通過命令列就能簡單易行地安裝 Xen 工具。Xen 工具可使用原始碼構建和安裝,也可藉助 RPM 或 APT 等通用封裝管理器構建和安裝。

安裝完成後,Xen 工具能從 Linux 使用者空間用名為xl 的工具建立、管理和損壞 DomU 環境。

建立新的虛擬機器與建立描述虛擬化環境的明文 ASCII 配 置檔案一樣簡單。該檔案設定如下的詳細內容:

• 為虛擬機器分配的儲存器數量
• 虛擬化的 CPU 的數量
• 聯網詳情
• 磁碟映象檔案

配置檔案還可以藉助文字解析工具和版本控制軟體輕鬆地加以管理。請參閱如下的例項程式碼:

This configures an HVM rather than PV guest

builder = “hvm”
  
  # Guest name
  name = “My Virtual Machine”
  
  # Initial memory allocation (MB)
  memory = 128
  
  # Number of VCPUs
  vcpus = 2
  
  # Disk Devices
  # A list of ‘diskspec’ entries as described in
  # docs/misc/xl-disk-configuration.txt
  disk = [’/dev/vg/guest-volume, raw, xvda, rw’]

用於管理虛擬機器的命令被稱為 xl。該命令可讓設計人員管理 Xen 虛擬機器從啟動到關斷的整個生命週期。要根據已有的配置檔案建立新的虛擬機器例項,設計人員可以使用一個簡單的單行命令建立 Xen 管理程式:

xl create

在虛擬機器的生命週期中,其他 xl 選項如 list、reboot 和 shutdown 都可以用於管理任務。

結論

多類系統都能從虛擬化獲益。許多采用其他方法會變得複雜化和高勞動強度的系統需求,也能夠使用Xen 實現在多處理器平臺上,如擁有ARMv8 處理器的賽靈思 Zynq UltraScale+ MPSoC。使用虛擬化能夠實現下面這些想實現而且往往相當關鍵的特性:

• 分割槽
• 隔離
• 可靠性
• 冗餘

虛擬化不僅能夠實現這些系統,還能讓實現工作相當簡單。系統設計人員應該在評估自己的設計時,考慮使用虛擬化解決方案來確保最優異、最具成本效益的結果。採用 ARMv8 多處理器的賽靈思 ZynqUltraScale+ MPSoC 對 Xen 管理程式和 Xen 工具集而言是理想的設計平臺。

對軟體開發人員而言,虛擬化能讓軟體協議棧的開發可移植、可靠,採用最少的膠合邏輯就能讓它們按要求執行。此外,在 Linux 基金的鼎力支援下,Xen 相當穩健,能跨越多種型別的作業系統和軟體協議棧提供穩健的整合和支援。最後,基於 Xen 的虛擬機器的管理使用易於使用的命令列介面和適合版本控制的明文 ASCII 文字配置,相當簡單