專利名稱:一種基于多核動態(tài)劃分的非對稱虛擬機i/o調(diào)度方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種虛擬機調(diào)度方法,尤其是一種面向多核平臺的、非對稱的虛擬機 I/O調(diào)度方法,屬于計算機操作系統(tǒng)與虛擬化技術(shù)領(lǐng)域。
背景技術(shù):
計算機硬件技術(shù)的不斷發(fā)展使得服務(wù)器的性能迅速增長,為了在保證安全與隔離 的前提下充分利用系統(tǒng)資源,虛擬化技術(shù)應(yīng)運而生,其基本思想是利用虛擬機監(jiān)視器(VMM) 軟件薄層對底層硬件資源進行管理,同時對上層提供多個相互隔離的虛擬硬件執(zhí)行環(huán)境 (VM),進而使得同一臺物理主機之上可以運行多個不同的操作系統(tǒng)。早在上世紀60年代, IBM便最早在360系列大型機中使用了系統(tǒng)虛擬化技術(shù),將服務(wù)器資源以復用的方式分配 給多個用戶,而近些年來,虛擬化技術(shù)在服務(wù)器資源整合、安全、容錯等領(lǐng)域都得到了廣泛 的應(yīng)用。目前,已經(jīng)出現(xiàn)了多個商業(yè)和開源的虛擬機項目,包括Vmware公司的ESX系列與 workstation系列,微軟的Virtual PC, S皿公司的Solaris Container等,此夕卜IBM公司 也在其大型服務(wù)器領(lǐng)域一直提供了虛擬化技術(shù)的支持。開源社區(qū)中,目前最廣泛研究的虛 擬機系統(tǒng)包括KVM和Xen,前者由劍橋大學的相關(guān)研究人員開發(fā),而后者則由Q咖ranet公司 組織完成,目前,兩者都已作為虛擬化方案整合入Li皿x內(nèi)核。 虛擬機系統(tǒng)包含多個相互獨立的Domain (域),每個域都包含完整的虛擬硬件執(zhí) 行環(huán)境,包括虛擬處理器,虛擬設(shè)備、虛擬存儲等,都可以運行各自的操作系統(tǒng)并承載用戶 所需的計算任務(wù),各個域之間由V匪負責實現(xiàn)隔離和保護?,F(xiàn)有主流虛擬機系統(tǒng)為提高安 全和隔離性能,通常將設(shè)備驅(qū)動程序置于一個特殊的域驅(qū)動Domain (驅(qū)動域)中,并為其開 放硬件端口的訪問權(quán)限,而其它所有Domain的設(shè)備訪問請求均通過虛擬設(shè)備訪問接口發(fā) 送到驅(qū)動Domain,由其代為執(zhí)行,虛擬設(shè)備訪問接口的建立需要在VMM控制之下進行,以便 其可以控制Domain的設(shè)備訪問行為。此時,由于所有Domain的設(shè)備訪問操作均需要通過 驅(qū)動Domain進行,而驅(qū)動Domain只有在被調(diào)度時才能夠響應(yīng)其它Domain的設(shè)備訪問請求 并進行處理,因此系統(tǒng)對各個Domain采用的調(diào)度策略將對其1/0性能產(chǎn)生決定性的影響。
傳統(tǒng)的虛擬機系統(tǒng)為滿足服務(wù)器領(lǐng)域的應(yīng)用需求,其調(diào)度方法會首先考慮系統(tǒng)的 資源利用率與分配的公平性,且大都優(yōu)先考慮了計算密集型應(yīng)用的特點,因此其設(shè)計原則 通常是在保證調(diào)度公平性的基礎(chǔ)上最大化的利用系統(tǒng)資源,典型的如Creidt調(diào)度策略。但 此時,因調(diào)度帶來的1/0請求響應(yīng)延遲會導致1/0密集型應(yīng)用的性能產(chǎn)生嚴重的下降。雖然 使用自虛擬化設(shè)備和VM-bypass的設(shè)備訪問方式可以有效提高1/0性能,但對于大多數(shù)需 要共享的普通設(shè)備,該方法無法解決調(diào)度延遲帶來的性能瓶頸。部分現(xiàn)有的虛擬機調(diào)度方 法提供了相關(guān)的優(yōu)化策略,如Xen系統(tǒng)的Boost/tickle機制及Partial Boost機制,該類 方法可以較好的滿足單一應(yīng)用類型條件下的1/0性能瓶頸問題,但面對復雜的應(yīng)用類型, 如1/0計算混合型負載,該類方法仍然難以獲得理想的1/0性能;不僅如此,現(xiàn)有的虛擬機 系統(tǒng)大都采用全局統(tǒng)一的調(diào)度策略,各個處理器核的調(diào)度決策條件均保持一致,但由于實 際運行負載類型的多樣化,其資源需求特性都有所不同,此時VMM很難提供一種有效的資源分配手段。此外現(xiàn)有的虛擬機調(diào)度算法大都針對單核系統(tǒng)設(shè)計,很少考慮多核環(huán)境的應(yīng) 用場景,不能充分利用多核結(jié)構(gòu)的特點,而多核以及眾核已經(jīng)成為了未來硬件平臺的發(fā)展 趨勢,因此如何在該環(huán)境下,有效利用系統(tǒng)處理器資源,以達到優(yōu)化系統(tǒng)性能的目的,也是 虛擬機調(diào)度算法設(shè)計中需要解決的關(guān)鍵問題之一。
發(fā)明內(nèi)容
本發(fā)明提出了一種基于多核動態(tài)劃分的非對稱虛擬機I/O調(diào)度方法,該方法在現(xiàn) 有虛擬機監(jiān)視器VMM中加入了四個模塊1/0調(diào)度初始化模塊、I/O狀態(tài)監(jiān)控與信息處理模 塊、調(diào)度決策模塊和多核動態(tài)劃分模塊。系統(tǒng)啟動時,首先由1/0調(diào)度初始化模塊完成調(diào)度 參數(shù)配置與緩沖區(qū)分配,隨后系統(tǒng)運行時,由1/0狀態(tài)監(jiān)控與信息處理模塊動態(tài)采集驅(qū)動 Domain(驅(qū)動域)和客戶Domain(客戶域)的運行時參數(shù)并進行處理,統(tǒng)計系統(tǒng)中發(fā)生的 I/O事件類型、時間和頻率參數(shù),隨后將統(tǒng)計結(jié)果交由調(diào)度決策模塊進行判定,該模塊根據(jù) 預設(shè)的條件做出調(diào)度決策,并向多核動態(tài)劃分模塊發(fā)出指令,執(zhí)行多核動態(tài)劃分或恢復操 作,從而改變系統(tǒng)的處理器核劃分模式及調(diào)度狀態(tài),使處理器資源的使用方式和Domain的 調(diào)度切換策略更好的適應(yīng)當前系統(tǒng)的I/O負載需求,從而達到優(yōu)化I/O性能的目的。
應(yīng)用本發(fā)明提出的基于多核動態(tài)劃分的虛擬機I/0調(diào)度方法時,系統(tǒng)處于兩種可 能的調(diào)度狀態(tài)l)正常調(diào)度狀態(tài);2)多核動態(tài)劃分調(diào)度狀態(tài)。處于正常調(diào)度狀態(tài)時,系統(tǒng) 采用全局統(tǒng)一的調(diào)度策略,所有處理器核均參與各類計算任務(wù)的調(diào)度,其調(diào)度參數(shù)設(shè)置和 切換策略都保持一致;而當處于多核劃分調(diào)度狀態(tài)時,系統(tǒng)所有的處理器核按預設(shè)規(guī)劃劃 分成三個不同的子集,即DriverCore(驅(qū)動域?qū)S煤?,F(xiàn)asttick Core(高頻時鐘核)和 General Core (通用處理器核),分別用于承載驅(qū)動Domain、 I/O事件響應(yīng)操作和普通的計 算任務(wù)。其中Driver Core由驅(qū)動Domain獨占使用,不會發(fā)生調(diào)度切換;1/0事件響應(yīng)由 Fasttick Core完成,該處理器核的調(diào)度切換頻率將由多核動態(tài)劃分模塊根據(jù)實際I/O事 件發(fā)生的頻率進行動態(tài)設(shè)置,且采用1/0事件響應(yīng)優(yōu)先的搶占式調(diào)度策略;其余的處理器 核均屬于GeneralCore子集,負責承載普通計算任務(wù)。系統(tǒng)通過執(zhí)行多核劃分操作由正常 調(diào)度狀態(tài)進入多核劃分調(diào)度狀態(tài),通過執(zhí)行恢復操作,由多核劃分調(diào)度狀態(tài)進入正常調(diào)度 狀態(tài)。 本發(fā)明提供的基于多核動態(tài)劃分的非對稱虛擬機調(diào)度方法包含以下執(zhí)行步驟
步驟1 :初始化;系統(tǒng)啟動時I/O調(diào)度初始化模塊加載,記錄設(shè)備前后端驅(qū)動模塊
連接建立時的i/o環(huán)與事件通道信息,隨后分配i/o運行時參數(shù)收集所需的內(nèi)存緩沖區(qū),設(shè)
定多核劃分進入和退出決策條件,并規(guī)劃處理器集劃分使用形式,之后系統(tǒng)開始運行并進 入正常調(diào)度狀態(tài); 步驟2 :參數(shù)收集與處理;系統(tǒng)運行時,I/O狀態(tài)監(jiān)控與信息處理模塊中的I/O狀 態(tài)監(jiān)控子模塊動態(tài)采集設(shè)備相關(guān)的狀態(tài)參數(shù),包括1/0事件類型,時間戳信息,事件計數(shù)信 息,并將原始數(shù)據(jù)放入緩沖區(qū);隨后1/0狀態(tài)監(jiān)控與信息處理模塊中的1/0信息處理子模塊 對緩沖區(qū)內(nèi)的數(shù)據(jù)進行分類和處理,記錄當前系統(tǒng)各類I/O事件的比率,平均耗時及系統(tǒng) 總體1/0事件的頻率; 步驟3 :運行時參數(shù)設(shè)置與調(diào)度決策判定;調(diào)度決策模塊周期性的讀取1/0信息處 理子模塊的1/0信息處理結(jié)果,設(shè)置運行時的調(diào)度參數(shù),并分析系統(tǒng)當前的1/0狀態(tài),根據(jù)
7預設(shè)條件做出判定,當滿足多核動態(tài)劃分進入條件時,向多核動態(tài)劃分模塊發(fā)出指令,執(zhí)行 步驟4,當滿足多核動態(tài)劃分退出條件時,向多核動態(tài)劃分模塊發(fā)出指令,執(zhí)行步驟5,當兩 者都不滿足時,保持系統(tǒng)當前運行狀態(tài)不變; 步驟4 :多核動態(tài)劃分;多核動態(tài)劃分模塊接收調(diào)度決策模塊的指令,執(zhí)行多核劃 分操作,使系統(tǒng)由正常調(diào)度狀態(tài)進入多核劃分調(diào)度狀態(tài); 步驟5 :調(diào)度狀態(tài)恢復;多核動態(tài)劃分模塊接收調(diào)度決策模塊的指令,執(zhí)行調(diào)度狀 態(tài)恢復操作,使系統(tǒng)由多核劃分調(diào)度狀態(tài)恢復到正常調(diào)度狀態(tài)。
相比現(xiàn)有技術(shù)本發(fā)明具有以下優(yōu)點和積極效果
(1)更好的I/0性能 傳統(tǒng)的虛擬機調(diào)度方法大都面向服務(wù)器領(lǐng)域的應(yīng)用,因此通常以系統(tǒng)的資源利用 率和調(diào)度的公平性為原則進行設(shè)計,而本發(fā)明提出的調(diào)度方法,充分考慮了虛擬機系統(tǒng)泛 虛擬化I/O模型的特點,針對I/O性能的瓶頸做出優(yōu)化,通過為驅(qū)動Domain和I/O事件處 理提供獨立的處理器核資源,并采用了事件優(yōu)先的搶占式的調(diào)度策略降低了 1/0事件的響 應(yīng)延遲,從而使得泛虛擬化模型下設(shè)備訪問的各個環(huán)節(jié)耗時都有所降低,從而改善了系統(tǒng) 的I/O性能。 (2)更好的靈活和適應(yīng)性 傳統(tǒng)的全局統(tǒng)一調(diào)度方法中,各個處理器核都采用了相同的調(diào)度策略和參數(shù)設(shè) 置,因此其調(diào)整和優(yōu)化將受制于整個系統(tǒng)的運行環(huán)境。而本發(fā)明提出的非對稱調(diào)度方法, 將處理器核動態(tài)劃分成多個子集,每各子集承載不同的計算任務(wù),因此可以針對其上加載 的負載運行特征應(yīng)用不同的設(shè)置和優(yōu)化方法,從而使得系統(tǒng)調(diào)度策略的選擇和調(diào)整更加靈 活,并且能更好的滿足不同類型負載的實際需求。 [OO18] (3)良好的可擴展性 本發(fā)明提出的基于動態(tài)劃分的非對稱虛擬機I/0調(diào)度方法在調(diào)度器和較中斷層 面實現(xiàn)多核的動態(tài)劃分,而不是在啟動階段對處理器核隊列初始化過程進行調(diào)整,因此其 工作不依賴于特定的硬件平臺和體系結(jié)構(gòu)特征,具有更好的可擴展性。本發(fā)明提出的調(diào)度 方法以虛擬處理器為單位進行調(diào)度和調(diào)整,因此當運行平臺物理處理器核數(shù)量發(fā)生變化 時,僅需要在1/0調(diào)度初始化模塊中調(diào)整處理器集劃分規(guī)劃即可;此外Fasttick Core的實 際調(diào)度切換頻率也會根據(jù)實際負載的設(shè)備訪問頻率進行動態(tài)調(diào)整,因此可以更好的適應(yīng)負 載類型的變化。
圖1是本發(fā)明基于多核動態(tài)劃分的非對稱虛擬機I/O調(diào)度模型模塊結(jié)構(gòu)示意圖;
圖2是本發(fā)明提出的基于多核動態(tài)劃分的非對稱虛擬機I/0調(diào)度方法執(zhí)行步驟流 程圖; 圖3是本發(fā)明調(diào)度優(yōu)先級及運行狀態(tài)切換示意圖。
具體實施例方式
下面結(jié)合附圖對本發(fā)明進行進一步的詳細說明。通過足夠詳細的描述這些實施示 例,使得本領(lǐng)域技術(shù)人員能夠?qū)嵺`本發(fā)明。在不脫離本發(fā)明的主旨和范圍的情況下,可以對實施做出邏輯的、實現(xiàn)的和其他的改變。 本發(fā)明所涉及的虛擬機系統(tǒng)包含以下幾個組成部分虛擬機監(jiān)視器V匪1,驅(qū)動 Domain6,客戶Domain7,其中驅(qū)動Domain6與客戶Domain7均運行在非特權(quán)模式,用來承載 設(shè)備驅(qū)動、提供管理界面或加載用戶的實際應(yīng)用,而V匪l運行在特權(quán)模式,負責管理和分 配系統(tǒng)硬件資源,包括處理器、內(nèi)存、設(shè)備等。系統(tǒng)所需的設(shè)備驅(qū)動程序位于驅(qū)動Domain6 中,并由V匪l為其開放指定的設(shè)備訪問端口,使其能夠完成物理設(shè)備的訪問操作,而其它 客戶Domain7的設(shè)備訪問請求均通過虛擬設(shè)備通道8傳遞給驅(qū)動Domain6由其代為執(zhí)行, 兩者之間采用了前后端的連接方式,其結(jié)構(gòu)如圖l所示。該模型中,設(shè)備前端驅(qū)動模塊9位 于客戶Domain7中,負責發(fā)起設(shè)備訪問請求;設(shè)備后端驅(qū)動模塊10位于驅(qū)動Domain6中, 負責接收請求并完成實際的1/0操作;V匪1在兩者之間傳遞1/0事件和相關(guān)數(shù)據(jù)??蛻?Domain7啟動時,V匪l負責在設(shè)備前端驅(qū)動模塊9和設(shè)備后端驅(qū)動模塊10之間建立虛擬設(shè) 備訪問通道8,該通道包含1/0環(huán)81 (1/0 ring)和事件通道82 (event channel)兩個組成 部分,實際訪問設(shè)備時,客戶Domain7中的設(shè)備前端驅(qū)動模塊9首先將設(shè)備訪問請求數(shù)據(jù)寫 入1/0環(huán)81,隨后利用事件通道82向驅(qū)動Domain6傳遞一次1/0事件,當驅(qū)動Domain6下 一次被調(diào)度時會檢查其事件通道82狀態(tài),并由后端驅(qū)動模塊10對客戶Domain7的設(shè)備訪 問請求進行響應(yīng);在完成了實際的I/0操作后,后端驅(qū)動模塊10將應(yīng)答數(shù)據(jù)寫入I/0環(huán)81, 隨后通過事件通道82向客戶Domain7傳遞一次1/0應(yīng)答事件,當客戶Domain7下一次被調(diào) 度時會檢查其事件通道82狀態(tài)并獲取應(yīng)答數(shù)據(jù),從而完成一次設(shè)備訪問操作。
本發(fā)明提出的基于多核動態(tài)劃分的非對稱虛擬機I/0調(diào)度方怯在現(xiàn)有虛擬機監(jiān) 視器V匪1中加入四個新的模塊1/0調(diào)度初始化模塊2、 1/0狀態(tài)監(jiān)控與信息處理模塊3、 調(diào)度決策模塊4、多核動態(tài)劃分模塊5。 1/0調(diào)度初始化模塊2在系統(tǒng)啟動階段加載,負責記 錄設(shè)備前后端連接建立時的1/0環(huán)81與事件通道82信息,隨后分配1/0運行時參數(shù)信息收 集所需的內(nèi)存緩沖區(qū),設(shè)定多核劃分進入和退出決策條件,并規(guī)劃處理器集劃分使用形式。 1/0狀態(tài)監(jiān)控與信息處理模塊3則負責在運行時收集I/0相關(guān)的運行時信息并進行處理,由 于設(shè)備前端驅(qū)動模塊9與設(shè)備后端驅(qū)動模塊10之間利用1/0環(huán)81和事件通道82進行設(shè) 備訪問請求和應(yīng)答的傳遞,因此1/0狀態(tài)監(jiān)控與信息處理模塊3包含兩個子模塊,即1/0狀 態(tài)監(jiān)控子模塊31和1/0信息處理子模塊32, 二者都位于虛擬機監(jiān)視器V匪l中,1/0狀態(tài)監(jiān) 控子模塊31與1/0環(huán)81和事件通道82進行數(shù)據(jù)交互,獲取系統(tǒng)的1/0狀態(tài)狀態(tài)參數(shù),主 要包括1/0事件的類型及發(fā)生的時間戳信息,隨后將原始數(shù)據(jù)寫入緩沖區(qū),由1/0信息處理 子模塊32對其進行分類和處理,計算出各類I/0事件所占的比例、平均耗時、及系統(tǒng)總體I/ 0事件的頻率。調(diào)度決策模塊4則跟據(jù)1/0狀態(tài)監(jiān)控與信息處理模塊3的統(tǒng)計結(jié)果判斷當 前系統(tǒng)的1/0狀態(tài)是否滿足多核動態(tài)劃分進入或退出的閾值條件,并做出調(diào)度決策,隨后 將指令發(fā)送給多核動態(tài)劃分模塊5,由其根據(jù)指令類型,執(zhí)行多核動態(tài)劃分或恢復操作,當 滿足多核動態(tài)劃分進入的閾值條件時,使系統(tǒng)由正常調(diào)度狀態(tài)進入多核劃分調(diào)度狀態(tài);當 滿足多核動態(tài)劃分退出的閾值條件時,使系統(tǒng)由多核劃分調(diào)度狀態(tài)恢復到正常調(diào)度狀態(tài)。
本發(fā)明提出的基于多核動態(tài)劃分的虛擬機1/0調(diào)度方法,如圖2所示,包含以下步 驟 步驟1 :初始化。系統(tǒng)啟動時1/0調(diào)度初始化模塊2加載,完成相關(guān)初始化工作。 本步驟包含如下四類操作步驟1. 1設(shè)備前后端連接建立時的1/0環(huán)81與事件通道82信息記錄;步驟1. 21/0運行時參數(shù)信息收集緩沖區(qū)分配;步驟1. 3多核劃分進入和退出決策 條件設(shè)定;步驟1. 4處理器集劃分使用形式規(guī)劃。 步驟1. 1,設(shè)備前后端連接建立時I/O環(huán)81與事件通道82信息記錄。
如圖1所示,客戶Domain7啟動時,V匪1會負責在設(shè)備前端驅(qū)動模塊9與設(shè)備后 端驅(qū)動模塊10之間建立起虛擬設(shè)備通道8,該虛擬設(shè)備通道8包含I/O環(huán)81和事件通道82 兩個部分,其中I/O環(huán)81用于存儲來自設(shè)備前端驅(qū)動模塊9的1/0請求,以及來自設(shè)備后 端驅(qū)動模塊10的I/O應(yīng)答;而事件通道82則被用來通知虛擬設(shè)備通道8另一端的模塊當 前有I/0事件需要進行處理。虛擬機系統(tǒng)中,I/0環(huán)81以共享內(nèi)存的方式同時映射到驅(qū)動 Domain6和客戶Domain7的地址空間中,該映射過程由V匪l負責完成,本發(fā)明中,I/O調(diào)度 初始化模塊2會監(jiān)控啟動階段I/O環(huán)81的映射過程,并記錄該共享內(nèi)存頁面信息,并將其 映射到預分配的地址空間中,I/O狀態(tài)監(jiān)控與信息處理模塊3通過該地址空間,查看存儲在 1/0環(huán)81中的每一次I/0請求和應(yīng)答的操作信息。事件通道82以軟中斷的形式實現(xiàn),創(chuàng)建 時,V匪1會為其分配一個全局唯一的標號,隨后將其綁定到與之關(guān)聯(lián)Domain的某個空閑的 中斷(irq)號之上,此后每當Domain被調(diào)度時,V匪1都會檢查其是否有未決的事件需要處 理,如果存在,則調(diào)用對應(yīng)irq之上注冊的處理例程,本發(fā)明中,1/0調(diào)度初始化模塊2會記 錄虛擬設(shè)備通道8建立時,連接驅(qū)動Domain6和客戶Domain7之間的事件通道82標號,從 而跟蹤各類1/0請求和應(yīng)答事件的發(fā)生,并記錄相關(guān)的時間和事件類型信息。
步驟1. 2, 1/0運行時參數(shù)信息收集緩沖區(qū)分配。 該緩沖區(qū)分配于V匪l的地址空間內(nèi),由1/0狀態(tài)監(jiān)控與信息處理模塊3使用, 記錄設(shè)備相關(guān)的運行時參數(shù),包括I/O事件類型,時間戳信息,事件計數(shù)信息,默認大小為 64K。 步驟1. 3,多核劃分進入和退出決策條件設(shè)定。 該決策條件由調(diào)度決策模塊4使用,用來判定當前是否需要執(zhí)行多核動態(tài)劃分或 恢復操作,決策條件以I/O事件頻率作為判定參數(shù),包含多核劃分進入閾值1\及多核劃分 退出閾值L, T1、T2應(yīng)根據(jù)實際加載應(yīng)用的特征進行測定,以決定最優(yōu)的閾值條件,1/0狀 態(tài)監(jiān)控與信息處理模塊3可以提供系統(tǒng)運行時的I/O事件頻率測試結(jié)果。
進入閾值T1、退出閾值T2的設(shè)置取決于實際負載運行時,1/0請求事件的發(fā)生頻 率,該數(shù)值應(yīng)在系統(tǒng)使用前進行測定,其中進入閾值T1的設(shè)置應(yīng)略低于典型I/O應(yīng)用的請 求事件頻率,而退出閾值T2可設(shè)定為Tl/2,這樣既可以保證在執(zhí)行典型I/O應(yīng)用時,系統(tǒng) 處于多核劃分調(diào)度狀態(tài),以獲得最優(yōu)的性能,又可以避免頻繁的調(diào)度模式切換導致的顛簸 現(xiàn)象,下面給出典型的判定過程舉例。如應(yīng)用本發(fā)明方法的系統(tǒng)配置如下4核實驗平臺, Xen-3. 1. 0虛擬機系統(tǒng),Li皿x2. 6. 18內(nèi)核,負載類型及I/O請求事件頻率測試結(jié)果網(wǎng)絡(luò) I/O :ping操作,2次/秒;scp操作,280次/秒;ftp文件傳輸,800次/秒;磁盤1/0, Linux 內(nèi)核編譯,40次/秒;dd命令磁盤塊拷貝250次/秒;內(nèi)核壓縮打包,400次/秒(上述結(jié) 果由1/0狀態(tài)監(jiān)控與信息處理模塊3測定,可通過串口或文件的方式輸出)。本例所述應(yīng) 用中,Ping操作和Li皿x內(nèi)核編譯時兩類應(yīng)用不屬于I/0密集型應(yīng)用,其1/0事件頻率較 低,因此其測試結(jié)果不應(yīng)參與判定閾值T1、 T2 ;其它幾類負載屬于典型的1/0密集型應(yīng)用, 其1/0事件頻率較高,將用于判定閾值T1、T2。如果實際系統(tǒng)中同時包含上述應(yīng)用,為保證 I/O密集型負載運行時系統(tǒng)處于多核劃分運行狀態(tài),進而能夠獲得良好的性能,應(yīng)當取其中最低的I/O事件頻率作為閾值Tl,而T2 = Tl/2。本例中,取值對象為dd命令磁盤塊拷貝 操作,設(shè)定結(jié)果為,Tl = 250次/秒,T2 = Tl/2 = 125次/秒。
步驟1. 4,處理器集劃分使用形式規(guī)劃。 本發(fā)明中,處于多核劃分調(diào)度狀態(tài)時,系統(tǒng)所有的處理器核被劃分為三個子集,即 DriverCore、 Fasttick Core禾口 General Core,其中Driver Core與Fasttick Core的數(shù) 量可進行設(shè)置,最低為1個,剩余的處理器核屬于General Core, Driver Core和Fasttick Core的數(shù)量配置取決于實際I/0任務(wù)的負載情況。4核計算平臺的典型配置如下CoreO配 置為Driver Core, Core 1配置為Fasttick Core, Core2禾口 Core3配置為General Core。 該配置由多核動態(tài)劃分模塊5讀取,完成相應(yīng)的處理器核分配操作。 步驟2 :參數(shù)收集與處理。系統(tǒng)運行時1/0狀態(tài)監(jiān)控與信息處理模塊3動態(tài)采集 設(shè)備相關(guān)的狀態(tài)參數(shù)并進行處理,本步驟包含以下兩類操作步驟2. 11/0狀態(tài)參數(shù)收集; 步驟2.2I/C)狀態(tài)信息處理。
步驟2. 1, 1/0狀態(tài)采集。 1/0狀態(tài)監(jiān)控子模塊31采集1/0數(shù)據(jù)參數(shù),并寫入預分配緩沖區(qū)。1/0狀態(tài)監(jiān)控子 模塊位于V匪l中,與虛擬設(shè)備通道8進行數(shù)據(jù)交互,該模塊首先通過追蹤啟動階段記錄的 事件通道82標號,跟蹤驅(qū)動Domain6和客戶Domain7之間的事件傳遞過程,同時記錄本次 1/0事件發(fā)生的時間戳,隨后通過預分配的地址空間讀取1/0環(huán)81中的1/0請求和應(yīng)答信 息。本發(fā)明所針對的虛擬機系統(tǒng)中,I/0請求包含以下幾類信息l)I/0類型(讀、寫或其它 擴展操作),2) ID號,3)本次1/0操作的數(shù)據(jù)索引。I/O應(yīng)答包含以下幾類信息1) ID號,2) I/O操作的執(zhí)行情況(依具體的I/O類型有所不同)。每一次I/O請求/應(yīng)答數(shù)據(jù)都由唯 一的ID號進行標識,雖然ID號會被循環(huán)使用,但必須在一次完整的1/0操作完成后,ID號 才會被回收,因此本發(fā)明通過讀取I/O環(huán)81中的ID號信息來跟蹤一次I/O訪問的全部過 程,其中,時間戳信息以二維數(shù)組的形式填充到預分配的緩沖區(qū)中,其一級索引為ID編號, 范圍為0至256 ;二級索引為事件類型,共包含"設(shè)備前端1/0請求發(fā)送"、"設(shè)備后端請求接 收"、"設(shè)備后端應(yīng)答發(fā)送"、"設(shè)備前端應(yīng)答接收"四類事件,其索引號依次為0、1、2、3。其它 信息同樣以二維數(shù)組的形式填充到預分配緩沖區(qū)中,其一級索引號ID編號,二級索引為信 息類型。本步驟總所執(zhí)行的參數(shù)收集操作在客戶Domain7啟動并完成設(shè)備前后端連接后開 始執(zhí)行,當客戶Domain7關(guān)閉并斷開設(shè)備前后端連接時終止。
步驟2. 2, I/O狀態(tài)信息處理 I/O信息處理子模塊32讀取并處理緩沖區(qū)內(nèi)數(shù)據(jù)。本步驟對緩沖區(qū)內(nèi)的數(shù)據(jù)進行 計算,并給出如下幾類計算結(jié)果a.各類I/0操作的數(shù)量及比例;b.每次I/0操作各個階段 的耗時;c.各類I/0操作的事件頻率。上述結(jié)果被調(diào)度決策模塊4使用,用于判定當前系 統(tǒng)l/0狀態(tài),其中結(jié)果a,b主要用于調(diào)試。所有上述結(jié)果均可通過串口輸出,也可利用內(nèi)核 打印語句輸出到文件。
步驟3 :運行時參數(shù)設(shè)置與調(diào)度決策判定。本步驟包含兩類操作步驟3. 1運行時 參數(shù)設(shè)置;步驟3. 2調(diào)度決策判定。
步驟3. 1,運行時參數(shù)設(shè)置 本發(fā)明中Fasttick Core專門用來響應(yīng)I/O事件,而該處理器核在tick時鐘到來 時會發(fā)生調(diào)度切換,因此當Fasttick Core的tick時鐘頻率與I/O應(yīng)答事件的發(fā)生頻率相匹配時,系統(tǒng)能夠獲得最優(yōu)的1/0性能。本發(fā)明中,調(diào)度決策模塊4每隔250ms從1/0狀態(tài) 監(jiān)控與信息處理模塊3處獲取一次該時間段內(nèi)1/0應(yīng)答事件的發(fā)生頻率,并依此計算出I/O 應(yīng)答事件發(fā)生的平均時間間隔,隨后將其記錄在全局量t_faSttick中,當系統(tǒng)處于多核劃 分調(diào)度狀態(tài)時,該值被用來設(shè)定Fasttick Core的tick時鐘周期Tfasttiek。為保證各個VCPU 調(diào)度時其信用值能夠正確計算,Tfastti。k的精度單位及最小取值為0. lms。本發(fā)明所涉及的 虛擬機系統(tǒng)中,處理器核的調(diào)度時鐘周期在初始化時通過init—timer函數(shù)設(shè)定,隨后每次 時鐘到期并完成響應(yīng)處理后,使用set_timer函數(shù)重新設(shè)定,本步驟通過調(diào)整set—timer輸 入?yún)?shù)的方法調(diào)整Fasttick Core的調(diào)度時鐘周期。
步驟3. 2,調(diào)度決策判定 調(diào)度決策模塊4讀取I/O狀態(tài)監(jiān)控與信息處理模塊3的1/0信息處理結(jié)果,分析 系統(tǒng)當前的I/O狀態(tài),并根據(jù)預設(shè)條件作出判定,隨后向多核動態(tài)劃分模塊5發(fā)出指令,執(zhí) 行步驟4或步驟5或維持系統(tǒng)當前運行狀態(tài)。本發(fā)明中,調(diào)度決策模塊4每隔250ms讀取 一次I/O請求事件發(fā)生頻率,如連續(xù)4個周期,其頻率都超過進入閾值1\,且系統(tǒng)當前處于 正常調(diào)度狀態(tài),說明滿足多核動態(tài)劃分進入條件,則執(zhí)行動態(tài)劃分操作;如連續(xù)2個周期低 于退出閾值T2,且系統(tǒng)當前處于多核劃分調(diào)度狀態(tài),說明滿足多核動態(tài)劃分退出條件,則執(zhí) 行恢復操作,解除動態(tài)劃分并恢復系統(tǒng)至正常調(diào)度狀態(tài);如多核動態(tài)劃分退出進入條件均 不符合,則保持當前系統(tǒng)運行狀態(tài)。 步驟4 :多核動態(tài)劃分。多核動態(tài)劃分模塊5接收調(diào)度決策模塊4的指令,執(zhí)行多 核動態(tài)劃分操作,使系統(tǒng)由正常調(diào)度狀態(tài)進入多核劃分調(diào)度狀態(tài)。本步驟包含兩類操作步 驟4. 1驅(qū)動Domain6與DriverCore綁定;步驟4. 2FasttickCore分離與非對稱調(diào)度時鐘設(shè) 定。 步驟4. 1,驅(qū)云力Domain6與Driver Core綁定: 本發(fā)明中,虛擬機系統(tǒng)以虛擬CPU(VCPU)為單位對各個Domain進行調(diào)度,每個 Domain在創(chuàng)建時擁有固定數(shù)量的VCPU(默認為1),當某個Domain被調(diào)度時,其VCPU被加 載到實際的物理CPU之上執(zhí)行。本發(fā)明涉及的虛擬機系統(tǒng)其主調(diào)度函數(shù)為schedule,當系 統(tǒng)軟中斷S0FTIRQ_SCHEDULE觸發(fā)并被響應(yīng)時,該函數(shù)被調(diào)用,并從當前處理器的調(diào)度隊列 中選擇下一個應(yīng)當被調(diào)度的VCPU,隨后執(zhí)行調(diào)度切換。本步驟中,多核動態(tài)劃分模塊5首先 檢查全局標志BoundFlag是否置位,以判斷當前是否處于驅(qū)動Domain6綁定的調(diào)度狀態(tài),如 果是,則檢查處理器核的編號是否符合指定的數(shù)值(如Core0),如果條件滿足,則讓其始終 調(diào)度驅(qū)動Domain6的VCPU,這樣驅(qū)動Domain6會獨占該處理器核的計算時間,并且不會在其 它處理器核上被調(diào)度。反之,當全局標志BoundFlag未被置位時,則采用正常的調(diào)度策略。 BoundFlag標志的置位與清除由調(diào)度決策模塊4完成,每當當前系統(tǒng)I/0狀態(tài)符合多核動態(tài) 劃分進入或退出條件時,便對BoundFlag標志進行相應(yīng)的修改操作。標志修改和實際調(diào)度 切換中間可能會存在一定的延遲,但該延遲最長不會超過3個tick周期,即30ms。
步驟4. 2, Fasttick Core分離與非對稱調(diào)度時鐘設(shè)定 本發(fā)明涉及的虛擬機系統(tǒng)中,主調(diào)度函數(shù)schedule和實際調(diào)度器間的聯(lián)系通過 結(jié)構(gòu)化的跳轉(zhuǎn)表實現(xiàn),對于系統(tǒng)默認的credit調(diào)度算法來說即為定義于schecLcredit. c 函數(shù)中的全局結(jié)構(gòu)體schecLcredit—def,該結(jié)構(gòu)體中提供了 VCPU初始化、刪除、睡眠、喚醒 等操作的處理函數(shù),以及實際credit算法相關(guān)的調(diào)度處理函數(shù)cschecLschedule。此外,調(diào)度器在初始化時,會設(shè)置tick時鐘即非對稱調(diào)度時鐘,每當時鐘中斷到來時就會進行 credit值計算,并在必要時修改VCPU的調(diào)度優(yōu)先級和狀態(tài),以及發(fā)起調(diào)度操作。本步驟執(zhí) 行時,多核動態(tài)劃分模塊5首先修改fasttick core的tick時鐘周期,使其由默認的10ms 修改為步驟3中調(diào)度決策模塊4的測定值Tfastti。k(該值的設(shè)置取決于系統(tǒng)的I/O狀態(tài),參 考步驟3中的描述),隨后在其之上采用了 1/0事件響應(yīng)優(yōu)先的搶占式調(diào)度策略,其判定過 程如下,如圖3所示 a如目標VCPU處于"UNDER/阻塞"狀態(tài),則提升其優(yōu)先級至BOOST (0),并立刻發(fā)起 一次調(diào)度; b如目標VCPU處于"UNDER/等待調(diào)度"狀態(tài),則檢查其是否處于Fasttick Core 的調(diào)度隊列中,如果是,則將其排到隊列頭部,如果不是,則將其從當前隊列中摘除,并放入 Fasttick Core調(diào)度隊列頭部; c如目標VCPU處于"UNDER/正在調(diào)度"狀態(tài)或BOOST狀態(tài),且在Fasttick Core
之上調(diào)度,則設(shè)置全局標志IODomU_OnSchedule_f lag ;如該VCPU當前在General Core之
上調(diào)度,則設(shè)置全局標志I0DOmU_0nSChedule_flag,并立刻發(fā)起調(diào)度,調(diào)度函數(shù)cschecL
schedule中檢查到該標志后,直接挑選當前運行的VCPU做為下一個調(diào)度VCPU ; d如目標VCPU處于OVER狀態(tài),則首先將其優(yōu)先級修改為PREEMPT = 1 ,隨后檢查
其是否處于Fasttick Core的調(diào)度隊列中,如果是,則直接將其排到隊列頭部;如果不是,
則將其從當前所處的CPU隊列中摘除,并放入Fasttick Core的調(diào)度隊列頭部; e如目標VCPU處于PREEMPT狀態(tài),說明該VCPU正在Fasttick Core之上被調(diào)度運
行,則設(shè)置全局標志10DomUJ)nSchedule—flag,調(diào)度函數(shù)csched_schedule中檢查到該標
志后,直接挑選當前運行的VCPU做為下一個調(diào)度VCPU ; f處于UNDER狀態(tài)的VCPU在本次調(diào)度操作完成后,如果不是本次I/O事件的目標 VCPU,則停止調(diào)度,重新放入調(diào)度隊列并按優(yōu)先級排序; g處于BOOST狀態(tài)的VCPU在本次調(diào)度操作完成后,如果不是本次I/O事件的目 標VCPU,則停止調(diào)度,將優(yōu)先級修改為UNDER,重新放入調(diào)度隊列并按優(yōu)先級排序。h處于 PREEMPT狀態(tài)的VCPU在本次調(diào)度操作完成后,如果不是本次I/O事件的目標VCPU,則停止 調(diào)度,將優(yōu)先級修改為OVER,重新放入調(diào)度隊列并按優(yōu)先級排序;
i Fasttick Core在tick時鐘中斷到來時會發(fā)生調(diào)度切換。 步驟5 :調(diào)度狀態(tài)恢復。多核動態(tài)劃分模塊5接收調(diào)度決策模塊4的指令,執(zhí)行 調(diào)度狀態(tài)恢復操作,使系統(tǒng)由多核劃分調(diào)度狀態(tài)恢復到正常調(diào)度狀態(tài)。本步驟的執(zhí)行過程 與步驟4相反,同樣包含兩類操作步驟5. 1驅(qū)動Domain6與Driver Core解綁定;步驟 5. 2FasttickCore調(diào)度時鐘與策略恢復。
步驟5. 1 ,驅(qū)動Domain6與Driver Core解綁定 解綁定操作執(zhí)行時,多核動態(tài)劃分模塊5在主調(diào)度函數(shù)schedule中檢查全局標志 BoundFlag,判定系統(tǒng)當前需要恢復至正常調(diào)度狀態(tài),隨后進入credit調(diào)度算法框架,選擇 下一顆應(yīng)該被調(diào)度的VCPU,并執(zhí)行調(diào)度切換。
步驟5. 2, Fasttick Core調(diào)度時鐘與策略恢復 Fasttick Core調(diào)度時鐘與策略恢復操作執(zhí)行時,多核動態(tài)劃分模塊5首先修改 Fasttickcore的tick時鐘周期,使其由調(diào)度決策模塊4的測定值Tfasttiek恢復至默認的10ms,隨后忽略I0DomU_0nSchedule_f lag標志檢查,直接從當前處理器的VCPU對列中選擇 下一顆需要被調(diào)度的VCPU,隨后返回上層調(diào)度函數(shù),并執(zhí)行調(diào)度切換。
權(quán)利要求
一種基于多核動態(tài)劃分的非對稱虛擬機I/O調(diào)度方法,其特征在于,該方法在現(xiàn)有虛擬機監(jiān)視器中加入了四個模塊I/O調(diào)度初始化模塊、I/O狀態(tài)監(jiān)控與信息處理模塊、調(diào)度決策模塊和多核動態(tài)劃分模塊,具體步驟如下步驟1初始化;系統(tǒng)啟動時I/O調(diào)度初始化模塊加載,記錄設(shè)備前后端驅(qū)動模塊連接建立時的I/O環(huán)與事件通道信息,隨后分配I/O運行時參數(shù)信息收集所需的內(nèi)存緩沖區(qū),設(shè)定多核劃分進入和退出決策條件,并規(guī)劃處理器集劃分使用形式,之后系統(tǒng)開始運行并進入正常調(diào)度狀態(tài);步驟2參數(shù)收集與處理;系統(tǒng)運行時,I/O狀態(tài)監(jiān)控與信息處理模塊中的I/O狀態(tài)監(jiān)控子模塊動態(tài)采集設(shè)備相關(guān)的狀態(tài)參數(shù),包括I/O事件類型,時間戳信息,事件計數(shù)信息,并將原始數(shù)據(jù)放入緩沖區(qū),隨后I/O狀態(tài)監(jiān)控與信息處理模塊中的I/O信息處理子模塊對緩沖區(qū)內(nèi)的數(shù)據(jù)進行分類和處理,記錄當前系統(tǒng)各類I/O事件的比率,平均耗時及系統(tǒng)總體I/O事件的頻率;步驟3運行時參數(shù)設(shè)置與調(diào)度決策判定;調(diào)度決策模塊周期性的讀取I/O信息處理子模塊的處理結(jié)果,設(shè)置運行時的調(diào)度參數(shù),并分析系統(tǒng)當前的I/O狀態(tài),根據(jù)預設(shè)條件做出判定,當滿足多核動態(tài)劃分進入條件時,向多核動態(tài)劃分模塊發(fā)出指令,執(zhí)行步驟4,當滿足多核動態(tài)劃分退出條件時,向多核動態(tài)劃分模塊發(fā)出指令,執(zhí)行步驟5,當兩者都不滿足時,保持系統(tǒng)當前運行狀態(tài)不變;步驟4多核動態(tài)劃分;多核動態(tài)劃分模塊接收調(diào)度決策模塊的指令,執(zhí)行多核劃分操作,使系統(tǒng)由正常調(diào)度狀態(tài)進入多核劃分調(diào)度狀態(tài);步驟5調(diào)度狀態(tài)恢復;多核動態(tài)劃分模塊接收調(diào)度決策模塊的指令,執(zhí)行調(diào)度狀態(tài)恢復操作,使系統(tǒng)由多核劃分調(diào)度狀態(tài)恢復到正常調(diào)度狀態(tài)。
2. 根據(jù)權(quán)利要求1所述的一種基于多核動態(tài)劃分的非對稱虛擬機1/0調(diào)度方法,其特 征在于,所述的步驟1包括如下具體步驟步驟1. l,設(shè)備前后端連接建立時I/O環(huán)與事件通道信息記錄客戶Domain啟動時,VMM負責在設(shè)備前端驅(qū)動模塊與設(shè)備后端驅(qū)動模塊之間建立起虛 擬設(shè)備通道,該虛擬設(shè)備通道包含I/0環(huán)和事件通道兩個部分,其中I/0環(huán)用于存儲來自設(shè) 備前端驅(qū)動模塊的1/0請求,以及來自設(shè)備后端驅(qū)動模塊的1/0應(yīng)答;而事件通道則被用來 通知虛擬設(shè)備通道另一端的模塊當前有I/0事件需要進行處理;虛擬機系統(tǒng)中,I/0壞以共 享內(nèi)存的方式同時映射到驅(qū)動Domain和客戶Domain的地址空間中,該映射過程由VMM負 責完成;1/0調(diào)度初始化模塊會記錄虛擬設(shè)備通道建立時,連接驅(qū)動Domain和客戶Domain 之間的事件通道標號,從而跟蹤各類I/O請求和應(yīng)答事件的發(fā)生,并記錄相關(guān)的時間和事 件類型信息;其中,客戶Domain代表客戶域、驅(qū)動Domain代表驅(qū)動域、V匪代表虛擬機監(jiān)視 器;步驟1. 2, I/O運行時參數(shù)信息收集緩沖區(qū)分配該緩沖區(qū)分配于VMM的地址空間內(nèi),由I/O狀態(tài)監(jiān)控與信息處理模塊使用,記錄設(shè)備相 關(guān)的運行時參數(shù),包括I/O事件類型,時間戳信息,事件計數(shù)信息,默認大小為64K ; 步驟1. 3,多核劃分進入和退出決策條件設(shè)定該決策條件由調(diào)度決策模塊使用,用來判定當前是否需要執(zhí)行多核動態(tài)劃分或恢復操 作,決策條件以I/O事件頻率作為判定參數(shù),包含多核劃分進入閾值1\及多核劃分退出閾值T2, 1\、T2的設(shè)置取決于實際負載運行時,I/O請求事件的發(fā)生頻率,該數(shù)值應(yīng)在系統(tǒng)使用 前進行測定,Tl的設(shè)置應(yīng)略低于典型1/0應(yīng)用的請求事件頻率,T2設(shè)定為Tl/2, IA)狀態(tài) 監(jiān)控與信息處理模塊提供系統(tǒng)運行時的I/O事件頻率測試結(jié)果; 步驟1. 4,處理器集劃分使用形式規(guī)劃處于多核劃分調(diào)度狀態(tài)時,系統(tǒng)所有的處理器核被劃分為三個子集,包括DriverCore、 Fasttick Core禾口 General Core,其中Driver Core與Fasttick Core的數(shù)量會g夠進行設(shè) 置,最低為1個,剩余的處理器核屬于General Core, Driver Core和Fasttick Core的數(shù) 量配置取決于實際1/0任務(wù)的負載情況,其中,DriverCore代表驅(qū)動域?qū)S煤恕asttick Core代表高頻時鐘核、General Core代表通用處理器核。
3. 根據(jù)權(quán)利要求1所述的一種基于多核動態(tài)劃分的非對稱虛擬機1/0調(diào)度方法,其特 征在于,所述的步驟2包括如下具體步驟步驟2. 1, I/O狀態(tài)采集I/O狀態(tài)監(jiān)控子模塊采集1/0數(shù)據(jù)參數(shù),并寫入預分配緩沖區(qū);該模塊位與虛擬設(shè)備 通道進行數(shù)據(jù)交互,首先通過追蹤啟動階段記錄的事件通道標號,跟蹤驅(qū)動Domain和客戶 Domain之間的事件傳遞過程,同時記錄本次I/O事件發(fā)生的時間戳,隨后通過預分配的地 址空間讀取I/O環(huán)中的I/O請求和應(yīng)答信息;1/0狀態(tài)采集在客戶Domain啟動并完成設(shè)備 前后端連接后開始執(zhí)行,當客戶Domain關(guān)閉并斷開設(shè)備前后端連接時終止;步驟2.2,I/0狀態(tài)信息處理I/O信息處理子模塊讀取并處理緩沖區(qū)內(nèi)數(shù)據(jù),對緩沖區(qū)內(nèi)的數(shù)據(jù)進行計算,給出如下 幾類計算結(jié)果a.各類1/0操作的數(shù)量及比例,b.每次1/0操作各個階段的耗時,c.各類 1/0操作的事件頻率;上述結(jié)果被調(diào)度決策模塊使用,用于判定當前系統(tǒng)I/O狀態(tài),所有上 述結(jié)果均通過串口輸出,也能夠利用內(nèi)核打印語句輸出到文件。
4. 根據(jù)權(quán)利要求1所述的一種基于多核動態(tài)劃分的非對稱虛擬機1/0調(diào)度方法,其特 征在于,所述的步驟3包括如下具體步驟步驟3. l,運行時參數(shù)設(shè)置調(diào)度決策模塊每隔250ms從1/0狀態(tài)監(jiān)控與信息處理模塊處獲取一次該時間段內(nèi)1/ 0應(yīng)答事件的發(fā)生頻率,并依此計算出I/O應(yīng)答事件發(fā)生的平均時間間隔,隨后將其記錄在 全局量t_fasttick中,當系統(tǒng)處于多核劃分調(diào)度狀態(tài)時,該值被用來設(shè)定Fasttick Core 的tick時鐘周期Tfastti。k,為保證各個VCPU調(diào)度時其credit能夠正確計算,Tfastti。k的精度 單位及最小取值為0. 1ms ;其中,VCPU代表虛擬CPU、 credit代表信用值;步驟3.2,調(diào)度決策判定調(diào)度決策模塊每隔250ms讀取一次I/O請求事件發(fā)生頻率,若連續(xù)4個周期,其頻率都 超過進入閾值1\,且系統(tǒng)當前處于正常調(diào)度狀態(tài),則執(zhí)行動態(tài)劃分操作;若連續(xù)2個周期低 于退出閾值T2,且系統(tǒng)當前處于多核劃分調(diào)度狀態(tài),則執(zhí)行恢復操作,解除動態(tài)劃分并恢復 系統(tǒng)至正常調(diào)度狀態(tài);若多核動態(tài)劃分退出進入條件均不符合,則保持當前系統(tǒng)運行狀態(tài)。
5. 根據(jù)權(quán)利要求1所述的一種基于多核動態(tài)劃分的非對稱虛擬機I/O調(diào)度方法,其特 征在于,所述的步驟4包括如下具體步驟步驟4. l,驅(qū)動Domain與Driver Core綁定虛擬機系統(tǒng)以VCPU為單位對驅(qū)動Domain和客戶Domain的各個Domain進行調(diào)度,每個Domain在創(chuàng)建時擁有固定數(shù)量的VCPU,當某個Domain被調(diào)度時,其VCPU被加載到實際 的物理CPU之上執(zhí)行;當系統(tǒng)軟中斷SOFTIRQ_SCHEDULE觸發(fā)并被響應(yīng)時,虛擬機系統(tǒng)主調(diào) 度函數(shù)schedule被調(diào)用,并從當前處理器的調(diào)度隊列中選擇下一個應(yīng)當被調(diào)度的VCPU,隨 后執(zhí)行調(diào)度切換;多核動態(tài)劃分模塊首先檢查全局標志BoimdFlag是否置位,以判斷當前 是否處于驅(qū)動Domain綁定的調(diào)度狀態(tài),如果全局標志BoundFlag被置位,則檢查處理器核 的編號是否符合指定配置為Driver Core的數(shù)值,如果符合,則讓其始終調(diào)度驅(qū)動Domain 的VCPU ;當全局標志BoundFlag未被置位時,則采用正常的調(diào)度策略;全局標志BoundFlag 的置位與清除由調(diào)度決策模塊完成,每當當前系統(tǒng)1/0狀態(tài)符合多核動態(tài)劃分進入或退出 條件時,調(diào)度決策模塊便對全局標志BoimdFlag進行相應(yīng)的修改操作,標志修改和實際調(diào) 度切換中間會存在一定的延遲,但該延遲最長不會超過3個tick時鐘周期,即30ms ;步驟4. 2, Fasttick CoreFasttick Core分離與非對稱調(diào)度時鐘設(shè)定在虛擬機系統(tǒng)中,主調(diào)度函數(shù)schedule和實際調(diào)度器間的聯(lián)系通過結(jié)構(gòu)化的跳轉(zhuǎn)表 實現(xiàn),對于系統(tǒng)默認的credit調(diào)度算法來說即為定義于schecLcredit. c函數(shù)中的全局結(jié) 構(gòu)體schecLcredit—def,該結(jié)構(gòu)體中提供了 VCPU初始化、刪除、睡眠、喚醒操作的處理函 數(shù),以及實際credit算法相關(guān)的調(diào)度處理函數(shù)cschecLschedule ;此外,調(diào)度器在初始化 時,會設(shè)置tick時鐘,每當時鐘中斷到來時就會進行credit值計算,并在必要時修改VCPU 的調(diào)度優(yōu)先級和狀態(tài),以及發(fā)起調(diào)度操作;本步驟執(zhí)行時,多核動態(tài)劃分模塊首先修改 Fasttickcore的tick時鐘周期,使其由默認的10ms修改為調(diào)度決策模塊測定的值Tfasttick, 隨后在其之上采用了 I/O事件響應(yīng)優(yōu)先的搶占式調(diào)度策略。
6.根據(jù)權(quán)利要求5所述的一種基于多核動態(tài)劃分的非對稱虛擬機1/0調(diào)度方法,其特 征在于,所述的搶占式調(diào)度策略,其判定過程包括如下內(nèi)容a如目標VCPU處于"UNDER/阻塞"狀態(tài),則提升其優(yōu)先級至BOOST (0),并立刻發(fā)起一次 調(diào)度;b如目標VCPU處于"UNDER/等待調(diào)度"狀態(tài),則檢查其是否處于Fasttick Core的 調(diào)度隊列中,如果是,則將其排到隊列頭部,如果不是,則將其從當前隊列中摘除,并放入 Fasttick Core調(diào)度隊列頭部;c如目標VCPU處于"UNDER/正在調(diào)度"狀態(tài)或BOOST狀態(tài),且在Fasttick Core之上調(diào) 度,則設(shè)置全局標志I0DomU_0nSchedule_f lag ;如該VCPU當前在General Core之上調(diào)度, 則設(shè)置全局標志I0DomU_0nSchedule_flag,并立刻發(fā)起調(diào)度,調(diào)度函數(shù)csched_schedule 中檢查到該標志后,直接挑選當前運行的VCPU做為下一個調(diào)度VCPU ;d如目標VCPU處于OVER狀態(tài),則首先將其優(yōu)先級修改為PREEMPT = 1,隨后檢查其是 否處于Fasttick Core的調(diào)度隊列中,如果是,則直接將其排到隊列頭部;如果不是,則將 其從當前所處的CPU隊列中摘除,并放入Fasttick Core的調(diào)度隊列頭部;e如目標VCPU處于PREEMPT狀態(tài),說明該VCPU正在Fasttick Core之上被調(diào)度運行,則 設(shè)置全局標志10DomUJ)nSchedule—flag,調(diào)度函數(shù)csched_schedule中檢查到該標志后, 直接挑選當前運行的VCPU做為下一個調(diào)度VCPU ;f處于UNDER狀態(tài)的VCPU在本次調(diào)度操作完成后,如果不是本次1/0事件的目標VCPU, 則停止調(diào)度,重新放入調(diào)度隊列并按優(yōu)先級排序;g處于BOOST狀態(tài)的VCPU在本次調(diào)度操作完成后,如果不是本次1/0事件的目標VCPU,則停止調(diào)度,將優(yōu)先級修改為UNDER,重新放入調(diào)度隊列并按優(yōu)先級排序;h處于PREEMPT狀態(tài)的VCPU在本次調(diào)度操作完成后,如果不是本次I/O事件的目標VCPU,則停止調(diào)度,將優(yōu)先級修改為OVER,重新放入調(diào)度隊列并按優(yōu)先級排序; i Fasttick Core在tick時鐘中斷到來時會發(fā)生調(diào)度切換。
7.根據(jù)權(quán)利要求1所述的一種基于多核動態(tài)劃分的非對稱虛擬機I/O調(diào)度方法,其特 征在于,所述的步驟5包括如下具體步驟步驟5. l,驅(qū)動Domain與Driver Core解綁定多核動態(tài)劃分模塊在主調(diào)度函數(shù)schedule中檢查全局標志BoundFlag,判定出系統(tǒng) 當前需要恢復至正常調(diào)度狀態(tài),隨后進入credit調(diào)度算法框架,選擇下一個應(yīng)該被調(diào)度的 VCPU,并執(zhí)行調(diào)度切換;步驟5. 2, Fasttick Core調(diào)度時鐘與策略恢復多核動態(tài)劃分模塊首先修改Fasttick core的tick時鐘周期,使其由調(diào)度決策模塊測 定的值Tf^tiek恢復至默認的10ms,隨后忽略10DomUJ)nSchedule—flag標志檢查,直接從當 前處理器的VCPU隊列中選擇下一個需要被調(diào)度的VCPU,隨后返回上層調(diào)度函數(shù),并執(zhí)行調(diào) 度切換。
全文摘要
本發(fā)明提出了一種基于多核動態(tài)劃分的非對稱虛擬機I/O調(diào)度方法,該方法在系統(tǒng)啟動時,首先由I/O調(diào)度初始化模塊完成調(diào)度參數(shù)配置與緩沖區(qū)分配,隨后系統(tǒng)運行時,由I/O狀態(tài)監(jiān)控與信息處理模塊動態(tài)采集驅(qū)動Domain和客戶Domain的運行時參數(shù)并進行處理,統(tǒng)計發(fā)生的I/O事件類型、時間和頻率參數(shù),隨后將統(tǒng)計結(jié)果交由調(diào)度決策模塊進行判定,該模塊根據(jù)預設(shè)的條件做出調(diào)度決策,并向多核動態(tài)劃分模塊發(fā)出指令,執(zhí)行多核動態(tài)劃分或恢復操作,從而改變系統(tǒng)的處理器核劃分模式及調(diào)度狀態(tài),使處理器資源的使用方式和Domain的調(diào)度切換策略更好的適應(yīng)當前系統(tǒng)的I/O負載需求,達到優(yōu)化I/O性能的目的。
文檔編號G06F9/455GK101706742SQ20091023808
公開日2010年5月12日 申請日期2009年11月20日 優(yōu)先權(quán)日2009年11月20日
發(fā)明者張炯, 白躍斌, 胡彥彥, 高小鵬, 龍翔 申請人:北京航空航天大學