PU的信息,做出是否執(zhí)行加速的決策。如果是,將加速發(fā)起者的剩余時間 片提供給被加速候選者,當(dāng)被加速候選者被虛擬機(jī)監(jiān)控器搶占(時間片耗盡或被阻塞)時, 如果被加速候選者還處于可運(yùn)行狀態(tài),再將被加速候選者返回到原本的調(diào)度路徑;這樣不 僅降低了被加速候選者的調(diào)度延時,還使其獲得了額外的調(diào)度機(jī)會,以至于達(dá)到被加速的 效果;其中,后端加速部分是本發(fā)明的處理核心。
[0039] 以下結(jié)合圖2和實(shí)施例1具體描述本發(fā)明提供的虛擬化環(huán)境下面向任務(wù)并行編程 模型的優(yōu)化方法,具體包括以下步驟:
[0040] (1)獲取每個小偷線程W失敗的竊取操作,讀取相應(yīng)受害線程V在任務(wù)并行編程模 型中維護(hù)的運(yùn)行狀態(tài)和雙端隊(duì)列信息;
[0041] (2)根據(jù)V的運(yùn)行狀態(tài),判斷V是否為執(zhí)行任務(wù)的有用線程,如果是,進(jìn)入步驟 (3);否則,結(jié)束本次優(yōu)化;
[0042] (3)判斷V的雙端隊(duì)列是否為空,如果是,進(jìn)入步驟⑷;否則,結(jié)束本次優(yōu)化;
[0043] (4)通過自定義的系統(tǒng)功能調(diào)用,將W和V的線程標(biāo)識符Wid和Vid,分別作為系統(tǒng) 功能調(diào)用的第一個和第二個參數(shù),發(fā)送給客戶操作系統(tǒng)的內(nèi)核層;因?yàn)樵撓到y(tǒng)功能調(diào)用約 定第一個和第二個參數(shù)分別代表小偷線程和受害線程的標(biāo)識符,所以相當(dāng)于將線程的角色 信息也發(fā)送給客戶操作系統(tǒng)的內(nèi)核層;
[0044] (5)客戶操作系統(tǒng)的內(nèi)核層根據(jù)Wid和Vid,查找內(nèi)核中代表小偷線程W和受害線 程V的數(shù)據(jù)結(jié)構(gòu),并從中獲取V在內(nèi)核層的運(yùn)行狀態(tài),以及W和V所在虛擬CPU的標(biāo)識符:VCPU(W)i(^VCPU(V) id;
[0045] (6)根據(jù)V在內(nèi)核層的運(yùn)行狀態(tài),判斷V是否已被客戶操作系統(tǒng)搶占,如果是,結(jié)束 本次優(yōu)化;否則,進(jìn)入步驟(7);
[0046] (7)將運(yùn)行W的虛擬CPU角色定義為加速發(fā)起者,運(yùn)行V的虛擬CPU角色定義為被 加速候選者,并通過自定義的超級調(diào)用,將VCPU(W) 1(1和VCPU(V)id分別作為超級調(diào)用的第一 個參數(shù)和第二個參數(shù),發(fā)送給虛擬機(jī)監(jiān)控器;因?yàn)樵摮壵{(diào)用約定第一個參數(shù)和第二個參 數(shù)分別代表加速發(fā)起者和被加速候選者在虛擬機(jī)監(jiān)控器中的標(biāo)識符,所以相當(dāng)于將相應(yīng)虛 擬CPU的角色信息發(fā)送給虛擬機(jī)監(jiān)控器;
[0047] (8)虛擬機(jī)監(jiān)控器接收來自客戶虛擬機(jī)的虛擬CPU標(biāo)識符:VCPU(W) 1(1和VCPU(V) id,查找虛擬機(jī)監(jiān)控器中代表加速發(fā)起者和被加速候選者的虛擬CPU數(shù)據(jù)結(jié)構(gòu),并從中讀取 它們的運(yùn)行狀態(tài)和所在物理CPU的信息;
[0048] (9)根據(jù)加速發(fā)起者和被加速候選者所在物理CPU的信息以及運(yùn)行狀態(tài),決定是 否執(zhí)行加速,如果是,進(jìn)入步驟(10);否則,結(jié)束本次優(yōu)化;如圖3所示,本步驟中,決定是否 執(zhí)行加速的過程具體如下:
[0049] (9-1)根據(jù)加速發(fā)起者和被加速候選者所在物理CPU的信息,判斷它們是否屬于 相同NUMA節(jié)點(diǎn),如果是,進(jìn)入步驟(9-2);否則,決定不執(zhí)行加速;
[0050] (9-2)根據(jù)被加速候選者的運(yùn)行狀態(tài),判斷被加速候選者是否已被虛擬機(jī)監(jiān)控器 搶占,如果是,進(jìn)入步驟(9-3);否則,決定不執(zhí)行加速;
[0051] (9-3)根據(jù)加速發(fā)起者的運(yùn)行狀態(tài),計(jì)算它在當(dāng)前調(diào)度的剩余時間片,判斷剩余時 間片的長度是否大于零,如果是,決定執(zhí)行加速;否則,決定不執(zhí)行加速;
[0052] (10)利用加速發(fā)起者的剩余時間片,加速被加速候選者的執(zhí)行;如圖4所示,本步 驟具體包括以下子步驟:
[0053] (10-1)暫停執(zhí)行加速發(fā)起者;
[0054] (10-2)保留被加速候選者在當(dāng)前物理CPU運(yùn)行隊(duì)列中的位置,并將被加速候選者 迀移到加速發(fā)起者所在的物理CPU;
[0055] (10-3)調(diào)度被加速候選者,且調(diào)度時間片等于加速發(fā)起者的剩余時間片;
[0056] (10-4)當(dāng)被加速候選者被虛擬機(jī)監(jiān)控器搶占(時間片耗盡或被阻塞)時,如果被 加速候選者還處于可運(yùn)行狀態(tài),則將它迀移回原本所在的物理CPU運(yùn)行隊(duì)列中的位置,恢 復(fù)其原本的調(diào)度路徑;這樣不僅降低了被加速候選者的調(diào)度延時,還使其獲得了額外的調(diào) 度機(jī)會,以至于達(dá)到被加速的效果;
[0057] (10-5)結(jié)束本次加速。
[0058] 具體的,在實(shí)施例1中,采用版本號為4. 2. 1的Xen虛擬機(jī)監(jiān)控器,在單臺16核物 理服務(wù)器上部署虛擬化環(huán)境,詳細(xì)實(shí)驗(yàn)環(huán)境配置如表1所示:
[0059] 表1實(shí)施例1實(shí)驗(yàn)配置環(huán)境
[0060]
【主權(quán)項(xiàng)】
1. 一種虛擬化環(huán)境下面向任務(wù)并行編程模型的優(yōu)化方法,其特征在于,該方法包括以 下步驟: (1) 獲取任務(wù)并行編程模型中失敗的竊取操作,讀取失敗的竊取操作對應(yīng)的受害線程 在任務(wù)并行編程模型中維護(hù)的運(yùn)行狀態(tài)和雙端隊(duì)列信息; (2) 根據(jù)受害線程的運(yùn)行狀態(tài),判斷受害線程是否為執(zhí)行任務(wù)的有用線程,如果是,進(jìn) 入步驟(3);否則,結(jié)束本次優(yōu)化;其中,有用線程是指擁有可執(zhí)行任務(wù)的線程; (3) 判斷受害線程的雙端隊(duì)列是否為空,如果是,進(jìn)入步驟(4);否則,結(jié)束本次優(yōu)化; (4) 通過自定義的系統(tǒng)功能調(diào)用,將小偷線程的線程標(biāo)識符與受害線程的線程標(biāo)識符, 分別作為系統(tǒng)功能調(diào)用的第一個參數(shù)與第二個參數(shù),發(fā)送給客戶操作系統(tǒng)的內(nèi)核層; (5) 操作系統(tǒng)的內(nèi)核層根據(jù)小偷線程的標(biāo)識符和受害線程的標(biāo)識符,查找內(nèi)核中代表 小偷線程和受害線程的數(shù)據(jù)結(jié)構(gòu),并從中獲取受害線程在內(nèi)核層的運(yùn)行狀態(tài),以及小偷線 程和受害線程所在虛擬CPU的標(biāo)識符; (6) 根據(jù)受害線程在內(nèi)核層的運(yùn)行狀態(tài),判斷受害線程是否已被客戶操作系統(tǒng)搶占,如 果是,結(jié)束本次優(yōu)化;否則,進(jìn)入步驟(7); (7) 將運(yùn)行小偷線程的虛擬CPU角色定義為加速發(fā)起者,運(yùn)行受害線程的虛擬CPU角色 定義為被加速候選者,并通過自定義的超級調(diào)用,將加速發(fā)起者的虛擬CPU標(biāo)識符和被加 速候選者的虛擬CPU標(biāo)識符,分別作為超級調(diào)用的第一個參數(shù)和第二個參數(shù),發(fā)送給虛擬 機(jī)監(jiān)控器; (8) 虛擬機(jī)監(jiān)控器接收來自客戶虛擬機(jī)的虛擬CPU標(biāo)識符,查找虛擬機(jī)監(jiān)控器中代表 加速發(fā)起者和被加速候選者的虛擬CPU數(shù)據(jù)結(jié)構(gòu),并從中讀取它們的運(yùn)行狀態(tài)和所在物理 CPU的信息; (9) 根據(jù)加速發(fā)起者和被加速候選者所在物理CPU的信息以及運(yùn)行狀態(tài),決定是否執(zhí) 行加速,如果是,進(jìn)入步驟(10);否則,結(jié)束本次優(yōu)化; (10) 利用加速發(fā)起者的剩余時間片,加速被加速候選者的執(zhí)行。
2. 如權(quán)利要求1所述的一種虛擬化環(huán)境下面向任務(wù)并行編程模型的優(yōu)化方法,其特征 在于,步驟(9)中決定是否執(zhí)行加速的過程具體如下: (9-1)根據(jù)加速發(fā)起者和被加速候選者所在物理CPU的信息,判斷它們是否屬于相同NUMA節(jié)點(diǎn),如果是,進(jìn)入步驟(9-2);否則,決定不執(zhí)行加速; (9-2)根據(jù)被加速候選者的運(yùn)行狀態(tài),判斷被加速候選者是否已被虛擬機(jī)監(jiān)控器搶占, 如果是,進(jìn)入步驟(9-3);否則,決定不執(zhí)行加速; (9-3)根據(jù)加速發(fā)起者的運(yùn)行狀態(tài),計(jì)算它在當(dāng)前調(diào)度的剩余時間片,判斷剩余時間片 的長度是否大于零,如果是,決定執(zhí)行加速;否則,決定不執(zhí)行加速。
3. 如權(quán)利要求1所述的一種虛擬化環(huán)境下面向任務(wù)并行編程模型的優(yōu)化方法,其特征 在于,步驟(10)包括以下子步驟: (10-1)暫停執(zhí)行加速發(fā)起者; (10-2)保留被加速候選者在當(dāng)前物理CPU運(yùn)行隊(duì)列中的位置,并將被加速候選者迀移 到加速發(fā)起者所在的物理CPU; (10-3)調(diào)度被加速候選者,且調(diào)度時間片等于加速發(fā)起者的剩余時間片; (10-4)當(dāng)被加速候選者被虛擬機(jī)監(jiān)控器搶占時,如果被加速候選者還處于可運(yùn)行狀 態(tài),則將它迀移回原本所在的物理CPU運(yùn)行隊(duì)列中的位置,恢復(fù)其原本的調(diào)度路徑; (10-5)結(jié)束本次加速。
【專利摘要】本發(fā)明公開了一種虛擬化環(huán)境下面向任務(wù)并行編程模型的優(yōu)化方法;在位于客戶虛擬機(jī)的前端監(jiān)控部分獲取任務(wù)并行編程模型中失敗的竊取操作;在位于虛擬機(jī)監(jiān)控器的后端加速部分根據(jù)加速發(fā)起者和被加速候選者的運(yùn)行狀態(tài)和所在物理CPU的信息,做出是否執(zhí)行加速的決策。若執(zhí)行加速,將加速發(fā)起者的剩余時間片提供給被加速候選者,當(dāng)被加速候選者被虛擬機(jī)監(jiān)控器搶占(時間片耗盡或被阻塞)時,若被加速候選者處于可運(yùn)行狀態(tài),恢復(fù)其原本的調(diào)度路徑;本發(fā)明為現(xiàn)有任務(wù)并行編程模型增加了針對虛擬化環(huán)境的優(yōu)化,減少了運(yùn)行小偷線程的虛擬CPU對計(jì)算資源的浪費(fèi),降低了運(yùn)行有用線程的虛擬CPU的調(diào)度延時,從而實(shí)現(xiàn)將物理計(jì)算資源最大化地投入到有效計(jì)算中。
【IPC分類】G06F9-455, G06F9-44
【公開號】CN104765613
【申請?zhí)枴緾N201510187523
【發(fā)明人】吳松, 金海 , 彭亞瓊
【申請人】華中科技大學(xué)
【公開日】2015年7月8日
【申請日】2015年4月21日