一種面向虛擬桌面的vcpu調(diào)度方法
【專利摘要】本發(fā)明提供一種面向虛擬桌面的VCPU調(diào)度方法,包括下列步驟:1)在每個調(diào)度周期,根據(jù)所搜集的各個VCPU當前所處理任務的類型,將VCPU分為前臺VCPU和后臺VCPU;2)基于搶占原則對VCPU進行調(diào)度,所述搶占原則包括:前臺VCPU搶占正在運行的后臺VCPU的物理資源,前臺VCPU之間不進行物理資源搶占。本發(fā)明能夠自適應地匹配虛擬桌面系統(tǒng)的負載類型,提高虛擬桌面系統(tǒng)的用戶交互體驗。
【專利說明】
-種面向虛擬桌面的VCPU調(diào)度方法
技術領域
[0001] 本發(fā)明設及云計算、虛擬化及虛擬桌面技術領域,具體地說,本發(fā)明設及一種面向 虛擬桌面的VCPU調(diào)度方法。
【背景技術】
[0002] 現(xiàn)有的虛擬化軟件如Xen、KVM等對虛擬桌面的VCPU調(diào)度基本是按照傳統(tǒng)的面向公 平原則進行調(diào)度,重點體現(xiàn)在虛擬桌面之間盡可能平均分配處理器資源。例如,在KVM虛擬 化軟件中,采用的是Linux內(nèi)核的完全公平調(diào)度(Completely Fair Schedule,CFS)算法,該 算法的特點是將所有進程統(tǒng)一對待,在眾多測試中該調(diào)度算法的性能表現(xiàn)也非常優(yōu)越。CFS 調(diào)度算法最早在Linux 2.6.23內(nèi)核中發(fā)布,改進了在早期內(nèi)核調(diào)度算法的復雜度的問題, 使調(diào)度算法更加簡單、有效。它的出現(xiàn)徹底改變了內(nèi)核實施進程調(diào)度的方式,不再依賴劃分 時間片和增加搶占點。
[0003] WS算法的核屯、思想是基于虛擬時鐘的概念。虛擬時鐘區(qū)別于硬件的實際時鐘,虛 擬時鐘可W根據(jù)權重調(diào)節(jié)步調(diào),按照不同的步調(diào)前進。而實際時鐘則是按照固定的步調(diào)前 進,不能改變。每個處理器不僅維護著實際的時鐘,還在對應的運行隊列中維護著一個虛擬 時鐘,它的前進步伐與該處理器上的進程總權重成反比,總權重越大,虛擬時鐘前進的步伐 越慢。同時,每個進程也有自己的虛擬時鐘,它記錄著進程已經(jīng)占用CPU的虛擬時間。它的前 進步伐與進程的權重成反比,進程的權重對應進程的優(yōu)先級,對于不同優(yōu)先級的進程,一般 來說,優(yōu)先級低的進程其虛擬時鐘的步調(diào)會比較快,而優(yōu)先級高的步調(diào)會比較慢。CFS調(diào)度 算法會選擇最落后于運行隊列虛擬時鐘的進程來執(zhí)行。
[0004] 現(xiàn)有的WS調(diào)度算法雖然能夠最大限度地體現(xiàn)資源分配的均衡性,但它并不能很 好地支持虛擬桌面系統(tǒng)運行。尤其是在用戶體驗方面,WS調(diào)度算法難W做到與同等配置的 物理桌面計算機(如筆記本電腦、臺式機等)相媳美,用戶在使用虛擬桌面系統(tǒng)時,往往有操 作延遲大、響應慢等不良體驗,運也是虛擬桌面系統(tǒng)的主要挑戰(zhàn)之一。宿主物理機上同時運 行的虛擬桌面數(shù)量越多,用戶體驗越差。
【發(fā)明內(nèi)容】
[0005] 因此,本發(fā)明的任務是克服現(xiàn)有技術的不足,提供一種面向虛擬桌面的VCPU調(diào)度 解決方案。
[0006] 本發(fā)明提供了一種面向虛擬桌面的VCPU調(diào)度方法,包括下列步驟:
[0007] 1)在每個調(diào)度周期,根據(jù)所捜集的各個VCPU當前所處理任務的類型,將VCPU分為 前臺VCPU和后臺VCPU,前臺VCPU的調(diào)度優(yōu)先級高于后臺VCPU;
[000引2)基于搶占原則對VCPU進行調(diào)度,所述搶占原則包括:前臺VCPU搶占正在運行的 后臺VCPU的物理資源,前臺VCPU之間不進行物理資源搶占。
[0009]其中,所述步驟1)還包括:如果一個任務的所屬應用的窗口界面顯示在當前屏幕 上,則該任務的類型為前臺任務,否則該任務的類型為后臺任務。
[0010]其中,所述步驟I)包括下列子步驟:
[ocm] 11)捜集各個VCPU當前所處理任務的類型,W及系統(tǒng)中各類中斷與VCPU的映射綁 定關系;
[0012 ] 12)將VCPU分為前臺VCPU和后臺VCPU;
[001引13)對前臺VCPU劃分子優(yōu)先級。
[0014] 其中,所述步驟11)中,所述的捜集各個VCPU當前所處理任務的類型W及系統(tǒng)中各 類中斷與VCPU的映射綁定關系,由在客戶機操作系統(tǒng)中運行一個內(nèi)核級代理執(zhí)行。
[0015] 其中,所述步驟13)中,根據(jù)前臺VCPU的當前前臺任務類型分配子優(yōu)先級,前臺任 務類型包括:用戶輸入事件處理任務、面向用戶的輸出任務、硬件設備中斷及事件處理任務 W及由用戶輸入引起的并需要在輸出中反饋給用戶處理結果的任務,運些前臺任務類型按 照子優(yōu)先級由高至低的順序排序。
[0016] 其中,所述步驟2)還包括:前臺VCPU之間按照各自的子優(yōu)先級分配空閑的物理資 源。
[0017] 其中,所述步驟2)還包括:當同一個客戶機操作系統(tǒng)上同時有兩個及W上的前臺 任務時,當同一臺宿主物理機上運行多臺虛擬機的多個前臺任務時,或者多個不同虛擬機 的前臺任務的VCPU由物理機上同一個物理CPU執(zhí)行時,前臺VCPU之間按照各自的子優(yōu)先級 分配空閑的物理資源。
[0018] 其中,所述步驟2)還包括:在虛擬機監(jiān)視器中設置專用的前臺VCPU遷移調(diào)度線程, 在物理CPU之間遷移和調(diào)度前臺VCPU,使得各物理CPU所運行的前臺VCPU數(shù)目基本一致,實 現(xiàn)動態(tài)的平衡。
[0019] 其中,所述步驟2)還包括:在虛擬機的層面上,通過調(diào)度使得任意兩個擁有相同數(shù) 量和配置的VCPU的虛擬機,在同一個調(diào)度周期內(nèi)各個VCPU運行時間的總和大致相同。
[0020] 與現(xiàn)有技術相比,本發(fā)明具有下列技術效果:
[0021] 1、本發(fā)明能夠自適應地匹配虛擬桌面系統(tǒng)的負載類型,提高虛擬桌面系統(tǒng)的用戶 交互體驗。
[0022] 2、本發(fā)明能夠在保證良好用戶體驗的前提下提高宿主物理機上同時運行的虛擬 桌面系統(tǒng)的數(shù)量,節(jié)約硬件成本。
[0023] 3、本發(fā)明能夠對通過惡意搶占宿主物理機CPU資源而制造拒絕服務攻擊進行有效 防御。
【附圖說明】
[0024] W下,結合附圖來詳細說明本發(fā)明的實施例,其中:
[0025] 圖1示出了本發(fā)明一個實施例中前臺VCPU在宿主物理機CPU調(diào)度隊列中遷移之前 的狀態(tài);該狀態(tài)為不均衡狀態(tài);
[0026] 圖2示出了本發(fā)明一個實施例中前臺VCPU在宿主物理機CPU調(diào)度隊列中遷移之后 的狀態(tài);該狀態(tài)為均衡狀態(tài);
[0027] 圖3示出了本發(fā)明一個實施例中同一個調(diào)度周期內(nèi)兩個虛擬機中VCPU運行時間的 總和對比;
[002引上述附圖中,Host表示宿主機,即物理機,F(xiàn)rontend VCPU表示前臺VCPU, Background VCPU表示后臺VCPU,VM1表示虛擬機I,VM2表示虛擬機2。
【具體實施方式】
[0029] 如前文所述,用戶在使用虛擬桌面系統(tǒng)時,往往有操作延遲大、響應慢等不良體 驗,運也是虛擬桌面系統(tǒng)的主要挑戰(zhàn)之一。宿主物理機上同時運行的虛擬桌面數(shù)量越多,用 戶體驗越差。發(fā)明人對此進行了深入研究,發(fā)現(xiàn)運與目前的面向公平原則的虛擬機VCPU調(diào) 度策略有直接的關系。不同虛擬機的多個VCPU運行在宿主機上相同的物理CPU上,并通過各 種調(diào)度算法(如CFS)進行公平性調(diào)度。當用戶在虛擬桌面系統(tǒng)中操作時(如敲擊鍵盤),需要 由虛擬桌面系統(tǒng)的某一個VCPU對鍵盤輸入中斷予W響應,而此時,該VCPU可能并未被調(diào)度 執(zhí)行,從而不能及時響應該中斷,而只有等到VCPU被調(diào)度執(zhí)行時,該鍵盤輸入操作才能夠得 到響應,運就會造成用戶操作延遲大。因此,現(xiàn)有虛擬化環(huán)境下常用的面向公平原則的VCPU 調(diào)度算法并不適用于虛擬桌面系統(tǒng)的場景。
[0030] 基于此,根據(jù)本發(fā)明的一個實施例,提出了一種面向虛擬桌面的VCPU調(diào)度方法,包 括下列步驟:
[0031] 步驟1:在每個調(diào)度周期,捜集各個VCPU當前所處理任務的類型,W及系統(tǒng)中各類 中斷與VCPU的映射綁定關系,基于運些因素將VCPU分為前臺VCPU和后臺VCPU。前臺VCPU的 調(diào)度優(yōu)先級高于后臺VCPU。對于前臺VCPU,進一步根據(jù)面向交互的虛擬機VCPU動態(tài)優(yōu)先級 機制分配子優(yōu)先級。
[0032] 步驟2:基于虛擬機VCPU動態(tài)優(yōu)先級的調(diào)度策略對VCPU進行調(diào)度,將VCPU放入物理 CPU調(diào)度隊列的合適位置。該調(diào)度策略包括搶占原則。搶占原則包括:前臺VCPU搶占正在運 行的后臺VCPU的物理資源,前臺VCPU之間不進行物理資源搶占,而是按照子優(yōu)先級的高低 分配空閑的物理資源。優(yōu)先級越高,對應VCPU在物理CPU調(diào)度隊列中的位置越靠前。
[0033] 本實施例能夠根據(jù)虛擬機的VCPU所執(zhí)行的任務的類型為其設置動態(tài)優(yōu)先級,處理 交互任務的VCPU則分配較高的優(yōu)先級,處理非交互任務的VCPU則分配較低的優(yōu)先級,基于 虛擬機VCPU動態(tài)優(yōu)先級的調(diào)度策略,優(yōu)先調(diào)度處理交互任務的虛擬機VCPU到宿主機物理 CPU上運行,從而使得虛擬機的用戶交互任務能夠得到及時的處理,進而提升用戶使用虛擬 桌面系統(tǒng)的體驗。
[0034] 在另一個實施例中,基于虛擬機VCPU動態(tài)優(yōu)先級的調(diào)度策略還包括多處理器間的 VCPU調(diào)度均衡原則和/或W虛擬機為粒度的公平性原則。
[0035] 多處理器間的VCPU調(diào)度均衡原則包括:在虛擬機監(jiān)視器中設置專用的前臺VCPU遷 移調(diào)度線程,在物理CPU之間遷移和調(diào)度前臺VCPU,使得各物理CPU所運行的前臺VCPU數(shù)目 基本一致,實現(xiàn)動態(tài)的平衡。
[0036] W虛擬機為粒度的公平性原則包括:從虛擬機的角度進行物理CPU資源分配的總 量控制,在虛擬機的層面上維持公平性,即,通過調(diào)度使得兩個擁有相同數(shù)量和配置的VCPU 的虛擬機,在同一個調(diào)度周期內(nèi)各個VCPU運行時間的總和大致相同。
[0037] 下面,結合實施例,從面向交互的虛擬機VCPU動態(tài)優(yōu)先級機制,基于虛擬機VCPU動 態(tài)優(yōu)先級的調(diào)度策略兩個方面,對本發(fā)明做進一步地描述。
[003引一、面向交互的虛擬機VCPU動態(tài)優(yōu)先級機制
[0039]虛擬機VCPU的優(yōu)先級是進行調(diào)度的依據(jù),一般而言,對于虛擬桌面系統(tǒng)的用戶而 言,即便桌面操作系統(tǒng)支持多任務模式,但在一段時間之內(nèi),用戶關注的任務可能只有一 個,即該應用的窗口界面顯示在當前屏幕上的那個任務(本發(fā)明中稱為"前臺任務",與之相 反的則稱為"后臺任務")。然而,處理前臺任務的VCPU在虛擬機監(jiān)視器(VMM,或稱為 Hypervisor)的層面并沒有被特殊處理,仍然與其它后臺任務一樣均等地獲取CPU資源,在 VCPU調(diào)度過程中,前臺任務沒有被及時處理,從而影響用戶操作體驗。基于此,根據(jù)本發(fā)明 的一個實施例,提出了一種虛擬機VCPU優(yōu)先級的動態(tài)標定方案,該虛擬機VCPU優(yōu)先級的動 態(tài)標定方案基于VCPU當前所處理的任務類型(前臺任務或者后臺任務),而VCPU所處理的任 務類型是在虛擬機客戶操作系統(tǒng)中確定的,在VMM,或稱為Hypervisor中則無從感知。在一 個實施例中,采用客戶機代理架構,即,在客戶機操作系統(tǒng)中運行一個內(nèi)核級代理(成為優(yōu) 先級代理),該代理動態(tài)捜集各個VCPU當前所處理任務的類型,W及系統(tǒng)中各類中斷與VCPU 的映射綁定關系,基于運些因素將VCPU分為前臺VCPU和后臺VCPU。
[0040] 進一步地,在一個實施例中,為了適應同一個客戶機操作系統(tǒng)上同時有兩個及W 上的前臺任務的情況,如用戶同時打開了 Word文檔和詞典軟件,一邊閱讀一邊進行翻譯,運 兩個任務都是前臺任務,可能由不同的VCPU在運行。此外,同一臺宿主物理機上的多臺虛擬 機上可能有多個前臺任務,而多個不同虛擬機的前臺任務的VCPU可能由物理機上同一個物 理CPU執(zhí)行,運就需要更進一步在多個前臺VCPU之間進行細粒度的調(diào)度,W更好地滿足各個 前臺VCPU的響應要求。為此,本發(fā)明將前臺VCPU再細分為四個子優(yōu)先級(由高到低依次為1、 2、3、4),如表1所示:
[0041] 表 1
[0042]
[0043] W用戶在虛擬桌面中點擊圖標打開并編輯Word(微軟Office辦公軟件)為例,基于 上述VCPU優(yōu)先級標定方法,可W將任務分解后處理各個任務的VCPU的優(yōu)先級標定如下:
[0044] 首先,用戶點擊圖標的鼠標移動和點擊操作事件與中斷的處理,對應于前臺VCPU 子優(yōu)先級1;其次,Word應用程序界面的調(diào)用和響應,對應于前臺VCPU子優(yōu)先級2;再次,從文 件系統(tǒng)(磁盤)中載入word文檔數(shù)據(jù),對應于前臺VCPU子優(yōu)先級3;最后,對從磁盤中載入的 word文檔數(shù)據(jù)進行相應的處理并在Word應用程序界面中顯示,對應于前臺VCPU子優(yōu)先級4。
[0045] 客戶機優(yōu)先級代理要實時掌握虛擬機中的前臺任務W及相應的前臺VCPiK處理前 臺任務的VCPU可能有多個),并進一步地根據(jù)前臺VCPU所處理的任務類型,將其劃分到各個 子優(yōu)先級,最后將運些優(yōu)先級實時地反饋給VMM, W作為調(diào)度的依據(jù)。
[0046] 二、基于虛擬機VCPU動態(tài)優(yōu)先級的調(diào)度策略
[0047] 1.搶占原則
[004引虛擬機VCPU調(diào)度W動態(tài)優(yōu)先級為依據(jù),調(diào)度原則是優(yōu)先調(diào)度前臺VCPU,并且按照 前臺VCPU的子優(yōu)先級高低,優(yōu)先調(diào)度子優(yōu)先級高的VCPU。在前臺VCPU與后臺VCPU之前采用 搶占策略,即,前臺VCPU可W搶占后臺VCPU運行。在子優(yōu)先級之間則采用非搶占策略,即,子 優(yōu)先級高的VCPU也需要等待當前正在運行的子優(yōu)先級低的VCPU運行完成后才能被調(diào)度執(zhí) 行。
[0049] 2.多處理器間的VCPU調(diào)度均衡原則
[0050] 目前主流的宿主物理機均采用多處理器架構,因此,虛擬VCPU的調(diào)度重點考慮在 多處理器架構的物理機上的調(diào)度,調(diào)度的目標則是在物理CPU之間達到前臺VCPU的均衡性。 為此,在VMM中設置專用的前臺VCPU遷移調(diào)度線程,在物理CPU之間遷移和調(diào)度前臺VCPU,W 實現(xiàn)動態(tài)的平衡。圖1與圖2分別示出了在前臺VCPU遷移調(diào)度之前與之后的情況示意,可W 看出,遷移調(diào)度后,各物理CPU上運行的前臺VCPU數(shù)目均衡。
[0051 ] 3. W虛擬機為粒度的公平性原則
[0052] 通過前臺VCPU優(yōu)先的調(diào)度策略,可W提高虛擬桌面系統(tǒng)的用戶操作響應速度。然 而,運一策略也有可能會被惡意的用戶所利用,進而通過惡意搶占宿主物理機CPU資源而制 造拒絕服務攻擊,導致其它虛擬機無法或者只能獲得較少的運行機會。例如,惡意用戶通過 在虛擬桌面的終端屏幕上開啟多個前臺任務窗口而使得所在虛擬機的VCPU盡可能地都成 為前臺VCPU,而盡可能多地獲得物理CPU的調(diào)度機會,從而影響其它虛擬機的運行。為了避 免運種情況的發(fā)生,在一個實施例中,VCPU調(diào)度策略將從虛擬機的角度進行物理CPU資源分 配的總量控制,在虛擬機的層面上維持公平性,即兩個擁有相同數(shù)量和配置的VCPU的虛擬 機,在同一個調(diào)度周期內(nèi)各個VCPU運行時間的總和應該是大致相同的。
[0053] 圖3示出了同一個調(diào)度周期內(nèi)兩個虛擬機中VCPU運行時間的總和對比。由圖3可 見,從宏觀上看,前臺VCPU搶占和擠占的是所在的同一個虛擬機的其它后臺VCPU的運行機 會和運行時間,從而在不同的虛擬機之間進行了較好的隔離,不會因為一臺虛擬機前臺 VCPU的運行而導致其它虛擬機的運行性能受到影響。
[0054] 最后應說明的是,W上實施例僅用W描述本發(fā)明的技術方案而不是對本技術方法 進行限制,本發(fā)明在應用上可W延伸為其它的修改、變化、應用和實施例,并且因此認為所 有運樣的修改、變化、應用、實施例都在本發(fā)明的精神和教導范圍內(nèi)。
【主權項】
1. 一種面向虛擬桌面的VCRJ調(diào)度方法,包括下列步驟: 1) 在每個調(diào)度周期,根據(jù)各個VCPU當前所處理任務的類型,將VCPU分為前臺VCPU和后 臺VCPU,前臺VCPU的調(diào)度優(yōu)先級高于后臺VCPU; 2) 基于搶占原則對VCPU進行調(diào)度,所述搶占原則包括:前臺VCPU搶占正在運行的后臺 VCPU的物理資源,前臺VCPU之間不進行物理資源搶占。2. 根據(jù)權利要求1所述的面向虛擬桌面的VCPU調(diào)度方法,其特征在于,所述步驟1)還包 括:如果一個任務的所屬應用的窗口界面顯示在當前屏幕上,則該任務的類型為前臺任務, 否則該任務的類型為后臺任務。3. 根據(jù)權利要求1所述的面向虛擬桌面的VCPU調(diào)度方法,其特征在于,所述步驟1)還包 括:根據(jù)系統(tǒng)中各類中斷與VCPU的映射綁定關系對前臺VCPU劃分子優(yōu)先級。4. 根據(jù)權利要求3所述的面向虛擬桌面的VCPU調(diào)度方法,其特征在于,所述步驟1)包括 下列子步驟: 11) 搜集各個VCPU當前所處理任務的類型,以及系統(tǒng)中各類中斷與VCPU的映射綁定關 系; 12) 將VCRJ分為前臺VCRJ和后臺VCRJ; 13) 對前臺VCRJ劃分子優(yōu)先級。5. 根據(jù)權利要求4所述的面向虛擬桌面的VCPU調(diào)度方法,其特征在于,所述步驟11)中, 所述的搜集各個VCPU當前所處理任務的類型以及系統(tǒng)中各類中斷與VCPU的映射綁定關系, 由在客戶機操作系統(tǒng)中運行的一個內(nèi)核級代理執(zhí)行。6. 根據(jù)權利要求4所述的面向虛擬桌面的VCPU調(diào)度方法,其特征在于,所述步驟13)中, 根據(jù)前臺VCPU的當前前臺任務類型分配子優(yōu)先級,前臺任務類型包括:用戶輸入事件處理 任務、面向用戶的輸出任務、硬件設備中斷及事件處理任務以及由用戶輸入引起的并需要 在輸出中反饋給用戶處理結果的任務,這些前臺任務類型按照子優(yōu)先級由高至低的順序排 序。7. 根據(jù)權利要求4所述的面向虛擬桌面的VCPU調(diào)度方法,其特征在于,所述步驟2)還包 括:前臺VCPU之間按照各自的子優(yōu)先級分配空閑的物理資源。8. 根據(jù)權利要求4所述的面向虛擬桌面的VCPU調(diào)度方法,其特征在于,所述步驟2)還包 括:當同一個客戶機操作系統(tǒng)上同時有兩個及以上的前臺任務時,當同一臺宿主物理機上 運行多臺虛擬機的多個前臺任務時,或者多個不同虛擬機的前臺任務的VCPU由物理機上同 一個物理CPU執(zhí)行時,前臺VCPU之間按照各自的子優(yōu)先級分配空閑的物理資源。9. 根據(jù)權利要求1所述的面向虛擬桌面的VCPU調(diào)度方法,其特征在于,所述步驟2)還包 括:在虛擬機監(jiān)視器中設置專用的前臺VCPU迀移調(diào)度線程,在物理CPU之間迀移和調(diào)度前臺 VCPU,使得各物理CPU所運行的前臺VCPU數(shù)目基本一致,實現(xiàn)動態(tài)的平衡。10. 根據(jù)權利要求1~9中任意一項所述的面向虛擬桌面的VCPU調(diào)度方法,其特征在于, 所述步驟2)還包括:在虛擬機的層面上,通過調(diào)度使得任意兩個擁有相同數(shù)量和配置的 VCPU的虛擬機,在同一個調(diào)度周期內(nèi)各個VCPU運行時間的總和大致相同。
【文檔編號】G06F9/50GK106020980SQ201610333466
【公開日】2016年10月12日
【申請日】2016年5月19日
【發(fā)明人】唐宏偉, 王暉, 史驍, 趙曉芳
【申請人】中國科學院計算技術研究所