專利名稱:一種多虛擬處理器同步調度的方法及計算機的制作方法
技術領域:
本發(fā)明主要涉及虛擬機技術領域,尤其涉及一種多虛擬處理器(VCPU, Virtual CPU)同步調度的方法及計算機。
背景技術:
現有虛擬機環(huán)境下,對于多數客戶操作系統(tǒng)(GOS, Guest Operation System)來說,屬于同 一個GOS中的多個VCPU并沒有同步運行。雖然目前 多數操作系統(tǒng)和應用程序都不太關心多核CPU中的每個CPU是否都同時可 用,但是屬于同一個GOS中的多個VCPU的不同步運行會引起下列問題。 首先是超時(Timeout)問題。在同 一個GOS運行過程中,虛擬機管理器
(VMM, Virtual Machine Monitor)將時鐘中斷僅發(fā)給該GOS中的虛擬引導處 理器(VBSP, Virtual Bootstrap Processor),如果該GOS中的虛擬應用處理器
(VAP, Virtutal Application Processor)的調度與該GOS中的VBSP的調度不 同步,則VAP的定時器的超時問題將不可避免。其原因在于,當GOS中的負 責程序執(zhí)行和應用的VAP被調度運行時,GOS中負責系統(tǒng)初始化啟動的VBSP 已經接收了虛擬機管理器發(fā)送的多個時鐘中斷,這些多個時鐘中斷使整個 GOS的系統(tǒng)時間已經前進了一大段時間,因此,當VAP開始運行時,相對于 VAP的運行時間,整個GOS的系統(tǒng)時間已經跳躍了一大段,從而使VAP的時 間等待隊列上的多個定時器超時。尤其在時鐘中斷補償機制情況下,超時問題 更容易出現。
另外是并發(fā)程序執(zhí)行性能問題。對于并發(fā)程序而言,多個線程或進程不但 需要并發(fā)執(zhí)行,而且需要相互同步。例如,當第一個線程需要等待第二個線程 的執(zhí)行結果才能繼續(xù)執(zhí)行,此時,就需要第二個線程能盡快得到執(zhí)行結果;而 多個線程會在多個不同的CPU上執(zhí)行以達到并發(fā)。這種情況如果發(fā)生在多個 不同步的VCPU上,將很可能出現因一個VCPU上的線程或進程未及時運行而帶來在其它VCPU上的線程或進程無法運行的現象。顯然,這將大大降4氐 并發(fā)程序的執(zhí)行性能。
發(fā)明內容
有鑒于此,本發(fā)明的實施例的目的在于提供一種多虛擬處理器同步調度的
方法及計算機,通過該方法及計算機實現了對同步GOS的多個VCPU的同步 調度。
一方面,提供了一種多虛擬處理器同步調度的方法,包括 確定第一物理CPU調度到的第一虛擬處理器需要與第二虛擬處理器同步
運行^
采用同步方式通知所述第二虛擬處理器對應的且包含有調度隊列的第二 物理CPU;
所述第二物理CPU在所述調度隊列中搜索到所述第二虛擬處理器; 將所述第二虛擬處理器從所述調度隊列中調出并在所述第二物理CPU上 運行。
該方法所述采用同步方式通知所述第二虛擬處理器對應的且包含有調度 隊列的第二物理CPU具體為
向所述第二物理CPU發(fā)送同步請求;或者,
向所述第一物理CPU發(fā)送同步請求,由所述第一物理CPU以預定方式轉 發(fā)所述同步請求給所述第二物理CPU。
該方法所述預定方式為處理器間中斷方式。
該方法所述第 一虛擬處理器與所述第二虛擬處理器屬于同 一個客戶操作 系統(tǒng),所述客戶操作系統(tǒng)為同步客戶操作系統(tǒng)。
該方法中,在所述確定第一物理CPU調度到的第一虛擬處理器需要與第 二虛擬處理器同步運行前包括
為所述同步客戶操作系統(tǒng)標記同步標識;
根據所述同步標識確定運行的客戶操作系統(tǒng)為所述同步客戶操作系統(tǒng)。 該方法包4舌
根據所述同步客戶操作系統(tǒng)的多個虛擬處理器的運行情況布署多個虛擬
5處理器在對應的多個物理CPU的調度隊列中的位置。另一方面,還提供了一種計算機,所述計算機包括一客戶操作系統(tǒng),包括有第一虛擬處理器和第二虛擬處理器;第一物理CPU和第二物理CPU,所述第一、第二物理CPU分別包含有
第 一調度隊列和第二調度隊列,其中所述第 一虛擬處理器與所述第一物理CPU
對應,所述第二虛擬處理器與所述第二物理CPU對應;虛擬機管理器,所述虛擬機管理器包括
同步通知模塊,用于在確定所述第一物理CPU調度到的所述第一虛擬處理器需要與所述第二虛擬處理器同步運行時,采用同步方式通知所述第二虛擬處理器對應的第二物理CPU;
同步調度模塊,用于將所述第二虛擬處理器從所述第二調度隊列中調出;
其中,所述第二虛擬處理器在所述第二物理CPU上運行。
該計算機所述同步通知模塊包括
第 一 同步通知單元,用于向所述第二物理CPU發(fā)送同步請求;第二同步通知單元,用于向所述第一物理CPU發(fā)送同步請求,由所述第一物理CPU以預定方式轉發(fā)所述同步請求給所述第二物理CPU。該計算機所述預定方式為處理器間中斷方式。
該計算機所述第一虛擬處理器與所述第二虛擬處理器屬于同一個客戶操作系統(tǒng),所述客戶操作系統(tǒng)為同步客戶操作系統(tǒng)。該計算機包括
同步標識模塊,用于為所述同步客戶操作系統(tǒng)標記同步標識;同步判斷模塊,用于根據所述同步標識確定運行的客戶操作系統(tǒng)為所述同步客戶操作系統(tǒng)。該計算機包括
環(huán)境調整模塊,用于根據所述同步客戶操作系統(tǒng)的多個虛擬處理器的運行情況布署所述多個虛擬處理器在多個物理CPU的調度隊列中的位置。
本發(fā)明的實施例所述的多虛擬處理器同步調度的方法及計算機,根據VCPU的運行情況合理布署同步GOS的多個VCPU在多個物理CPU的調度隊列中的位置,當確定當前物理CPU調度到的當前虛擬機處理器需要與其它虛擬機處理器同步運行時,向其它多個物理CPU發(fā)送同步請求,使其它多個物理CPU分別搜索到位于其調度隊列中的同步GOS的多個VCPU,通過搶占式調度策略將搜索到的該同步GOS的VCPU從調度隊列中調出并在相應的物理CPU上運行,從而實現對同步GOS的多個VCPU的同步調度運行,進而有效地解決了現有技術中由于多個VCPU的不同步運行造成的超時問題,提高了并發(fā)程序的執(zhí)行性能。
,
圖1為本發(fā)明第一具體實施例中多虛擬處理器同步調度裝置的結構框圖;圖2為本發(fā)明第一具體實施例中多虛擬處理器同步調度方法的流程圖;圖3為本發(fā)明具體實施例中多虛擬處理器同步調度過程示意圖;圖4為本發(fā)明第二具體實施例中多虛擬處理器同步調度裝置的結構框圖;圖5為本發(fā)明第二具體實施例中多虛擬處理器同步調度方法的流程圖。
具體實施例方式
下面結合附圖詳細描述本發(fā)明的具體實施例。
VMM為需要多個VCPU同步的GOS標記同步標識,在根據同步標識確定虛擬機系統(tǒng)中存在需要運行的同步GOS后,根據同步GOS的多個VCPU的運行情況合理布署該多個VCPU在多個物理CPU的調度隊列中的位置;在判斷確定當前物理CPU調度到的VCPU為同步GOS的VCPU后,向當前物理CPU以外的其它物理CPU發(fā)送同步請求,使其它物理CPU在各自的VCPU調度隊列中找到該同步GOS的VCPU;通過搶占式調度策略將該同步GOS的VCPU從調度隊列調出并在相應的物理CPU上運行。
虛擬機環(huán)境下,VMM根據當前物理CPU的數量以及虛擬機配置文件的配置信息為每個GOS配置相應數量的VCPU, 一般來說,VCPU的數量不能超過物理CPU的數量,其原因在于,當VCPU的數量超過物理CPU的數量時,虛擬機系統(tǒng)將無法實現多個VCPU在與該多個VCPU相對應的多個物理CPU
上的同步運行。
圖1為本發(fā)明第一具體實施例中多虛擬處理器同步調度裝置的結構框圖,
7圖中包括同步標識模塊101、同步判斷模塊102、環(huán)境調整模塊103、同步通
知模塊104和同步調度模塊105。其中,
同步標識模塊101,用于為同步GOS標記同步標識。
所述同步GOS為包括多個需要被同步調度運行的VCPU的GOS。
同步判斷模塊102,用于根據同步標識判斷虛擬機系統(tǒng)中是否存在需要運
行的同步GOS。
環(huán)境調整模塊103,用于根據同步GOS的多個VCPU的運行情況合理布 署該多個VCPU在多個物理CPU的調度隊列中的位置。
所述多個物理CPU中的每個物理CPU包含一個調度隊列,所述同步GOS 的多個VCPU分別與所述多個物理CPU——對應。例如,所述多個物理CPU 包括第一物理CPU和第二物理CPU,所述同步GOS的多個VCPU包括第一 VCPU和第二VCPU,其中,所述第一物理CPU包括第一調度隊列,所述第 二物理CPU包括第二調度隊列,根據同步GOS的多個VCPU的運行情況布 署該同步GOS的多個VCPU在多個物理CPU的調度隊列中的位置具體為 將所述第一 VCPU布署到所述第一物理CPU的第一調度隊列中,將所述第二 VCPU與所述第二物理CPU的第二調度隊列中。
同步通知模塊104,用于在確定當前物理CPU調度到當前虛擬處理器需 要與其它虛擬處理器同步運行時,采用同步方式通知所述其它虛擬處理器對應 的其它物理CPU。
同步通知模塊104包括狀態(tài)判斷單元1041、第一同步通知單元1042和第 二同步通知單元1043,其中,
狀態(tài)判斷單元1041,用于在環(huán)境調整模塊103調整好的環(huán)境下,判斷當 前物理CPU調度到的VCPU是否為同步GOS的VCPU,如果是,啟動第一同 步通知單元或第二同步通知單元;否則,不動作,其它物理CPU將按原有調 度順序對調度隊列中的VCPU進行調度。
第一同步通知單元1042,用于向其它物理CPU發(fā)送同步請求,使其它物 理CPU根據該同步請求在各自的調度隊列中找到該同步GOS的VCPU。
第二同步通知單元1043,用于向當前物理CPU發(fā)送同步請求,使當前物Interrupt)信息,從而其它物理CPU根據IPI信息在各自的調度隊列中4叟索到 該同步GOS的VCPU。
同步調度才莫塊105,用于通過搶占式調度策略將搜索到的該同步GOS的 VCPU從調度隊列中調出并在相應的物理CPU上運行。
所述相應的物理CPU為與該同步GOS的VCPU所在調度隊列對應的物理 CPU。
圖2為本發(fā)明第一具體實施例中多虛擬處理器同步調度方法的流程圖,具 體實施步驟如下
步驟201, VMM為同步GOS標記同步標識。
該步驟中,所述同步GOS為包括多個需要被同步調度運行的VCPU的 GOS。
步驟202, VMM根據同步標識判斷虛擬機系統(tǒng)中是否存在需要運行的同 步GOS,如果是,進入步驟203;否則,不動作。
步驟203, VMM根據同步GOS的多個VCPU的運行情況合理布署多個 VCPU在多個物理CPU的調度隊列中的位置。
下面以包括虛擬機管理器、GOS和雙核物理CPU的虛擬機系統(tǒng)為例對步 驟203進行詳細說明
該虛擬機系統(tǒng)中,GOS包括第一 VCPU和第二VCPU,雙核物理CPU包 括第一物理CPU和第二物理CPU。其中,第一 VCPU處于第一物理CPU的 調度隊列中,等待第一物理CPU的運行;第二 VCPU處于第二物理CPU的調 度隊列中,等待第二物理CPU的運行。當VMM將處于第一物理CPU的調度 隊列中的第一 VCPU調度到第二物理CPU的調度隊列時,為保證第一 VCPU 和第二 VCPU的同步調度,VMM將處于第二物理CPU的調度隊列中的第二 VCPU同步調度到第一物理CPU的調度隊列中,從而保證該GOS的兩個VCPU 分別在不同的物理CPU上同步運行。對于包括兩個以上的GOS和多核物理 CPU的虛擬機系統(tǒng),也可以通過上述類似方式實現對同步GOS的多個VCPU 的同步調度。
該步驟用于保證同步GOS的多個VCPU能夠始終布署在多個物理CPU 的調度隊列中。
9步驟204, VMM判斷當前物理CPU調度到的VCPU是否為同步GOS的 VCPU,如果是,進入步驟205;否則,不動作,其它物理CPU將按原有調度 順序對調度隊列中的VCPU進4亍調度。
步驟205,采用第一同步通知方式或第二同步通知方式通知其它物理 CPU,其它物理CPU根據該同步請求在各自的調度隊列中找到該同步GOS的 VCPU。
該步驟中,
在第一同步通知方式下,VMM向其它物理CPU發(fā)送同步請求,使其它 物理CPU根據該同步請求在各自的調度隊列中搜索到該同步GOS的VCPU。
在第二同步通知方式下,VMM向該物理CPU發(fā)送同步請求,使該物理 CPU根據該同步請求向其它物理CPU發(fā)送IPI信息,從而使其它物理CPU根 據IPI信息在各自的調度隊列中4臾索到該同步GOS的VCPU。
步驟206, VMM通過搶占式調度策略將搜索到的該同步GOS的VCPU 從調度隊列調出并在相應的物理CPU上運行。
該步驟中,所述相應的物理CPU為與該同步GOS的VCPU所在調度隊 列對應的物理CPU。
圖3為本發(fā)明具體實施例中多虛擬處理器同步調度過程示意圖,圖3包括 第一物理CPU和第二物理CPU,其中,
第一物理CPU的調度隊列中包括非同步第四GOS的VCPU0,第一同步 GOS的VCPU0,第二非同步GOS的VCPU0、第三非同步GOS的VCPUO;
第二物理CPU的調度隊列中包括第二非同步GOS的VCPUl,第四非同 步GOS的VCPUl ,第三非同步GOS的VCPUl 、第一同步GOS的VCPUl;
步驟301、 302,第一物理CPU在完成第四非同步GOS的VCPUO的調度 運行后,VMM通過搶占式調度策略將調度隊列中的第 一同步GOS的VCPUO 調入第一物理CPU上運行,并將第四非同步GOS的VCPUO從第一物理CPU 上調出。
步驟303、 304,第二物理CPU在接收到同步請求后,根據同步請求搜索 到第 一 同步GOS的VCPUl, VMM通過搶占式調度策略將調度隊列中的第一 同步GOS的VCPUl調入第二物理CPU上運行,并將第二非同步GOS的
10VCPU1從第二物理CPU調出。
圖4為本發(fā)明第二具體實施例中多虛擬處理器同步調度裝置的結構框圖, 圖中包括同步標識模塊401、同步判斷模塊402、同步通知模塊403和同步調 度模塊404。
同步標識^i塊401,用于為同步GOS標記同步標識。 所述同步GOS為包括多個需要被同步調度運行的VCPU的GOS。 同步判斷模塊402,根據同步標識確定虛擬機系統(tǒng)中是否存在需要運行的 同步GOS。
同步通知才莫塊403,用于在確定當前物理CPU調度到當前虛擬處理器需 要與其它虛擬處理器同步運行時,采用同步方式通知所述其它虛擬處理器對應 的其它物理CPU。
同步通知模塊403包括狀態(tài)判斷模塊4031、第一同步通知單元4032和第 二同步通知單元4033,其中,
狀態(tài)判斷模塊4031 ,用于判斷當前物理CPU調度到的VCPU是否為同步 GOS的VCPU,如果是,啟動第一同步通知單元或第二同步通知單元;否則,
第一同步通知單元4032,用于向其它物理CPU發(fā)送同步請求,使其它物 理CPU根據該同步請求在各自的調度隊列中搜索到該同步GOS的VCPU。
第二同步通知單元4033,用于向該物理CPU發(fā)送同步請求,使該物理CPU 根據該同步請求向其它物理CPU發(fā)送IPI信息,從而使其它物理CPU根據IPI 信息在各自的調度隊列中搜索到該同步GOS的VCPU。
同步調度模塊404,用于通過搶占式調度策略將搜索到的該同步GOS的 VCPU從調度隊列中調出并在相應的物理CPU上運行。
所述相應的物理CPU為與該同步GOS的VCPU所在調度隊列對應的物 理CPU。
圖5為本發(fā)明第二具體實施例中多虛擬處理器同步調度方法的流程圖, 步驟501, VMM為同步GOS標記同步標識。
該步驟中,所述同步GOS為包括多個需要被同步調度運行的VCPU的 GOS。步驟502, VMM根據同步標識判斷虛擬機系統(tǒng)中是否存在需要運行的同 步GOS,如果是,進入步驟503;否則,不動作。
步驟503 , VMM判斷當前物理CPU調度到的VCPU是否為同步GOS的 VCPU,如果是,進入步驟504;否則,不動作,其它物理CPU將按原有調度 順序對調度隊列中的VCPU進行調度。
步驟504,采用第 一 同步通知方式或第二同步通知方式通知其它物理CPU 其它物理CPU根據該同步請求在各自的調度隊列中找到該同步GOS的 VCPU。
該步驟中,
在第一同步通知方式下,VMM向其它物理CPU發(fā)送同步請求,使其它 物理CPU根據該同步請求在各自的調度隊列中搜索到該同步GOS的VCPU。
在第二同步通知方式下,VMM向該物理CPU發(fā)送同步請求,使該物理 CPU根據該同步請求向其它物理CPU發(fā)送IPI信息,從而使其它物理CPU根 據IPI信息在各自的調度隊列中搜索到該同步GOS的VCPU。
步驟505, VMM通過搶占式調度策略將搜索到的該同步GOS的VCPU 從調度隊列調出并在相應的物理CPU上運行。
該步驟中,所述相應的物理CPU為與該同步GOS的VCPU所在調度隊 列對應的物理CPU。
對于基于SEDF調度算法的虛擬機系統(tǒng)來說,可以采用本發(fā)明第二實施例 所述的方法實現對同步GOS的多個VCPU的同步調度運行。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā) 明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發(fā) 明的保護范圍之內。
1權利要求
1. 一種多虛擬處理器同步調度的方法,其特征在于,包括確定第一物理CPU調度到的第一虛擬處理器需要與第二虛擬處理器同步運行;采用同步方式通知所述第二虛擬處理器對應的且包含有調度隊列的第二物理CPU;所述第二物理CPU在所述調度隊列中搜索到所述第二虛擬處理器;將所述第二虛擬處理器從所述調度隊列中調出并在所述第二物理CPU上運行。
2. 根據權利要求1所述的方法,其特征在于,所述采用同步方式通知所 述第二虛擬處理器對應的且包含有調度隊列的第二物理CPU具體為向所述第二物理CPU發(fā)送同步請求;或者,向所述第一物理CPU發(fā)送同步請求,由所述第一物理CPU以預定方式轉 發(fā)所述同步請求給所述第二物理CPU。
3. 根據權利要求2所述的方法,其特征在于,所述預定方式為處理器間 中斷方式。
4. 根據權利要求1所述的方法,其特征在于,所述第一虛擬處理器與所 述第二虛擬處理器屬于同一個客戶操作系統(tǒng),所述客戶操作系統(tǒng)為同步客戶操 作系統(tǒng)。
5. 根據權利要求4所述的方法,其特征在于,在所述確定第一物理CPU 調度到的第 一虛擬處理器需要與第二虛擬處理器同步運行前包括為所述同步客戶操作系統(tǒng)標記同步標識;根據所述同步標識確定運行的客戶操作系統(tǒng)為所述同步客戶操作系統(tǒng)。
6. 根據權利要求4所述的方法,其特征在于,該方法包括 根據所述同步客戶操作系統(tǒng)的多個虛擬處理器的運行情況布署多個虛擬處理器在對應的多個物理CPU的調度隊列中的位置。
7. —種計算機,其特征在于,包括一客戶操作系統(tǒng),包括有第 一虛擬處理器和第二虛擬處理器;第一物理CPU和第二物理CPU,所述第一、第二物理CPU分別包含有 第一調度隊列和第二調度隊列,其中所述第一虛擬處理器與所述第一物理CPU 對應,所述第二虛擬處理器與所述第二物理CPU對應;虛擬機管理器,所述虛擬機管理器包括同步通知模塊,用于在確定所述第一物理CPU調度到的所述第一虛擬處 理器需要與所述第二虛擬處理器同步運行時,采用同步方式通知所述第二虛擬 處理器對應的第二物理CPU;同步調度模塊,用于將所述第二虛擬處理器從所述第二調度隊列中調出; 其中,所述第二虛擬處理器在所述第二物理CPU上運行。
8. 根據權利要求7所述的計算機,其特征在于,所述同步通知模塊包括 第 一 同步通知單元,用于向所述第二物理CPU發(fā)送同步請求; 第二同步通知單元,用于向所述第一物理CPU發(fā)送同步請求,由所述第一物理CPU以預定方式轉發(fā)所述同步請求給所述第二物理CPU。
9. 根據權利要求8所述的計算機,其特征在于,所述預定方式為處理器 間中斷方式。
10. 根據權利要求7所述的計算機,其特征在于,所述第一虛擬處理器與 所述第二虛擬處理器屬于同一個客戶操作系統(tǒng),所述客戶操作系統(tǒng)為同步客戶 操作系統(tǒng)。
11. 根據權利要求7所述的計算機,其特征在于,該計算機包括 同步標識^t塊,用于為所述同步客戶操作系統(tǒng)標記同步標識; 同步判斷模塊,用于根據所述同步標識確定運行的客戶操作系統(tǒng)為所述同步客戶操作系統(tǒng)。
12. 根據權利要求7所述的計算機,其特征在于,該計算機包括 環(huán)境調整模塊,用于根據所述同步客戶操作系統(tǒng)的多個虛擬處理器的運行情況布署所述多個虛擬處理器在多個物理CPU的調度隊列中的位置。
全文摘要
本發(fā)明公開了一種多虛擬處理器VCPU同步調度的方法及計算機,包括一客戶操作系統(tǒng),包括有第一VCPU和第二VCPU;第一物理CPU和第二物理CPU,虛擬機管理器,所述虛擬機管理器包括同步通知模塊,用于在確定所述第一物理CPU調度到的所述第一VCPU需要與所述第二VCPU同步運行時,采用同步方式通知所述第二VCPU對應的第二物理CPU;同步調度模塊,用于將所述第二VCPU從所述第二調度隊列中調出;其中,所述第二虛擬處理器在所述第二物理CPU上運行。通過前述方案實現對同步GOS的多個VCPU的同步調度,進而有效地解決現有技術中由于多個VCPU的不同步運行造成的超時問題,提高并發(fā)程序的執(zhí)行性能。
文檔編號G06F9/52GK101470635SQ20071030403
公開日2009年7月1日 申請日期2007年12月24日 優(yōu)先權日2007年12月24日
發(fā)明者劉春梅, 凱 王 申請人:聯(lián)想(北京)有限公司