專利名稱:基于用戶空閑進(jìn)程的提高虛擬機(jī)性能與可伸縮性的方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì) 算機(jī)操作系統(tǒng)和虛擬化技術(shù)領(lǐng)域,具體為一種提高客戶虛擬機(jī)在 多核環(huán)境下性能以及可伸縮性的方法。
背景技術(shù):
多核技術(shù)的出現(xiàn)給操作系統(tǒng)的開(kāi)發(fā)帶來(lái)了新的機(jī)遇和挑戰(zhàn)。隨著處理器處理核 心數(shù)目的增多,操作系統(tǒng)的整體性能能否隨著硬件計(jì)算能力的增強(qiáng)而增強(qiáng)成為當(dāng)今計(jì)算 機(jī)操作系統(tǒng)發(fā)展的一個(gè)重要問(wèn)題,即操作系統(tǒng)的可伸縮性問(wèn)題?,F(xiàn)有操作系統(tǒng)普遍存在 著在多核環(huán)境下可伸縮性差的現(xiàn)象,即當(dāng)物理處理核心數(shù)目增加到一定數(shù)目時(shí),操作系 統(tǒng)的整體性能的提升開(kāi)始放緩,甚至產(chǎn)生下降的現(xiàn)象。現(xiàn)在,雙核和四核處理器已經(jīng)被 普遍應(yīng)用在服務(wù)器,桌面乃至嵌入式平臺(tái)。而在可預(yù)見(jiàn)的將來(lái),我們將看到上百個(gè)處理 器核(CPUcore)被封裝在一個(gè)芯片上。因而隨著多核技術(shù)的發(fā)展,操作系統(tǒng)在多核環(huán) 境下的可伸縮性會(huì)變得越來(lái)越重要。系統(tǒng)虛擬化是一種將一臺(tái)物理計(jì)算機(jī)系統(tǒng)虛擬化為一臺(tái)或多臺(tái)虛擬計(jì)算機(jī)系統(tǒng) (簡(jiǎn)稱虛擬機(jī),Virtual Machine)的技術(shù)。作為一種現(xiàn)代操作系統(tǒng)技術(shù),虛擬化技術(shù)
近年來(lái)已經(jīng)在產(chǎn)業(yè)界被廣泛運(yùn)用,例如服務(wù)器整合(server consolidation)、多租戶云 (multi-tenant cloud) >專署虛擬化設(shè)備(virtual appliances)等等。而在系統(tǒng)虛擬環(huán)境
下,由于系統(tǒng)增加了虛擬化層,客戶虛擬機(jī)的性能及可伸縮性會(huì)受到嚴(yán)重的影響。具體 表現(xiàn)為在虛擬環(huán)境下客戶虛擬機(jī)操作系統(tǒng)的性能及可伸縮性相對(duì)于運(yùn)行在物理機(jī)器上 的操作系統(tǒng)會(huì)產(chǎn)生非常嚴(yán)重的下降。本發(fā)明主要用于解決多核環(huán)境下由于虛擬化層導(dǎo)致的客戶虛擬機(jī)的性能及可伸 縮性嚴(yán)重的下降問(wèn)題。造成客戶虛擬機(jī)性能及可伸縮性嚴(yán)重下降的主要原因是操作系統(tǒng) 的空閑線程(idle thread)和虛擬機(jī)監(jiān)控器的空閑虛擬機(jī)(idle Virtual Machine)的協(xié)作問(wèn)
題。(空閑線程主要用于當(dāng)操作系統(tǒng)在某個(gè)處理器核心上進(jìn)入空閑狀態(tài)時(shí),占用處理器 核心并使之進(jìn)入休眠狀態(tài)??臻e虛擬機(jī)在虛擬機(jī)監(jiān)控器中的角色類同于空閑線程在操作 系統(tǒng)中的角色。)造成該協(xié)作問(wèn)題的主要原因是客戶虛擬機(jī)的空閑線程無(wú)法直接使用處 理器核心休眠指令(該指令的作用在于使處理器核心進(jìn)入休眠狀態(tài)以節(jié)約能耗),而必 須切換至虛擬機(jī)監(jiān)控器并調(diào)度到空閑虛擬機(jī)由空閑虛擬機(jī)來(lái)執(zhí)行處理器核心休眠指令。 此外喚醒一個(gè)空閑虛擬機(jī)也需要切換至虛擬機(jī)監(jiān)控器。當(dāng)客戶虛擬機(jī)在執(zhí)行多線程任務(wù)時(shí),虛擬機(jī)操作系統(tǒng)內(nèi)部往往會(huì)產(chǎn)生對(duì)資源的 競(jìng)爭(zhēng),一些虛擬處理器核心上的線程不得不進(jìn)入空閑以等待其他虛擬處理器核心上的線 程釋放其所需的資源。這會(huì)導(dǎo)致某些處理器核心進(jìn)入空閑狀態(tài),并誘發(fā)操作系統(tǒng)的空閑 線程和虛擬機(jī)監(jiān)控器的空閑虛擬機(jī)的協(xié)作問(wèn)題。額外的客戶虛擬機(jī)和虛擬機(jī)監(jiān)控器的切 換會(huì)增加等待線程的等待時(shí)間從而導(dǎo)致執(zhí)行在客戶虛擬機(jī)上的多線程任務(wù)的執(zhí)行時(shí)間變 長(zhǎng),使得客戶虛擬機(jī)的整體性能及可伸縮性下降。
發(fā)明內(nèi)容
本發(fā)明的目的在 于提出一種適用于客戶虛擬機(jī)的輕量級(jí)用戶態(tài)空閑后臺(tái)進(jìn)程的 設(shè)計(jì)與使用方式,以提高多核環(huán)境下客戶虛擬機(jī)的性能和伸縮性。本發(fā)明通過(guò)使用適用于客戶虛擬機(jī)的輕量級(jí)用戶態(tài)空閑后臺(tái)進(jìn)程,來(lái)解決操作 系統(tǒng)的空閑線程和虛擬機(jī)監(jiān)控器的空閑虛擬機(jī)的協(xié)作問(wèn)題。圖1描述了在虛擬處理器核 心處于空閑狀態(tài)時(shí),客戶虛擬機(jī)的執(zhí)行行為,即空閑線程和虛擬機(jī)監(jiān)控器的空閑虛擬機(jī) 的協(xié)作的過(guò)程。虛線部分表示了在該協(xié)作過(guò)程中增加的客戶虛擬機(jī)和虛擬機(jī)監(jiān)控器的切 換所導(dǎo)致的額外的處理器資源的開(kāi)銷。通過(guò)該發(fā)明,虛線部分的開(kāi)銷將被完全消除。該發(fā)明的主要原理為使用一個(gè)輕量級(jí)用戶態(tài)空閑后臺(tái)進(jìn)程,在虛擬處理器核 心上沒(méi)有負(fù)載時(shí),占用虛擬處理器核心以避免客戶虛擬機(jī)切換至虛擬機(jī)監(jiān)控器,從而避 免由于額外的客戶虛擬機(jī)和虛擬機(jī)監(jiān)控器的切換而帶來(lái)的開(kāi)銷。本發(fā)明方法的具體實(shí)現(xiàn)過(guò)程為
1)在客戶虛擬機(jī)中執(zhí)行一個(gè)低優(yōu)先級(jí)的用戶態(tài)空閑后臺(tái)進(jìn)程,該進(jìn)程會(huì)在每個(gè)虛擬 處理器核心上部署一個(gè)空閑后臺(tái)子線程。2)空閑后臺(tái)子線程在虛擬處理器核心上有負(fù)載時(shí)不會(huì)得到執(zhí)行。這樣實(shí)現(xiàn)使 得在虛擬處理器核心上有用戶線程負(fù)載時(shí),空閑后臺(tái)子線程不會(huì)對(duì)用戶線程造成任何影 響。3)在虛擬處理器核心上沒(méi)有負(fù)載時(shí),空閑后臺(tái)子線程執(zhí)行占用虛擬處理器核 心。這樣實(shí)現(xiàn)使得在虛擬處理器核心上沒(méi)有負(fù)載時(shí),不會(huì)調(diào)度到空閑線程,因此不會(huì)切 換至虛擬機(jī)監(jiān)控器,從而避免了由于額外的客戶虛擬機(jī)和虛擬機(jī)監(jiān)控器的切換而帶來(lái)的 開(kāi)銷。圖2描述了使用了空閑進(jìn)程后,虛擬處理器核心處于空閑狀態(tài)時(shí),客戶虛擬機(jī) 的執(zhí)行行為
1)當(dāng)客戶虛擬機(jī)中的一個(gè)處理器核心處于空閑狀態(tài)時(shí),該處理器核心直接從用戶線 程切換到后臺(tái)空閑線程;
2)當(dāng)客戶虛擬機(jī)的處理器核心有用戶線程需要執(zhí)行時(shí),該處理器核直接從后臺(tái)空閑 線程切換回用戶線程。因此,由額外的客戶虛擬機(jī)和虛擬機(jī)監(jiān)控器的切換所導(dǎo)致的處理器資源的開(kāi)銷 已被完全消除。此外,本發(fā)明的實(shí)現(xiàn)還具有一定的靈活性。當(dāng)用戶態(tài)負(fù)載不會(huì)造成客戶虛擬 機(jī)操作系統(tǒng)內(nèi)部對(duì)資源的競(jìng)爭(zhēng)時(shí),可以不啟用該空閑后臺(tái)進(jìn)程,從而完全避免該進(jìn)程可 能導(dǎo)致的額外的資源開(kāi)銷。當(dāng)用戶態(tài)負(fù)載會(huì)造成客戶虛擬機(jī)操作系統(tǒng)內(nèi)部對(duì)資源的競(jìng)爭(zhēng) 時(shí),啟用該空閑后臺(tái)進(jìn)程,從而避免發(fā)生客戶虛擬機(jī)的虛擬處理器核心在空閑時(shí)切換至 虛擬機(jī)監(jiān)控器并執(zhí)行空閑虛擬機(jī)的事件,以消除由于額外的客戶虛擬機(jī)和虛擬機(jī)監(jiān)控器 的切換而帶來(lái)的開(kāi)銷。本書(shū)面說(shuō)明可使該技術(shù)領(lǐng)域具有普通技能的人能夠使用含有與權(quán)利要求所列要 素近似的可替代要素的實(shí)施方案。因此,這項(xiàng)發(fā)明的范圍包括與權(quán)利要求的字面意思 完全相同的方法,還包括其他與權(quán)利要求的字面意思沒(méi)有實(shí)質(zhì)性區(qū)別的方法。雖然在這 里只描述和說(shuō)明了部分特征和實(shí)施方案,但相關(guān)技術(shù)的基本方法可以進(jìn)行許多修改和變化。所附權(quán)利要求將涵蓋所有這些修改和變化。
圖1為虛擬處理器核心處于空閑狀態(tài)時(shí),客戶虛擬機(jī)的執(zhí)行示意圖。圖2為使用空閑進(jìn)程后,虛擬處理器核心處于空閑狀態(tài)時(shí),客戶虛擬機(jī)的執(zhí)行
示意圖。圖3描述了在虛擬環(huán)境下,多個(gè)線程競(jìng)爭(zhēng)同一個(gè)旗語(yǔ)(semaphore)的過(guò)程以及 由此導(dǎo)致操作系統(tǒng)的空閑線程和虛擬機(jī)監(jiān)控器的空閑虛擬機(jī)的協(xié)作問(wèn)題的過(guò)程。圖4描述了在多核虛擬機(jī)上部署輕量級(jí)用戶態(tài)空閑后臺(tái)進(jìn)程的方法。圖5描述了使用了用戶態(tài)空閑后臺(tái)進(jìn)程后,虛擬環(huán)境下多個(gè)線程競(jìng)爭(zhēng)同一個(gè)旗 語(yǔ)的過(guò)程。
具體實(shí)施例方式
下面結(jié)合實(shí)施例對(duì)本發(fā)明進(jìn)行進(jìn)一步說(shuō)明。圖3描述了在虛擬環(huán)境下,多個(gè)線程競(jìng)爭(zhēng)同一個(gè)旗語(yǔ)(semaphore)的過(guò)程以及 由此導(dǎo)致操作系統(tǒng)的空閑線程和虛擬機(jī)監(jiān)控器的空閑虛擬機(jī)的協(xié)作問(wèn)題的過(guò)程。在操作 系統(tǒng)中,當(dāng)一個(gè)線程無(wú)法獲得其所需要的旗語(yǔ)時(shí)(步驟1,2),它會(huì)被從當(dāng)前處理器核 心的可執(zhí)行隊(duì)列中調(diào)度走,并加入到該旗語(yǔ)的等待隊(duì)列(步驟3)。如果當(dāng)時(shí)該處理器核 心的可執(zhí)行隊(duì)列為空,空閑進(jìn)程就會(huì)占據(jù)該處理器核心,并切換至虛擬機(jī)監(jiān)控器并調(diào)度 到空閑虛擬機(jī)(步驟4)。當(dāng)旗語(yǔ)的擁有者釋放該旗語(yǔ)時(shí),旗語(yǔ)隊(duì)列中的第一個(gè)等待線程 會(huì)被喚醒并得到執(zhí)行(步驟5,6,7,8)。由于虛擬機(jī)監(jiān)控器的緣故,該喚醒過(guò)程不得 不執(zhí)行額外的步驟6和7,從而浪費(fèi)額外的時(shí)間。與此同時(shí),在旗語(yǔ)等待隊(duì)列中的其它等 待線程的等待時(shí)間也會(huì)因?yàn)轭~外的步驟而延長(zhǎng),從而導(dǎo)致整個(gè)系統(tǒng)的性能以及可伸縮性 下降。本發(fā)明通過(guò)使用適用于客戶虛擬機(jī)的輕量級(jí)用戶態(tài)空閑后臺(tái)進(jìn)程,來(lái)解決上述 問(wèn)題。圖4描述了在多核虛擬機(jī)上部署輕量級(jí)用戶態(tài)空閑后臺(tái)進(jìn)程的方法在客戶虛擬機(jī) 中執(zhí)行一個(gè)低優(yōu)先級(jí)的用戶態(tài)空閑后臺(tái)進(jìn)程,該進(jìn)程會(huì)在每個(gè)虛擬處理器核心上部署一 個(gè)空閑后臺(tái)子線程。在引入了輕量級(jí)用戶態(tài)空閑后臺(tái)進(jìn)程后,由多個(gè)線程競(jìng)爭(zhēng)同一個(gè)旗語(yǔ)而導(dǎo)致的 操作系統(tǒng)的空閑線程和虛擬機(jī)監(jiān)控器的空閑虛擬機(jī)的協(xié)作問(wèn)題會(huì)得以解決。圖5描述了 使用了用戶態(tài)空閑后臺(tái)進(jìn)程后,虛擬環(huán)境下多個(gè)線程競(jìng)爭(zhēng)同一個(gè)旗語(yǔ)的過(guò)程。由于用戶 態(tài)空閑后臺(tái)進(jìn)程的存在,當(dāng)虛擬處理器核心進(jìn)入空閑狀態(tài)時(shí),用戶態(tài)空閑后臺(tái)進(jìn)程會(huì)占 用 虛擬處理器核心,從而減少了圖3中額外的執(zhí)行步驟6和7。因而被喚醒的旗語(yǔ)等待線 程不再會(huì)浪費(fèi)時(shí)間在虛擬機(jī)監(jiān)控器中。與此同時(shí),旗語(yǔ)等待隊(duì)列中的其它等待線程也不 會(huì)增加額外的等待時(shí)間。系統(tǒng)的整體性能和可伸縮性得到了提高。
權(quán)利要求
1.一種基于用戶空閑進(jìn)程的提高虛擬機(jī)性能與可伸縮性的方法,其特征在于在客 戶虛擬機(jī)中每個(gè)虛擬處理器核心運(yùn)行一個(gè)輕量級(jí)用戶態(tài)空閑后臺(tái)線程,以避免客戶虛擬 機(jī)在空閑時(shí)切換至虛擬機(jī)監(jiān)控器的空閑虛擬機(jī)執(zhí)行。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于具體實(shí)現(xiàn)過(guò)程為在客戶虛擬機(jī)中執(zhí)行一個(gè)低優(yōu)先級(jí)的用戶態(tài)空閑后臺(tái)進(jìn)程,該進(jìn)程在每個(gè)虛擬處理 器核心上部署一個(gè)空閑后臺(tái)子線程;在虛擬處理器核心上有負(fù)載時(shí),所述空閑后臺(tái)子線程不運(yùn)行;在虛擬處理器核心上沒(méi)有負(fù)載時(shí),所述空閑后臺(tái)子線程執(zhí)行占用虛擬處理器核心。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于在虛擬處理器核心有負(fù)載時(shí),空閑后 臺(tái)進(jìn)程不對(duì)負(fù)載造成影響。
4.根據(jù)權(quán)利要求1或2所述的方法,其特征在于當(dāng)虛擬處理器核心在空閑時(shí),空閑 后臺(tái)子線程執(zhí)行占用虛擬處理器核心,以避免發(fā)生客戶虛擬機(jī)切換至虛擬機(jī)監(jiān)控器并執(zhí) 行空閑虛擬機(jī)的事件,以減少由于過(guò)多的客戶虛擬機(jī)和虛擬機(jī)監(jiān)控器的切換而帶來(lái)的開(kāi) 銷。
5.根據(jù)權(quán)利要求1或2所述的方法,其特征在于使用空閑進(jìn)程后,虛擬處理器核心處 于空閑狀態(tài)時(shí),客戶虛擬機(jī)的執(zhí)行行為1)當(dāng)客戶虛擬機(jī)中的一個(gè)處理器核心處于空閑狀態(tài)時(shí),該處理器核心直接從用戶線 程切換到后臺(tái)空閑線程;2)當(dāng)客戶虛擬機(jī)的處理器核心有用戶線程需要執(zhí)行時(shí),該處理器核直接從后臺(tái)空閑 線程切換回用戶線程。
全文摘要
本發(fā)明屬于計(jì)算機(jī)操作系統(tǒng)和虛擬化技術(shù)領(lǐng)域,具體為一種利用用戶態(tài)空閑后臺(tái)線程來(lái)提高多核環(huán)境下客戶虛擬機(jī)的性能以及可伸縮性的方法。本發(fā)明用于解決多核環(huán)境下由于操作系統(tǒng)的空閑線程和虛擬機(jī)監(jiān)控器的空閑虛擬機(jī)的協(xié)作問(wèn)題所造成的客戶虛擬機(jī)性能和可伸縮性下降的問(wèn)題。具體方法為在客戶虛擬機(jī)的每個(gè)虛擬處理器核心運(yùn)行一個(gè)低優(yōu)先級(jí)的空閑線程,以避免客戶虛擬機(jī)的虛擬處理器核心在空閑時(shí)切換至虛擬機(jī)監(jiān)控器并執(zhí)行空閑虛擬機(jī),從而消除了由于額外的客戶虛擬機(jī)和虛擬機(jī)監(jiān)控器的切換而帶來(lái)的開(kāi)銷。本發(fā)明實(shí)現(xiàn)了適用于客戶虛擬機(jī)的輕量級(jí)用戶態(tài)空閑后臺(tái)進(jìn)程,大大提高了多核環(huán)境下客戶虛擬機(jī)的性能和伸縮性。
文檔編號(hào)G06F9/46GK102012834SQ20101059515
公開(kāi)日2011年4月13日 申請(qǐng)日期2010年12月20日 優(yōu)先權(quán)日2010年12月20日
發(fā)明者宋翔, 臧斌宇, 陳海波 申請(qǐng)人:復(fù)旦大學(xué)