虛擬化技術在高性能計算機系統中的應用研究
隨著高性能計算機性能的提高,其規模不斷擴大,各部件之間的關系日益復雜,對系統的管理和使用也變得越來越困難。為了獲得較高的性能和效率,高性能計算機系統軟件必須根據體系結構的特點進行定制,高性能計算應用程序也需要根據特定體系結構進行優化。這樣不僅大大增加了系統軟件和應用程序的開發時間,加大了開發難度,還降低了應用的可移植性。此外,越來越大的系統規模和越來越高的軟硬件復雜性也降低了系統可靠性。特別是高性能計算機體系結構向多層次、多粒度異構化方向的發展使得上述問題變得更為突出。如何高效管理和使用高性能計算機系統,使其發揮最大效能,已成為系統軟件和應用開發人員亟待解決的關鍵技術難題。將虛擬化技術應用于構建高性能計算機系統是解決上述問題的一個有效途徑。
虛擬化技術最早出現在上世紀六、七十年代的IBM大型機系統中,用于支持高層軟件共用底層硬件資源,為用戶提供多個應用軟件運行環境。到了八十年代,由于多任務操作系統的出現、硬件費用的降低以及個人電腦的流行,虛擬化技術逐漸淡出人們的視野。隨著計算機軟硬件技術的進一步發展,硬件性能得到了顯著的提高,操作系統功能也越來越豐富,但系統可靠性和安全性卻變得越來越差。為了提高系統可靠性,系統管理員重新采用以往一臺機器運行一個應用的計算模型,但這種計算模型會導致更多的硬件成本和管理開銷。而虛擬化技術正好滿足了上述需求。將在多臺物理機器上運行的程序放置在虛擬機(VM)上運行,可以節約硬件設備成本,提高資源利用率,降低管理的成本,通過虛擬機之間相互隔離,可以有效提高系統可靠性和安全性。目前,虛擬化技術在臺式電腦和應用服務器領域已經取得了很好的應用效果,擁有如VMware workstation、Virtual PC和Xen等一批成功的虛擬化軟件。硬件廠商也紛紛加入虛擬化的行列,推動虛擬化技術的發展,如Intel的VT-X、VT-i和VT-d技術,AMD的Pacific技術等。
與在服務器領域的廣泛應用相比,虛擬化技術在高性能計算領域的應用還相對較少。本文首先詳細介紹目前虛擬化技術在高性能計算領域已有的幾個成功應用;然后分析總結虛擬化技術應用于高性能計算機系統時所面臨的主要問題;最后對虛擬化技術在高性能計算中的應用前景進行了展望。
2 虛擬化技術在高性能計算機系統中的應用研究
目前,國外一些公司和研究機構已經成功地將虛擬化技術應用到了高性能計算中,并取得了一些研究成果。這些應用包括了異構資源整合、系統容錯、虛擬環境構建以及并行編程等多個方面。
2.1 整合異構資源——Cray的自適應超級計算
在異構資源整合方面,Cray公司啟動了一個Cascade計劃,該計劃融合了虛擬化技術的思想精髓,提出自適應超級計算(Adaptive Supercomputing)的設想,目標是將現有的幾種不同的超級計算技術整合到一個統一的高性能計算平臺中。如圖1所示。Cray公司認為,高性能計算的未來將各種異構資源集成到同一系統中。為了得到較高的應用程序處理性能,也為了滿足用戶的高生產率的要求,高性能計算系統必須綜合利用各種類型的處理技術。
Cray采用了自適應超級計算技術把標量計算、向量計算、多線程和可重構計算技術都整合到同一個高性能計算平臺上去。多種類型的處理技術共享全局尋址存儲。采用符合工業標準的Linux操作系統,用戶可以將整合計算平臺作為單一系統來使用。通過虛擬化技術對低層進行抽象,用戶可以在抽象的系統架構之上,使用標準的并行編程語言來編寫應用程序。當進行程序編譯時,由編譯器先對代碼進行分析,確定哪一種類型的計算技術最適合這段代碼,然后再對這段代碼進行相應地編譯。程序開始執行的時候,調度軟件自動將代碼配置到合適的節點上運行。自適應超級計算使得系統能自動適應用戶代碼,而不是讓程序員改變代碼來適應特定系統。這就意味著能夠在同一個高性能計算平臺上支持更多不同領域、不同特點的高性能計算應用程序,用戶不必再為了在能夠某個特定系統更有效地運行而修改應用程序。
到2010年左右,Cascade系統的原型機將把各種類瓔的計算技術緊密集成到單一系統中去,在每一個機柜都集成了標量、向量、多線程和硬件加速等計算技術,并提供自適應軟件來使節點層的異構處理技術對用戶透明。
2.2資源管理——虛擬化集群系統
在資源管理方面,Ohio State大學和IBM Watson Research Center的Huang和Abali等人提出一種虛擬化集群系統框架結構。該框架結構采用模塊化方法進行設計,通過多種優化技術提高虛擬化集群系統的性能。
2.2.1虛擬化集群系統框架結構。
圖2基于VM的虛擬化集群系統框架結構
虛擬化集群系統框架結構主要包括了以下五個主要模塊:
(1)前端:前端是用戶與虛擬集群系統交互的界面,用戶可以在前端節點上定制系統環境,提交批處理的作業。
(2)物理資源:物理資源是通過高速互連網絡連接起來的計算節點,由虛擬機管理器進行管理。為了獲得最佳性能,一個物理節點上不會運行超過其上的CPU或核數目的虛擬機,以避免頻繁地切換狀態所帶來的性能損失。
(3)管理模塊:管理模塊是整個框架的核心,其主要任務是根據提交作業的要求查找和調度物理資源,實例化VM映像以滿足作業運行的要求。當獲得足夠多可用的空閑虛擬機時,管理模塊提交并執行作業。
(4)VM映像管理器:VM映像管理器管理所有的VM映像信息。這砦映像信息包含諸如VM核心版本、OS類型、特殊的庫等,被保存在VM映像數據庫中。VM映像管理器負責查找用戶作業需要的VM環境,然后用于創建對應的VM映像。
(5)存儲節點:存儲節點負責存儲VM映像和用戶生成的各種數據。
2.2.2 支持集群系統虛擬化的性能優化
在構建虛擬化集群系統時,Huang等人采用了多種技術對虛擬化集群系統進行性能優化。
(1)減小虛擬化帶來的額外性能開銷。
虛擬化集群系統中通過以下兩種技術來減小虛擬化帶來的性能開銷:
①VMM-bypass I/O技術:該技術允許VM通過DMA操作直接訪問底層網絡設備。這種訪問方式只產生非常小的I/0虛擬化開銷,可以使得高性能計算應用程序獲得接近原始的通信性能。
②定制OS技術:支持高性能計算應用程序運行所需最少的操作系統服務。通過裁減不必要的內核模塊和系統服務來定制OS,最大限度降低系統額外開銷。
(2)減小VM映像管理開銷。
虛擬化集群系統通過三種方法優化VM映像開銷:
①最小化VM映像:在虛擬化集群系統中,VM映像中包含了定制的OS環境,該OS環境幾乎只包含了MPI函數庫、必要的系統工具集以及一些運行時環境。這種定制VM映像非常小,可以在網絡上高效傳輸,并在其它節點上快速實例化。
②快速可擴展的VM映像分布:創建一個VM映像分布模塊負責將VM映像廣播到各個節點,并在各節點上實例化,比如通過基于二叉樹結構的廣播算法將映像廣播到各個目標物理節點上。這種做法可加速VIM映像的分布。
③緩存VM映像:在有足夠的存儲空間的前提下,可以在計算節點的本地存儲器上緩存VM映像。如果VM在最后一次實例化后沒有發生更新,就不需要傳輸新的VM到該計算節點,當發生更新時,可以僅傳輸更新部分。
#p#
2.3 系統容錯——基于Xen的主動容錯系統
隨著高性能計算機系統規模的擴大,系統故障率大大增加,傳統的容錯技術難以滿足高性能計算機可靠性的要求。針對上述問題,Nagarajan和Mueller等人在Xen的基礎七實現了一種主動容錯機制,允許進程自動地從失效節點遷移到健康節點。
該主動容錯系統主要包括三種機制:容錯機制、節點失效預測和負載平衡機制。
(1)基于Xen的容錯機制。高效的容錯機制必須能夠在系統出錯時花費最小的開銷對計算任務進行重定位,使其能在不同的物理節點上運行。更重要的是,在計算任務遷移時不應該中斷任務本身的執行。基于Xen半虛擬化技術,VM可以在節點出錯時進行動態遷移。通過預遷移方法,可以避免中斷任務運行,使VM內的所有狀態預先遷移到目標VM。遷移過后,VM可以從遷移前的狀態繼續向下執行。
(2)基于IPMI的節點失效預測。作為主動容錯系統,必須具備預測某峰未來事件的能力。通過采用智能平臺管理接口(IPMI)可以實現系統系統運行狀態的實時監控,預測未來的節點失效事件。當預測到某節點即將失效時,可以通知系統啟動上述容錯機制,主動將該節點上的VM遷移到健康節點上。
(3)基于Ganglia的負載平衡。VM遷移之前需要進行目標節點的選擇。該系統中采用Ganglia監控各節點的本地資源使用狀態,并將監控數據發送給其它節點,使所有節點都可以獲得整個集群系統的全局狀態。VM遷移時根據最新的全局狀態選擇目標節點。
2.4虛擬化系統環境——VSE
在構建虛擬化系統環境方面,美國橡樹嶺國家實驗室的Engelmann C等人提出一種虛擬系統環境(Virtual Systern Environment,簡稱VSE)。VSE具有良好的虛擬環境隔離性,可用于為高性能計算應用程序的開發和部署提供沙盒(Sandbox)環境,也可以支持系統軟件的開發和部署。
(1)VSE的系統架構。
VSE采用了系統級的虛擬機管理器(VMM)和VM配置機制,為高性能計算機系統軟件和應用程序的開發和移植提供基礎環境的保障。VSE的系統架構如圖3所示。
圖3 VSE的系統架構
VSE的核心部分是VMM。VMM實現對物理硬件資源的抽象,支持虛擬計算節點和虛擬開發節點的部署,以及虛擬節點上操作系統的運行。VMM通過VM保護機制保證VM之間以及VM和宿主機操作系統(Host OS)之間相互隔離。
(2)VSE的管理機制。
①系統管理。VSE采用一組系統管理工具和配置文件進行系統管理。這些系統管理工具和配置文件被用于在VSE系統E創建、部署、清除和銷毀VM。
②配置管理。VSE采用層次化的VM配置描述管理機制,對操作系統配置、軟件環境配置和應用程序配置進行分層描述。配置管理機制支持用戶權限的設置,以保證用戶環境的隔離性和安全性。
(3)VSE的應用。
①支持應用程序的開發和部署。VSE可支持高性能計算應用程序早期原型的開發。通過在臺式電腦上部署VSE,可以構建與目標系統一致的小規模開發環境,開發的應用程序可直接移植目標系統上運行而不需要作任何修改。
②支持系統軟件的開發和部署。VSE提供一個虛擬的測試平臺,通過構建虛擬硬件設備,以VM的形式提供沙盒測試環境,使開發人員不需要卸載原有操作系統軟件就可以直接進行新系統的開發和測試。這種開發方式可以保證原有系統軟件和其它VM不會受到影響。
#p#
2.5并行編程環境——Charm++和AMPI
在并行編程環境方面,Illinois大學并行程序設計實驗室(Parallel Programming Laboratory,簡稱PPL)實現了一種基于虛擬化技術的并行編程模型,它可將程序分解成大量可并行處理的部分,這些可并行處理的部分構成大量虛擬實體,每個虛擬實體對應一個虛擬處理器。該模型使程序員不需要顯式地考慮物理處理器的使用,他們在編程時只需要考慮各個虛擬實體之間的交互。基于上述編程模型,Illinois大學實現了Charm++和AMPI編程語言。
(1)Charm++和AMPI。Charm++基于C++實現,其最基本的并行單元為一個C++對象,稱為chare。
chare中包含了可被其它該chare異步調用的方法。chare對象之間通過傳遞消息進行通信。Charm++支持共享變量、優先級調度、chare對象組等機制。通過這些機制實現對高性能計算機體系結構的抽象,使應用程序的編寫更為方便。
除了Charm++,Illnois PPL還將虛擬化技術與MPI相結合,實現了一種自適應MPI模型——AMPI。在AMPI中,應用程序由大量虛擬的MPI進程組成,這些虛擬的MPI進程獨立于處理器。AMPI使用戶可在更高的系統抽象層次上使用熟悉的消息編程接口來編寫科學計算程序。
(2)虛擬化技術對并行編程的影響。虛擬化技術應用于高性能計算機并行編程中可以帶來以下幾個方面的好處:
①通過虛擬化技術可以提高編程模型的抽象層次,使用戶可以更多地關注應用程序本身的邏輯而不是硬件結構的細節;
②基于消息驅動的虛擬處理器在運行時可以自動獲得’消息/通信重疊的效果,如果再加上高效的預測機制,可以實現代碼的運行時優化;
③虛擬處理器擁有動態遷移的能力,可以實現自適應動態負載平衡,更好地利用空閑計算資源。
3 虛擬化技術應用于高性能計算中
從目前的研究可以看出,虛擬化技術尚未被廣泛應用于高性能計算領域,其主要原因包括以下幾個方面:
(1)虛擬化帶來的性能開銷問題。傳統的服務器虛擬化技術帶來額外的系統性能開銷。在一個虛擬化系統中,VMMM運行在最高特權級上,VM和Guest 0S作為VMM上的用戶級程序運行。這就導致Guest OS運行過程中遇到特權級操作時,必須內陷到VMM中。由VMM執行。這種執行方式需進行上下文切換,且會導致更長的設備訪問延遲,對于對系統性能敏感的高性能計算應用來說是難以接受的。因此,需要研究面向高性能計算機系統的虛擬化技術,針對應用對高性能的需求,進行VMM優化設計。
(2)多VMM高效協同問題。面向高性能計算機系統的虛擬化技術不同于傳統的服務器虛擬化技術。傳統的服務器虛擬化只需要單個VMM對服務器底層硬件設備進行抽象。而在多維異構的高性能計算機系統中,每個節點都需要運行一個獨立的VMM,該VMM只對單個節點進行虛擬化。整個系統中運行了大量相互關聯的VMM。VMM之間協同工作,構成統一的大規模系統級虛擬化環境。因此,需要研究高效的VMM協同機制,其中包括大量VMM之間的協同管理、協同部署、VM跨物理節點的高效通信、VM遷移以及系統級容錯等技術問題。
(3)大量VM的管理問題。為了支持高性能計算應用程序的運行。可能需要一次部署運行上千個乃至上萬個的VM。傳統的服務器虛擬化技術只涉及少量VM的部署問題和運行時管理問題。如何支持大量VM的動態部署、根據應用需求快速分配所需的硬件資源、以較低的系統開銷快速啟動VM、對大量VM進行運行時管理等,都是實現高性能計算機系統虛擬化時需要解決的重要技術問題。
(4)編程模型和軟件環境的支持問題。傳統的編程模型和支持應用開發和運行的軟件環境都是直接針對非虛擬化系統設計的,而虛擬化技術對硬件系統進行了抽象,改變了用戶所見的資源組織形態,使得傳統的編程模型和軟件環境無法適應用戶對虛擬化系統的使用要求。因此,需要研究面向虛擬化高性能計算機系統的新型編程模型和針對虛擬化系統進行優化設計的配套軟件環境,如并行編譯器、鏈接器、調試優化工具、并行函數庫等。
4 應用前景分析
目前。虛擬化技術已被廣泛應用于臺式電腦和服務器上,取得了很好的應用效果。相比之下,在高性能計算領域的應用還非常有限。隨著高性能計算技術的發展和對虛擬化技術研究的深入,兩者之間的結合將會變得越來越緊密,虛擬化技術也將為高性能計算領域的諸多難題提供新的解決方法。
(1)構建虛擬應用開發環境。高性能計算應用程序與運算環境關系密切,不同規模的運行環境下表現的行為也不盡相同。利用虛擬化技術,可以在小規模系統上構建大規模的虛擬應用開發環境,使應用程序可以在更為接近最終運行環境的系統環境下進行開發和優化,開發的應用程序可以被更快、更方便地移植到大規模系統上運行。
采用虛擬化技術,還可以對高性能計算應用程序的開發和調試提供特殊的支持。VMM可以通過授權允許一個VM對其它VM的內存、中斷和通信狀態進行監控,有助于開發人員深入分析應用程序行為,便于高性能計算應用的調試。同樣。這一機制也可以用于系統軟件的開發與調試。
(2)整合異構資源。隨著應用需求和高性能計算技術的發展,高性能計算機體系結構正在逐步向著異構化的方向發展。如何高效管理和使用異構系統是高性能計算系統軟件和應用程序開發人員面臨的主要技術難題。虛擬化技術在整合異構資源方面有其固有的優勢。利用虛擬化技術對底層異構硬件資源進行抽象和管理,可以有效地隱藏硬件平臺的異構特性,為用戶提供一個統一的系統環境,方便用戶對異構系統的使用。
(3)提供定制的Appliance。不同的高性能計算應用程序需要不同的系統環境,如面向應用優化的操作系統環境、特定版本的編譯器以及通信庫等,這使得應用程序的部署費時費力,系統環境也難以做到最優化,系統效能得不到充分發揮。采用虛擬化技術有助于解決上述問題。虛擬化技術支持預先將定制的操作系統、經過優化配置的應用運行環境和應用二進制代碼一起打包成VM映像,這種映像被稱為Appliance。通過直接部署Appliance,可以實現高性能計算應用程序的快速部署,并獲得較好的運行時性能。
(4)提高系統可靠性和容錯性能。隨著高性能計算機規模的不斷擴大,部件間復雜性的不斷提高,系統硬件故障率也不斷增大。在虛擬化的系統中,由于節點上各VM之問相互隔離,軟件錯誤如操作系統或應用程序故障只能直接影響到一個VM,甚至硬件故障如CPU、內存、設備的故障也只影響到它們所被指定到的VM。當出現故障時,通過VM遷移、快速重啟VM等方法可以重新恢復甚至于不中斷應用程序的運行。
(5)提高系統安全性。系統安全對于像數據中心這樣的高性能計算應用來說非常重要,而VM之間的相互隔離和自測試能力為建立安全系統提供了一個平臺。由于VMM只對低層硬件抽象和管理,提供一些簡單的功能,相對于全功能的操作系統內核來說,更為可靠和安全。VMM本身不會受到惡意代碼的干擾,而且它所提供的VM之間的相互隔離和授權自測試功能也是完全可信的。VMM可以對所加載的VM和加載到VM上的應用程序進行信用檢查,可以授權一個VM對其他的VM狀態進行審查,比如進行病毒掃描等。VMM還可以持續監視VM之間的通信和VM的狀態,以確保VM運行狀態的正確性。
5 結束語
基于Xen等成熟的虛擬化技術,一些研究人員已經在高性能計算領域做了一些開拓性的探索,在集群系統虛擬化等方面開辟了一些成功的應用。到目前為止,虛擬化技術在高性能計算領域的應用還并不多見,其原因主要是高性能計算應用通常對系統性能有苛刻的要求,而虛擬化必然帶來性能的損失,這對于許多高性能計算應用來說是不被容許的。因此,需要專門研究面向高性能計算機系統的高效率虛擬化技術,如針對高性能計算機系統的虛擬化模型、大規模虛擬化系統上的應用開發和部署機制、支持虛擬化系統的編程模型和配套軟件環境等。隨著虛擬化技術的不斷發展,底層硬件越來越多地加入對虛擬化的支持,有效地降低了虛擬化的性能開銷。而高性能計算機體系結構向多層次、多粒度的異構化方向發展的趨勢也必將進一步推動高性能計算機虛擬化技術的發展。
【編輯推薦】