180 likes | 297 Views
多核多執行緒微處理器的協同虛擬機級排程. 2012-11-04 謝政宏. 多核多執行緒微處理器 虛擬化技術 虛擬化的實現 虛擬機、系統級虛擬化 虛擬化目標與優缺點 虛擬機級資源排程 處理器級資源排程 應用程序的資源需求模型 多核多執行緒微處理器的協同虛擬機級排程 協同虛擬機排程 處理器競爭感知的虛擬機級排程 軟體協助的處理器級排程 結論. 大綱. 多核多執行緒微處理器 (1/3). 在著名的摩爾定律 ( 圖 1) 下,在過去的幾十年來單一個晶片上的電晶體數量迅速地增加。但這個壓力現在則是落到了處理器的平行性。因此,多核心架構被採用用來探索任務層級平行。
E N D
多核多執行緒微處理器的協同虛擬機級排程 2012-11-04 謝政宏
多核多執行緒微處理器 虛擬化技術 虛擬化的實現 虛擬機、系統級虛擬化 虛擬化目標與優缺點 虛擬機級資源排程 處理器級資源排程 應用程序的資源需求模型 多核多執行緒微處理器的協同虛擬機級排程 協同虛擬機排程 處理器競爭感知的虛擬機級排程 軟體協助的處理器級排程 結論 大綱
多核多執行緒微處理器 (1/3) • 在著名的摩爾定律(圖1)下,在過去的幾十年來單一個晶片上的電晶體數量迅速地增加。但這個壓力現在則是落到了處理器的平行性。因此,多核心架構被採用用來探索任務層級平行。 • 多核多執行緒的微處理器(MMMPs)被認為是計算能力快速增長的計算系統的新模範。 • 此外,多執行緒架構內的平行性也被大量的開發。特別是在SMT的體系結構中,水平與垂直的浪費被最小化。 • 受到這些在計算機系統中新興的VM和MMMP技術的啟發,本文研究了多核多執行緒平台上的虛擬機共享處理器資源排程。 Fig 1: Moore’s Law
多核多執行緒微處理器 (2/3) Fig 2: Arm11 MPcore Architecture
多核多執行緒 微處理器 (3/3) Fig 3: AMD Bulldozer Block Diagram
虛擬化技術 (1/3)虛擬化的實現 (1/2) • 虛擬化主要有兩種方式實現: • 主機虛擬化:通常被實現在主機作業系統的頂部上。 • 裸機虛擬化:則是直接在硬體使用一個管理程序層。 • 主機虛擬化: • 虛擬化是一種提供了許多好處的技術,例如隱藏硬體複雜性或創建不同硬體映像,使得使用者得已或安裝不同的系統且互相隔離。主機虛擬化技術的一個缺點是,引入硬體與作業系統間的中間層,導致性能上的損失。 • 裸機虛擬化: • 裸機虛擬化提供了一些有趣的功能,例如除了提供記憶體管理和CPU排程、讓客端作業系統如統直接運行在硬體上,且也大大降少了轉譯的間接成本。 • 管理程序(hypervisor)是一個軟體層更像是一個修改的Linux內核,它直接運行在系統的硬體上,因此它像是更換作業系統,讓我們能夠同時運行多個作業系統,似乎他們沒有中間層而有著自己的硬體。 • 觀察結果顯示,不同應用程式的不同特性將會使其所執行的虛擬機(VM)以及虛擬化方法造成重大的影響。 • 主機虛擬化的性能損失大約在10%~37%範圍之間,裸機虛擬化則是在1%~3%之間。
虛擬化技術 (1/3)虛擬化的實現 (2/2) Fig 4: Bare-metal / Hosted Virtualization
虛擬化技術 (2/3)虛擬機、系統級虛擬化 (1/2) • 虛擬機(VM)是一個功能強大並用於應用程序和資源配置的抽象層,這個項目中的系統級虛擬機會被認為是微系統層級的虛擬機,其虛擬化了整個實體主機的資源,包括CPU、記憶體、I/O設備,然後呈現虛擬資源給客端操作系統和應用程序。 • 系統虛擬化是通過一個軟體層,稱為虛擬機監視器(VMM,也稱為虛擬機管理程序)用來多工物理資源給虛擬機。 • 1) 全虛擬化的虛擬機:提供相同的硬體介面的實體機給客端作業系統,並可支援未經修改的作業系統。 • 2) 半虛擬化的虛擬機:提供優化後的介面,降低了虛擬化的開銷,但需要修改客端作業系統。 • 3) 除此之外,虛擬化的硬體支援也出現在新的處理器中,可以用於VMM來進一步提高虛擬機的效率。
虛擬化技術 (2/3)虛擬機、系統級虛擬化 (2/2) Fig: 5 Qumranet KVM, Full Virtualization + Bare-metal Virtualization Fig: 6 Xen Hypervisor, Para-Virtualization, Bare-metal Virtualization
虛擬化技術 (3/3)虛擬化目標與優缺點 • 在傳統上,用來將實體機器分割為不同域的虛擬化技術的使用目的有以下三點: • 1) 允許在相同的機器上安裝不同的作業系統。 • 2) 允許在不同領域上登入的使用者彼此互相隔離。 • 3) 藉由提供更多的虛擬處理器而非單一的實體處理器,來增進整體系統的利用度。 • 儘管如此,這些好處會造成性能上的代價。因為很明顯的,在硬體層級與應用層級間加入了中間一層,會導致些許的性能衰退。 • 由於效能上的因素,在大型電腦主機世代後的產品,例如個人電腦等,虛擬化技術在小型系統中並不受歡迎。但在最近科技的趨勢,虛擬化風氣又再度展開。因為被設計來大量使用的大型數據中心系統的平均使用率過低。
虛擬機級資源排程 • 虛擬級資源排程根據虛擬機的要求動態地分配的共享實體機的資源,包括CPU週期、記憶體容量、I/O頻寬到目前虛擬機。 • 隨著虛擬化技術的使用,可以實現不同的應用程序但同一時間上運行在相同的多核心之間的隔離。這種隔離裝置代表有可能將多核心分裂成不同的性能域,在這種域內運行的應用程序可以獲得該域所有的資源。 • 相關的優點像是在該域上執行的應用程序的效能與其他域中的其它應用程式間是隔離的,因此相較於在本機系統上執行減少了干擾。 • 圖7顯示出多核心處理器的核心被被分組到不同的虛擬機用來實現性能域,然後我們可以為每個域分配不同的角色。 • 例如說我們可以提供一個域作為HPC應用程序的執行,然後將其他域作為互動任務的執行或軟體的開發和測試。 Fig 7: Multi-core Performance Domain
處理器級資源排程 • 為了達到最佳的執行緒間的資源分配來使得性能改善,處理器級的資源排程對於多執行緒處理器是非常重要的。 • 處理器級排程策略,例如有: • 1) 根據執行緒在前端階段的指令數量來決定下一個被抓取的指令。 • 2) 使用指令和快取失誤率來作為指標,來動態分配執行緒的資源。 • 3) 根據執行緒的行為變化來動態地分配管道資源。 • 4) 混合不同記憶體存取(CPImem)的執行緒,並排程到多執行緒處理器上以減少快取命中率。 • 5) 利用模型來描述應用程序的記憶體使用行為,並用來調整資源分配。 • 6) 根據利用率來評估程序溫度,當一個執行序如果溫度超過臨界值時,則降低該執行緒在排程中的優先級。 • 7) 利用每個指令週期(CPI)來衡量執行緒的資源需求,將執行緒所消耗的資源分為兩大類:計算資源(COM)和記憶體存取資源(MEM)。 • 8) 根據性能計數器的數據來配對執行緒到多核心上。
應用程序的資源需求模型 • 了解應用程序的資源需求模型是非常重要的,因為應用程序有不同的處理器資源的需求,根據它們的執行時間或記憶體存取時間。 • Zhu et al.建議使用每個指令週期(CPI)的部分來統計測量應用程序的資源需求,尤其是在CPIproc和CPImem格式。 • 當應用程序主要消耗的是計算資源時,其大部分CPI將花費在處理(CPIproc)或少部分CPI花費在記憶體存取(CPImem)。 • 相反的,當有較大的CPImem時,應用程式會要求更多的記憶體資源。因此他們也認為,有著較大CPImem值的程式類型是記憶體限制,而那些較小CPImem值的程式是計算類型。
多核多執行緒微處理器的協同虛擬機級排程 (1/3)協同虛擬機排程 (1/2) • 基於MMMP平台的虛擬機系統中存在2種層次的資源排程: • 軟體級虛擬機排程:分配的處理器和內核到目前虛擬機之間。 • 硬體級虛擬機排程:將虛擬機要求的核心映射到實體處理器資源。 • 傳統上這兩個層次的排程是互相分離的,軟體級排程器不知道處理器資源爭用的發生,同時在硬體級排程器被則是限制在其優化能力。 • 由於處理器資源是分佈在MMMP的核心上,在這樣的系統上的虛擬機排程器要克服在不同的核心間的資源隔離,使他們可以充分的利用分佈式處理器資源。 • 在另一方面,因為處理器資源也可以由不同的內核和不同的執行緒共享,排程也應該將虛擬機映射到核心,使得共享的資源的競爭最小化。 • 具體而言,在MMMP平台的共享處理器資源,需要考慮包括: • 1) 相同處理器中共享LLC的不同核心; • 2) 以及相同核心共享快取和計算資源的不同執行緒(例如,指令隊列,重新排序緩衝器,暫存器文件)這兩種。
多核多執行緒微處理器的協同虛擬機級排程 (1/3)協同虛擬機排程 (2/2) • 本節介紹我們提出的協同虛擬機排程架構(圖8),旨在打破隔離並使用跨層排程合作,充分利用分佈式MMMP平台的資源使處理器競爭最小化並使系統吞吐量最大化。 Fig 8: Co-VM Scheduler in MMMPs Architecture
多核多執行緒微處理器的協同虛擬機級排程 (2/3)處理器競爭感知的虛擬機級排程 • 為了實現所提出的混合排程策略,軟體層的虛擬機需要了解使用共享處理器資源的每個虛擬機的行為,像是硬體層提供的處理器行為。 • 範例一: • 以共享的LLC失誤率為例子,混合排程策略會均衡混合虛擬機在核之間的失誤率,使得不同的核心和/或共享LLC失誤率執行緒的方差最大化。 • 因為失誤率較小的虛擬機消耗的主要是計算資源,而其他失誤率較大的虛擬機的吞吐量則是取決於記憶體資源。 • 因此,共享的核心和/或執行緒的虛擬機需要不同的資源,而不是嚴重的互相競爭資源。從整個系統的角度來看,這意味著如果虛擬機能夠存取核心的各種資源,那將可以全範圍利用更多的資源,從而導致更好的整體性能。 • 範例二: • 有些虛擬機積極參與了浮點運算而其他虛擬機則是積極參與整數運算。在這種情況下,混合排程決策的虛擬機排程器會表現更好。 • 例如,將一個浮點、一個整數的虛擬機配對到相同的核心,以最大限度地利用執行引擎,達到減少爭用並提高系統吞吐量的效果。
多核多執行緒微處理器的協同虛擬機級排程 (3/3)軟體協助的處理器級排程 • 在MMMP平台,處理器級的資源排程對於系統的整體性能會有顯著的影響。它必須決定每個核心的系統資源該如何被劃分在多個執行緒之間。 • 如果沒有好好控制可以分配給在一個核心上執行緒的資源,將會導致執行緒間資源分配不均,以及執行緒執行的不均衡,這也會導致整體執行緒的執行時間被擴展。 • 然而,硬體級排程器的優化受限於軟體級排程VM映射到的相同核心。因此,軟體層的VM排程優化也會間接的使硬體層排程獲得好處,它允許後者可以更好地優化資源配置,進一步的提高映射到相同核心的VM性能。 • 使用軟體協助的硬體層排程器的更直接方法是落實必要的硬體級優化的智能軟體以協助硬體級排程。 • 例如,在執行緒排程的最重要的議題之一是要根據他們的指令提交速率和快取失誤率等,來跟踪每個執行緒的相變。 • 然而,精確的獲取這相變通常需要複雜的機器學習演算法,這肯定是不適合硬體實現。因此,它是可以被認為需要用軟體層來執行這種複雜的演算法。 • 如果我們能將這個信息回傳給硬體級排程器,它肯定會受益決策過程中,特別是在決策從全局優化的角度來看而不只是局部最優。
結論 • 虛擬化是一種提供了許多好處的技術,例如隱藏硬體複雜性或創建不同硬體映像,使得使用者得已或安裝不同的系統且互相隔離。 • 主機虛擬化技術的一個缺點是,引入硬體與作業系統間的中間層,導致性能上的損失。使用裸機虛擬化便可以將主機虛擬化的局限性最小化,從我們的研究結果顯而易見的指出,應用程序的性能可能會受益於這項技術的使用。 • 隨著越來越多的核心和更大的複雜性與處理器的可用性,虛擬化很快將成為在所有的系統中。 • 通過使用虛擬化,我們不僅實現了可預測的性能,同時相較於執行在本機系統上,虛擬化也限制在系統中共同執行的應用程序互相干擾。在我們過半的實驗中可以觀察到,裸機虛擬化系統上執行相較於本機執行有較好的性能比。 • 此外,虛擬化所提供的性能隔離,使應用程序能實現他們的所預言的加速,而不受同一時間在同一處理器上的其他應用程序的執行干擾。