專利名稱:虛擬機與外部機器通信時使用的方法、設(shè)備及虛擬機系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的實施方式涉及虛擬機領(lǐng)域,具體地,本發(fā)明的實施方式涉及一種用于在虛擬機與外部機器進行通信時使用的方法、設(shè)備和虛擬機系統(tǒng)。
背景技術(shù):
虛擬機指通過軟件模擬的具有完整硬件系統(tǒng)功能的、運行在一個完全隔離環(huán)境中的完整計算機系統(tǒng)。通過虛擬機軟件,可以在一臺物理計算機(下文簡稱為物理機)上模擬出一臺或多臺虛擬機。這些虛擬機完全像真正的計算機那樣進行工作。例如,用戶可以安裝操作系統(tǒng)、安裝應(yīng)用、訪問網(wǎng)絡(luò)資源,利用其上安裝的即時聊天軟件進行交談等等。對于用戶而言,虛擬機只是運行在物理機上的一個應(yīng)用,但是對于在虛擬機中運行的應(yīng)用而言,它就是一臺真正的計算機。如上所述,用戶可以利用運行在虛擬機中的應(yīng)用(例如,web瀏覽器、即時通信軟件等)與網(wǎng)絡(luò)中的其他物理機或虛擬機進行網(wǎng)絡(luò)通信。需要注意的是,在常見的虛擬化實現(xiàn)(例如基于Xen的虛擬化系統(tǒng))中進行網(wǎng)絡(luò)通信時,多個虛擬機中僅有一個特定虛擬機(例如,DomO)可以與物理機底層硬件平臺中的網(wǎng)卡進行直接交互。由此,虛擬機為了利用網(wǎng)卡進行網(wǎng)絡(luò)通信,就必須首先將其待向網(wǎng)絡(luò)上的外部機器(可以是物理機,也可以是虛擬機)發(fā)送的數(shù)據(jù)分組發(fā)送至特定虛擬機。數(shù)據(jù)分組繼而從該特定虛擬機處向外部機器發(fā)送。
發(fā)明內(nèi)容
本發(fā)明人發(fā)現(xiàn),已知的虛擬機系統(tǒng)在進行網(wǎng)絡(luò)通信(即,與外部機器進行通信)時,通常針對每個虛擬機、維持其與特定虛擬機共享的單獨共享頁面。于是,在虛擬機系統(tǒng)包括多個虛擬機的情況下,在特定虛擬機與各個虛擬機之間將會存在多個單獨的共享頁面。各個虛擬機將其待向外部機器發(fā)送的數(shù)據(jù)分組寫入相應(yīng)的共享頁面。繼而,該共享頁面與特定虛擬機的空白內(nèi)存頁面之間的頁面交換被調(diào)度。由此,虛擬機待向外部機器發(fā)送的數(shù)據(jù)分組首先被發(fā)送至能夠與外部機器通信的特定虛擬機,繼而實現(xiàn)網(wǎng)絡(luò)通信。然而,這種機制對于收發(fā)的數(shù)據(jù)分組包括的數(shù)據(jù)分組較小、內(nèi)容重復(fù)性大且發(fā)送頻率較高這樣的應(yīng)用(例如,即時通信軟件)而言卻存在極大的系統(tǒng)資源浪費。例如,需要針對這樣的數(shù)據(jù)分組頻繁地調(diào)用頁面交換。另外,已知的網(wǎng)絡(luò)通信需要將數(shù)據(jù)分組按照特定的網(wǎng)絡(luò)通信協(xié)議(例如,以太網(wǎng)協(xié)議等)進行封裝和解封裝。為此,已知的虛擬機系統(tǒng)會將待向外部機器發(fā)送和從其接收的數(shù)據(jù)分組拷貝至虛擬機的操作系統(tǒng)內(nèi)存空間,以便經(jīng)由各種網(wǎng)絡(luò)協(xié)議棧對數(shù)據(jù)分組進行封裝和解封裝。本發(fā)明人發(fā)現(xiàn),對于上述數(shù)據(jù)分組而言,這同樣會浪費系統(tǒng)資源,因為需要頻繁地進行數(shù)據(jù)分組在不同內(nèi)存空間的拷貝。此外,由于在共享頁面中存儲的是經(jīng)過封裝的完整數(shù)據(jù)分組,而這些數(shù)據(jù)分組例如去往同一外部機器的可能性很大(例如,與某個人聊天),所以共享頁面中存儲的已封裝數(shù)據(jù)分組所包括的重復(fù)數(shù)據(jù)報頭會極大地浪費共享頁面空間。為此,本發(fā)明示例性實施方式的目的在于提供一種用于在虛擬機與外部機器進行通信時使用的方法、設(shè)備和虛擬機系統(tǒng)。具體地,根據(jù)本發(fā)明第一方面的用于在虛擬機與外部機器進行通信時使用的方法例如可以包括:提供在多個所述虛擬機與特定虛擬機之間共享的單個共享頁面,其中特定虛擬機與多個所述虛擬機運行在同一物理機上;向單個共享頁面寫入所述虛擬機待向外部機器發(fā)送的數(shù)據(jù)分組;調(diào)度單個共享頁面與特定虛擬機的空白內(nèi)存頁面之間的頁面交換;以及將頁面交換后的特定虛擬機的內(nèi)存頁面中的數(shù)據(jù)分組向外部機器發(fā)送。根據(jù)本發(fā)明第二方面的一種用于在虛擬機與外部機器進行通信時使用的設(shè)備例如可以包括:提供裝置,配置用于提供在多個所述與特定虛擬機之間共享的單個共享頁面,其中特定虛擬機與多個所述虛擬機運行在同一物理機上;寫入裝置,配置用于向單個共享頁面寫入所述虛擬機待向外部機器發(fā)送的數(shù)據(jù)分組;調(diào)度裝置,配置用于調(diào)度單個共享頁面與特定虛擬機的空白內(nèi)存頁面之間的頁面交換;以及發(fā)送裝置,配置用于將頁面交換后的特定虛擬機的內(nèi)存頁面中的數(shù)據(jù)分組向外部機器發(fā)送。根據(jù)本發(fā)明第三方面的一種虛擬機系統(tǒng)例如可以包括:虛擬機管理器,其具有用于在虛擬機系統(tǒng)包括的多個虛擬機與特定虛擬機之間進行共享的單個共享頁面,其中特定虛擬機與所述多個虛擬機運行在同一物理機上;所述多個虛擬機,配置用于向單個共享頁面寫入待向外部機器發(fā)送的數(shù)據(jù)分組;其中虛擬機管理器進一步包括通信調(diào)度器,其配置用于調(diào)度單個共享頁面與特定虛擬機的空白內(nèi)存頁面之間的頁面交換,以使得頁面交換后的特定虛擬機的內(nèi)存頁面中的數(shù)據(jù)分組向外部機器發(fā)送。根據(jù)本發(fā)明的技術(shù)方案,通過提供在多個虛擬機與特定虛擬機之間共享的單個共享頁面,將虛擬機待向外部機器發(fā)送的數(shù)據(jù)分組寫入該單個共享頁面,以及調(diào)度該單個共享頁面與特定虛擬機的空白內(nèi)存頁面之間的頁面交換,可以減少頁面交換的次數(shù)和頻率,由此節(jié)省系統(tǒng)資源。進一步地,根據(jù)本發(fā)明的技術(shù)方案,通過向單個共享頁面寫入虛擬機待向外部機器發(fā)送的數(shù)據(jù)分組之前、在該虛擬機的用戶內(nèi)存空間內(nèi)按照特定協(xié)議封裝該數(shù)據(jù)分組,以及直接通過方法調(diào)用的方式將封裝后的數(shù)據(jù)寫入單個共享頁面,而不是像現(xiàn)有技術(shù)那樣使數(shù)據(jù)分組通過網(wǎng)絡(luò)協(xié)議棧,由此減少了從用戶內(nèi)存空間向操作系統(tǒng)內(nèi)存空間拷貝數(shù)據(jù)分組的次數(shù),從而節(jié)省了系統(tǒng)資源。更進一步地,根據(jù)本發(fā)明的技術(shù)方案,通過在單個共享頁面中對待向外部機器發(fā)送的數(shù)據(jù)分組進行重組,可以節(jié)省共享頁面的存儲資源。
通過參考附圖閱讀下文的詳細描述,本發(fā)明示例性實施方式的上述以及其他目的、特征和優(yōu)點將變得易于理解。在附圖中,以示例性而非限制性的方式示出了本發(fā)明的若干實施方式,其中:圖1示意性地示出了根據(jù)本發(fā)明示例性實施方式的虛擬機系統(tǒng)的框圖。圖2示意性地示出了根據(jù)本發(fā)明示例性實施方式的用于在虛擬機與外部機器進行通信時使用的方法的流程圖。圖3示意性地進一步示出了根據(jù)本發(fā)明示例性實施方式的用于在虛擬機與外部機器進行通信時使用的方法的流程圖。圖4示意性地示出了根據(jù)本發(fā)明示例性實施方式的在單個共享頁面中對數(shù)據(jù)分組進行重組的示意圖。圖5示意性地示出了根據(jù)本發(fā)明示例性實施方式的頁面交換的周期的示意圖。圖6示意性地示出了根據(jù)本發(fā)明示例性實施方式的用于在虛擬機與外部機器進行通信時使用的設(shè)備的框圖。圖7示意性地示出了可以實現(xiàn)根據(jù)本發(fā)明實施方式的計算設(shè)備的結(jié)構(gòu)框圖。圖8A和圖SB示意性地示出了在實現(xiàn)根據(jù)本發(fā)明的實施方式之后的系統(tǒng)性能仿真圖。在附圖中,相同或?qū)?yīng)的標(biāo)號表不相同或?qū)?yīng)的部分。
具體實施例方式下面將參考若干示例性實施方式來描述本發(fā)明的原理和精神。應(yīng)當(dāng)理解,給出這些實施方式僅僅是為了使本領(lǐng)域技術(shù)人員能夠更好地理解進而實現(xiàn)本發(fā)明,而并非以任何方式限制本發(fā)明的范圍。在一個實施方式中,在多個虛擬機與特定虛擬機之間提供一個共享的單個共享頁面,用于向外部發(fā)送數(shù)據(jù)分組;這里,特定虛擬機與多個虛擬機運行在同一物理機上。繼而,調(diào)度單個共享頁面與特定虛擬機的空白內(nèi)存頁面之間的頁面交換,以及將頁面交換后的特定虛擬機的內(nèi)存頁面中的數(shù)據(jù)分組向外部機器發(fā)送。按上述方式,節(jié)省了系統(tǒng)資源,提高了效率。在本文中,需要理解的是,所涉及的“外部機器”可以涉及在網(wǎng)絡(luò)上與本物理機連接的其他物理機或其上運行的虛擬機;“單個共享頁面”涉及用于供虛擬機寫入待向外部機器發(fā)送的數(shù)據(jù)分組的一個內(nèi)存頁面;以及,如上所述,“特定虛擬機”涉及可以與物理機底層硬件平臺中的網(wǎng)卡進行直接交互的虛擬機,例如基于Xen的虛擬系統(tǒng)中的DomO即為本文中的“特定虛擬機”,當(dāng)然本發(fā)明不限于此。此外,附圖中的任何元素數(shù)量均用于示例而非限制,以及任何命名都僅用于區(qū)分,而不具有任何限制含義。下面參考圖1來描述根據(jù)本發(fā)明示例性實施方式的虛擬機系統(tǒng)10的框圖。其中,部件之間的實線連接代表數(shù)據(jù)流,點劃線連接代表事件流。如圖1所示,虛擬機系統(tǒng)10例如可以包括:虛擬機管理器101,其具有用于在虛擬機系統(tǒng)10包括的多個虛擬機(102-1至102-n,在下文可統(tǒng)稱為102)與特定虛擬機103之間進行共享的單個共享頁面1011,其中該特定虛擬機103與多個虛擬機102運行在同一物理機上(即,硬件平臺104);多個虛擬機102,配置用于向單個共享頁面1011寫入待向外部機器(未示出)發(fā)送的數(shù)據(jù)分組;其中虛擬機管理器101例如可以進一步包括通信調(diào)度器1012,其配置用于調(diào)度單個共享頁面1011與特定虛擬機103的空白內(nèi)存頁面(未示出)之間的頁面交換,以使得頁面交換后的特定虛擬機103的內(nèi)存頁面中的數(shù)據(jù)分組向外部機器發(fā)送(下文詳述)。根據(jù)本發(fā)明的某些實施方式,虛擬機系統(tǒng)10例如可以進一步包括封裝器1022,其例如可以位于各個虛擬機102中,也可以與其他部件獨立的部件,以及配置用于:在向單個共享頁面1011寫入多個虛擬機中的相應(yīng)虛擬機(例如,虛擬機102-n)待向外部機器發(fā)送的數(shù)據(jù)分組之前、在相應(yīng)虛擬機(例如,虛擬機102-n)的用戶內(nèi)存空間(如圖1所示、分隔用戶內(nèi)存空間和操作系統(tǒng)內(nèi)存空間的虛線的上面部分)內(nèi)、按照特定協(xié)議(例如,以太網(wǎng)協(xié)議)進行封裝。本領(lǐng)域技術(shù)人員還可以理解,封裝器1022還可以用于在接收到這樣進行了封裝的數(shù)據(jù)分組之后,對其進行解封裝。根據(jù)本發(fā)明的某些實施方式,對數(shù)據(jù)分組進行封裝例如包括向其添加各種報頭和關(guān)聯(lián)字段。各種報頭例如可以是應(yīng)用層報頭、傳輸層報頭、網(wǎng)絡(luò)層報頭和數(shù)據(jù)鏈路層報頭等。這些報頭可以是簡單的通用協(xié)議報頭,其可在實現(xiàn)本發(fā)明實施方式時由例如系統(tǒng)管理員等進行定義。根據(jù)本發(fā)明的某些實施方式,虛擬機管理器101例如可以可選地進一步包括方法調(diào)用裝置1013,其配置用于直接通過方法調(diào)用的方式將封裝后的數(shù)據(jù)分組寫入單個共享頁面 1011。例如,在基于Xen的虛擬機系統(tǒng)中,根據(jù)本發(fā)明實施方式的方法調(diào)用可以利用該基于Xen的虛擬機系統(tǒng)中的Hypercall (超級調(diào)用)函數(shù)來實現(xiàn)。如本領(lǐng)域技術(shù)人員所知,Hypercall對于系統(tǒng)調(diào)用就像虛擬機管理器之于操作系統(tǒng)。換言之,Hypercall對于虛擬機管理器就像系統(tǒng)調(diào)用之于內(nèi)核。Hypercall是從虛擬機到虛擬機管理器的軟件陷阱(software trap),就像系統(tǒng)調(diào)用是從應(yīng)用到內(nèi)核的軟件陷阱。虛擬機可以使用Hypercall來請求特權(quán)操作,諸如更新頁表。與系統(tǒng)調(diào)用類似,Hypercall是同步的,而從虛擬機管理器到虛擬機的返回路徑使用事件通道。事件通道是異步通知的隊列,并通知中斷本地硬件通知的相同類型事件通知。當(dāng)其隊列中具有待處理事件的虛擬機被調(diào)度時,操作系統(tǒng)的事件回調(diào)句柄被調(diào)用以便采取適當(dāng)動作。本領(lǐng)域技術(shù)人員可以理解,此處僅以基于Xen的虛擬機系統(tǒng)中的Hypercall為例描述了本發(fā)明的實施方式。但是,本發(fā)明在此方面不受限制,在各種虛擬機系統(tǒng)中,任何能夠?qū)崿F(xiàn)系統(tǒng)調(diào)用的已有或用戶定義的應(yīng)用編程接口(API)都可以用于實現(xiàn)本發(fā)明。根據(jù)本發(fā)明的某些實施方式,虛擬機管理器101例如可以可選地進一步包括內(nèi)容組織器1014,其配置用于在單個共享頁面1011中對待向外部機器發(fā)送的數(shù)據(jù)分組進行重組(下文詳述)。根據(jù)本發(fā)明的某些實施方式,內(nèi)容組織器1014例如可以進一步配置用于通過將來自同一虛擬機(例如,虛擬機102-n)的或來自運行在同一物理機上的不同虛擬機(例如,分別來自虛擬機102-1和102-n)的、具有相同目的地地址(例如,去往同一個外部機器)和協(xié)議層類型(例如,以太網(wǎng))的數(shù)據(jù)分組的有效載荷聚集在一個數(shù)據(jù)分組中來對所述數(shù)據(jù)分組進行重組。下面參考圖2并結(jié)合圖1來描述根據(jù)本發(fā)明示例性實施方式的用于在虛擬機(假設(shè),如圖1所示的虛擬機102-n)與外部機器進行通信時使用的方法200的流程圖。如圖2所示,方法200例如可以包括提供在多個虛擬機(例如,如圖1所示的虛擬機102)與特定虛擬機(例如,如圖1所示的虛擬機103)之間共享的單個共享頁面(例如,如圖1所示的單個共享頁面1011),其中特定虛擬機103與多個虛擬機102運行在同一物理機上(例如,如圖1所示的硬件平臺104)(步驟S201)。接著,方法200例如可以包括向單個共享頁面(例如,如圖1所示的單個共享頁面1011)寫入該虛擬機(如圖1所示的虛擬機102-n)待向外部機器發(fā)送的數(shù)據(jù)分組(步驟S203)。進一步地,方法200例如可以包括調(diào)度單個共享頁面(例如,如圖1所示的單個共享頁面1011)與特定虛擬機(例如,如圖1所示的虛擬機103)的空白內(nèi)存頁面之間的頁面交換(步驟S205)。最后,方法200例如可以包括將頁面交換后的特定虛擬機(例如,如圖1所示的虛擬機103)的內(nèi)存頁面中的數(shù)據(jù)分組向外部機器發(fā)送(步驟S207)。接下來,參考圖3并結(jié)合圖1和圖4來描述根據(jù)本發(fā)明的某些實施方式的方法200的附加優(yōu)選操作。需要注意的是,僅對與現(xiàn)有技術(shù)相同的操作進行簡略描述,這樣做是為了保證圖3的完整性同時為了避免混淆本發(fā)明。此外,為了以示區(qū)分,將在作為圖2所示的用于在虛擬機與外部機器進行通信時使用的方法的附加優(yōu)選操作的步驟之前冠以“根據(jù)本發(fā)明的某些實施方式”字樣。如圖3所示,在步驟S301中,發(fā)送方31的虛擬機(例如,如圖1所示的虛擬機102-n)的用戶利用應(yīng)用(例如,QQ等)發(fā)送數(shù)據(jù)分組。接下來,根據(jù)本發(fā)明的某些實施方式,在步驟S302中,在向單個共享頁面(例如,圖1所示的單個共享頁面1011)寫入虛擬機(例如,如圖1所示的虛擬機102-n)待向外部機器發(fā)送的數(shù)據(jù)分組之前,在虛擬機(例如,如圖1所示的虛擬機102-n)的用戶內(nèi)存空間內(nèi)、按照特定協(xié)議(例如,以太網(wǎng)協(xié)議)封裝數(shù)據(jù)分組。根據(jù)本發(fā)明的某些實施方式,此操作例如可以由圖1所示的封裝器1022實現(xiàn)。在這種情況下,可以理解,例如圖1所示的封裝器1022可以按照網(wǎng)絡(luò)通信使用的協(xié)議、對待經(jīng)網(wǎng)絡(luò)傳送的數(shù)據(jù)分組進行封裝,而無需為了使數(shù)據(jù)分組經(jīng)由網(wǎng)絡(luò)協(xié)議棧進行封裝而將其從用戶內(nèi)存空間向操作系統(tǒng)內(nèi)存空間拷貝。之所以能這樣做是因為:通過使用簡單的通用協(xié)議報頭(可在實現(xiàn)本發(fā)明實施方式時由例如系統(tǒng)管理員進行定義)對數(shù)據(jù)分組進行封裝,使得在連接至網(wǎng)絡(luò)的其他設(shè)備看來該封裝的數(shù)據(jù)分組是符合某個協(xié)議的數(shù)據(jù)分組,那么接收到該數(shù)據(jù)分組的外部機器便能夠?qū)ζ溥M行解封裝進而得到有效載荷,由此即可實現(xiàn)通信的目的。這樣做的好處在于省去了為使數(shù)據(jù)分組經(jīng)由網(wǎng)絡(luò)協(xié)議棧進行封裝而不得不向操作系統(tǒng)內(nèi)存空間拷貝數(shù)據(jù)分組的操作,由此節(jié)省了系統(tǒng)資源。 進一步地,根據(jù)本發(fā)明的某些實施方式,在步驟S303中,直接通過方法調(diào)用的方式(例如,如圖1所示的方法調(diào)用裝置1013執(zhí)行的操作相同)將封裝后的數(shù)據(jù)分組寫入單個共享頁面(例如,圖1所示的單個共享頁面1011)。本領(lǐng)域技術(shù)人員可以理解,步驟S303可以是圖2中所示寫入步驟S203的一種實施方式。進一步地,根據(jù)本發(fā)明的某些實施方式,在步驟S304中,在單個共享頁面(例如,圖1所示的單個共享頁面1011)中對待向所述外部機器發(fā)送的數(shù)據(jù)分組進行重組。具體地,可以通過將來自同一虛擬機的或來自運行在同一物理機上的不同虛擬機的、具有相同目的地地址和協(xié)議層類型的數(shù)據(jù)分組的有效載荷聚集在一個數(shù)據(jù)分組中。例如,假設(shè)如圖4所示、分別包含有效載荷401-1至401-n的各個數(shù)據(jù)分組來自同一虛擬機(例如,如圖1所示的虛擬機102-n),或者來自運行在同一物理機(例如,如圖1所示的硬件平臺104)上的不同虛擬機(例如,如圖1所示的虛擬機102-1至102-n),其具有相同目的地地址和協(xié)議層類型(例如,以太網(wǎng)協(xié)議)。上述各個數(shù)據(jù)分組的有效載荷401-401n例如可以作為經(jīng)聚集的有效載荷402被聚集在圖4所示的一個數(shù)據(jù)分組中。從圖4可以直觀地理解,通過僅保留多個相同數(shù)據(jù)報頭的一個實例,節(jié)省了單個共享頁面的存儲空間以及由此節(jié)省了特定虛擬機的內(nèi)存頁面的存儲空間,從而可以利用相同的存儲空間存儲更多的有效數(shù)據(jù)。返回圖3,進一步地,在如圖2所示的步驟S205(即,調(diào)度頁面交換,以下詳述)之后,在步驟S305中,特定虛擬機(例如,如圖1所示的特定虛擬機103)經(jīng)由以太網(wǎng)(僅作為示例,其他網(wǎng)絡(luò)也可以采用,本發(fā)明在此方面不受限制)將分組向接收方32發(fā)送。進一步地,在步驟S306處,接收方32的特定虛擬機接收到該數(shù)據(jù)分組,在對其解封裝后,將解封裝的數(shù)據(jù)分組發(fā)送到其既定的目的地虛擬機。接下來,根據(jù)本發(fā)明的某些實施方式,目的地虛擬機的虛擬驅(qū)動器通過原始套接字(raw socket)轉(zhuǎn)發(fā)該數(shù)據(jù)分組(例如,去往圖1所示的封裝器1022)(步驟S307和S308),以便對其進行解封裝(步驟S309),從而在步驟S310中,該對應(yīng)的應(yīng)用(例如,QQ等)得到經(jīng)解封裝的數(shù)據(jù)分組。本領(lǐng)域技術(shù)人員可以理解,如果從發(fā)送方31發(fā)送來的數(shù)據(jù)分組既未在用戶內(nèi)存空間內(nèi)進行封裝也未在單個共享頁面中進行重組,而是按照現(xiàn)有技術(shù)進行封裝后發(fā)送的,那么接收方32處的步驟S308相應(yīng)地?zé)o需執(zhí)行,而是與現(xiàn)有技術(shù)相同,數(shù)據(jù)分組經(jīng)由網(wǎng)絡(luò)協(xié)議棧被解封裝后發(fā)送至對應(yīng)的應(yīng)用。下面,進一步參考圖5來描述本發(fā)明的示例性頁面交換調(diào)度算法。在圖5中,標(biāo)號50例如代表當(dāng)前周期Teiment,標(biāo)號51代表下一周期Tnext。時間點503代表當(dāng)前周期T—50的起始時刻,時間點504代表下一周期Tnrart51的起始時刻。需要注意的是,此處給出的頁面交換調(diào)度算法僅用于說明本發(fā)明而不用于對其進行限制,任何本領(lǐng)域中現(xiàn)在已知的、目前正在研發(fā)的和目后研發(fā)的調(diào)度算法(例如,基于時間、空間的各種調(diào)度算法)都可以用于實現(xiàn)本發(fā)明。根據(jù)本發(fā)明的某些實施方式,例如可以響應(yīng)于滿足用以觸發(fā)頁面交換的條件來調(diào)度頁面交換。具體地,根據(jù)本發(fā)明的某些實施方式,例如可以響應(yīng)于單個共享頁面中已寫入一定百分比(例如,90%)的數(shù)據(jù)分組,調(diào)度單個共享頁面與特定虛擬機的空白內(nèi)存頁面之間的頁面交換。根據(jù)本發(fā)明的某些實施方式,例如響應(yīng)于到達頁面交換的周期的起始時刻(例如,由圖5中的時間點503和504示出,意味著上一個單個共享頁面寫入周期已結(jié)束),調(diào)度單個共享頁面與特定虛擬機的空白內(nèi)存頁面之間的頁面交換。根據(jù)本發(fā)明的某些實施方式,例如可以響應(yīng)于到達頁面交換的周期的起始時刻以及進一步地確定單個共享頁面具有待向外部機器發(fā)送的數(shù)據(jù)分組,調(diào)度單個共享頁面與特定虛擬機的空白內(nèi)存頁面之間的頁面交換。否則,不調(diào)度頁面交換。并且,這種情況可能說明頁面調(diào)度的周期設(shè)置得過短,使得虛擬機沒有足夠的時間向單個共享頁面寫入數(shù)據(jù)分組,由此需要重新計算頁面調(diào)度的周期。
本領(lǐng)域技術(shù)人員可以理解,可以可選地設(shè)置定時器,以便在定時器的預(yù)定時段到期時,重新計算頁面調(diào)度的周期,以避免盲目的重新計算。本領(lǐng)域技術(shù)人員可以理解,在引入了重新計算頁面調(diào)度的周期這一機制的情況下,頁面調(diào)度的周期可以是動態(tài)改變的。根據(jù)本發(fā)明的某些實施方式,例如可以響應(yīng)于到達固定的時間(例如,500ms),調(diào)度單個共享頁面與特定虛擬機的空白內(nèi)存頁面之間的頁面交換,g卩,靜態(tài)的頁面交換周期。根據(jù)本發(fā)明的某些實施方式,如果每個虛擬機中的任何一個虛擬機向單個共享頁面寫入其待向外部機器發(fā)送的數(shù)據(jù)分組所需的時間間隔跨越頁面交換的下一周期的起始時刻(例如,假設(shè)跨越圖5中下一周期Tnext51的起始時刻,如時間點504所示),可以推遲該任何一個虛擬機的寫入到頁面交換的下一周期(即,推遲到由圖5中的時間點504表示其起始時刻的周期Tnrart51)。這可以通過在調(diào)度各虛擬機向單個共享頁面的寫入時,暫停該當(dāng)前虛擬機的寫入操作,而調(diào)度其他有數(shù)據(jù)分組待發(fā)送且所需的時間間隔不會跨越頁面交換的下一周期的起始時刻的虛擬機(如果存在的話)來執(zhí)行寫入操作。這樣做的優(yōu)勢在于能夠避免某個虛擬機向單個共享頁面寫入數(shù)據(jù)的操作被中斷,造成寫入單個共享頁面中的數(shù)據(jù)分組不連續(xù)的情況。接下來 ,繼續(xù)參考圖5來描述頁面交換的周期的示例性計算方法。本領(lǐng)域技術(shù)人員可以理解,該計算方法僅用于說明本發(fā)明的實施方式,本發(fā)明在此方面不受限制,能夠利用Tssp501和Dssp502得到Teu ent50的任何計算方法都可以用于實現(xiàn)本發(fā)明。以圖5中的周期為例,其是根據(jù)運行在同一物理機上的所有虛擬機有數(shù)據(jù)待向外部機器發(fā)送的平均時間間隔(例如,由圖5中所示標(biāo)號Tssp501表示)與所有虛擬機向單個共享頁面寫入數(shù)據(jù)分組所需的平均時間間隔確定的(例如,由圖5中所示標(biāo)號Dssp502表示)。根據(jù)本發(fā)明的某些實施方式,如圖5所示,可以由二者之和確定,即,Tssp501+Dssp502 = TeulTent50。需要注意的是,該計算方法僅是示例,本發(fā)明在此方面不受限制。例如,根據(jù)本發(fā)明的某些實施方式,可以計算二者的加權(quán)和,例如,a.Tssp501+b.Dssp502 = Tcurrent50o其中,a和b為權(quán)重,其物理含義可以是計算得到的平均時間間隔Tssp501和Dssp502分別與有效的實際值之間的估算誤差。例如,按照經(jīng)驗值,Tssp501的有效實際值例如為11ms,而實際計算的平均時間間隔Tssp501為10ms,則a將被選擇為1.1。需要注意,這些數(shù)值僅是示例,本發(fā)明在此方面不受限制。根據(jù)本發(fā)明的某些實施方式,Tssp 501 = ^=1^。其中,i = l...n,η為同一物理
機上所有虛擬機的數(shù)目,Ti為每個虛擬機有數(shù)據(jù)待向外部機器發(fā)送的平均時間間隔。類似地,Dssp SQl=Yi^Di。其中,i = L..η,η為同一物理機上的所有虛擬機的數(shù)目,Di為每個虛擬機向單個共享頁面寫入數(shù)據(jù)分組所需的平均時間間隔。根據(jù)本發(fā)明的某些實施方式,圖2所示的用于在虛擬機與外部機器進行通信時使用的方法200例如可以進一步包括向每個虛擬機通知頁面交換的周期。本領(lǐng)域技術(shù)人員可以理解,上述有關(guān)頁面交換的調(diào)度以及各個虛擬機向單個共享頁面寫入數(shù)據(jù)分組的調(diào)度均可由圖1中所示通信調(diào)度器1012執(zhí)行。
下面,將參考圖6來描述根據(jù)本發(fā)明示例性實施方式的用于在虛擬機與外部機器進行通信時使用的設(shè)備600 (以下簡稱為通信設(shè)備600)的框圖。如圖6所示,通信設(shè)備600例如可以包括提供裝置601,配置用于提供在多個所述虛擬機與特定虛擬機之間共享的單個共享頁面,其中特定虛擬機與多個所述虛擬機運行在同一物理機上;寫入裝置605,配置用于向單個共享頁面寫入所述虛擬機待向外部機器發(fā)送的數(shù)據(jù)分組;調(diào)度裝置609,配置用于調(diào)度單個共享頁面與特定虛擬機的空白內(nèi)存頁面之間的頁面交換;以及發(fā)送裝置611,配置用于將頁面交換后的特定虛擬機的內(nèi)存頁面中的數(shù)據(jù)分組向外部機器發(fā)送。根據(jù)本發(fā)明的某些實施方式,通信設(shè)備600例如可以進一步包括:封裝裝置603,配置用于在向單個共享頁面寫入虛擬機待向外部機器發(fā)送的數(shù)據(jù)分組之前、在虛擬機的用戶內(nèi)存空間內(nèi)、按照特定協(xié)議封裝數(shù)據(jù)分組;以及該寫入裝置605例如可以包括用于直接通過方法調(diào)用的方式將封裝后的數(shù)據(jù)分組寫入到單個共享頁面的裝置。根據(jù)本發(fā)明的某些實施方式,調(diào)度裝置609例如可以是響應(yīng)于到達頁面交換的周期的起始時刻而操作的。根據(jù)本發(fā)明的某些實施方式,頁面交換的周期例如可以是根據(jù)運行在同一物理機上的所有虛擬機有數(shù)據(jù)分組待向外部機器發(fā)送的平均時間間隔與所述所有虛擬機向單個共享頁面寫入數(shù)據(jù)分組所需的平均時間間隔確定的。根據(jù)本發(fā)明的某些實施方式,通信設(shè)備600例如可以進一步包括:通知裝置(未示出),配置用于向每個虛擬機通知所述頁面交換的周期。根據(jù)本發(fā)明的某些實施方式,調(diào)度裝置609例如是響應(yīng)于進一步確定單個共享頁面具有待向外部機器發(fā)送的數(shù)據(jù)分組而操作的。根據(jù)本發(fā)明的某些實施方式,通信設(shè)備600例如可以進一步包括:計算裝置(未示出),配置用于響應(yīng)于確定單個共享頁面不具有待向外部機器發(fā)送的數(shù)據(jù)分組,重新計算頁面交換的周期。根據(jù)本發(fā)明的某些實施方式,通信設(shè)備600例如可以進一步包括:推遲裝置(未示出),配置用于如果每個虛擬機中的任何一個虛擬機向單個共享頁面寫入其待向外部機器發(fā)送的數(shù)據(jù)分組所需的時間間隔跨越頁面交換的下一周期的起始時刻,推遲任何一個虛擬機的寫入到頁面交換的下一周期。根據(jù)本發(fā)明的某些實施方式,通信設(shè)備600例如可以進一步包括:重組裝置607,配置用于在單個共享頁面中對待向外部機器發(fā)送的數(shù)據(jù)分組進行重組。根據(jù)本發(fā)明的某些實施方式,重組裝置607例如可以包括:用于將來自同一虛擬機的或來自運行在同一物理機上的不同虛擬機的、具有相同目的地地址和協(xié)議層類型的數(shù)據(jù)分組的有效載荷聚集在一個數(shù)據(jù)分組中的裝置。根據(jù)本發(fā)明的某些實施方式,通信設(shè)備600例如可以進一步分發(fā)裝置(未示出),配置用于響應(yīng)于特定虛擬機接收到來自外部機器的數(shù)據(jù)分組,將原始套接字應(yīng)用于從數(shù)據(jù)分組尋址到的虛擬機的虛擬驅(qū)動器轉(zhuǎn)發(fā)該數(shù)據(jù)分組以便對其進行解封裝,其中來自外部機器的數(shù)據(jù)分組是在外部機器的虛擬機的用戶內(nèi)存空間內(nèi)、按照特定協(xié)議進行了封裝的,或者在外部機器的單個共享頁面內(nèi)進行了重組的數(shù)據(jù)分組。下面,將參考圖7來描述可以實現(xiàn)本發(fā)明的計算設(shè)備。圖7示意性示出了可以實現(xiàn)根據(jù)本發(fā)明的實施方式的計算設(shè)備的結(jié)構(gòu)方框圖。圖7中所示的計算機系統(tǒng)包括CPU(中央處理單元)701、RAM(隨機存取存儲器)702、ROM (只讀存儲器)703、系統(tǒng)總線704、硬盤控制器705、鍵盤控制器706、串行接口控制器707、并行接口控制器708、顯示器控制器709、硬盤710、鍵盤711、串行外部設(shè)備712、并行外部設(shè)備713和顯示器714。在這些部件中,與系統(tǒng)總線704相連的有CPU 701、RAM 702、ROM 703、硬盤控制器705、鍵盤控制器706、串行接口控制器707、并行接口控制器708和顯示器控制器709。硬盤710與硬盤控制器705相連,鍵盤711與鍵盤控制器706相連,串行外部設(shè)備712與串行接口控制器707相連,并行外部設(shè)備713與并行接口控制器708相連,以及顯示器714與顯示器控制器709相連。圖7所述的結(jié)構(gòu)方框圖僅僅為了示例的目的而示出的,并非是對本發(fā)明的限制。在一些情況下,可以根據(jù)需要添加或者減少其中的一些設(shè)備。在介紹了本發(fā)明的技術(shù)方案之后,參考圖8A和圖SB來描述在實現(xiàn)了根據(jù)本發(fā)明的實施方式之后的系統(tǒng)性能仿真圖。具體而言,在實現(xiàn)了本發(fā)明的實施方式之后,頁面交換頻率減少率為
權(quán)利要求
1.一種用于在虛擬機與外部機器進行通信時使用的方法,包括: 提供在多個所述虛擬機與特定虛擬機之間共享的單個共享頁面,其中所述特定虛擬機與多個所述虛擬機運行在同一物理機上; 向所述單個共享頁面寫入所述虛擬機待向所述外部機器發(fā)送的數(shù)據(jù)分組; 調(diào)度所述單個共享頁面與所述特定虛擬機的空白內(nèi)存頁面之間的頁面交換;以及 將所述頁面交換后的所述特定虛擬機的內(nèi)存頁面中的數(shù)據(jù)分組向所述外部機器發(fā)送。
2.根據(jù)權(quán)利要求1所述的方法,進一步包括: 在向所述單個共享頁面寫入所述虛擬機待向所述外部機器發(fā)送的數(shù)據(jù)分組之前,在所述虛擬機的用戶內(nèi)存空間內(nèi)、按照特定協(xié)議封裝所述數(shù)據(jù)分組;以及 向所述單個共享頁面寫入所述虛擬機待向所述外部機器發(fā)送的數(shù)據(jù)分組包括:直接通過方法調(diào)用的方式將所述封裝后的數(shù)據(jù)分組寫入所述單個共享頁面。
3.根據(jù)權(quán)利要求1所述的方法,其中調(diào)度所述頁面交換是響應(yīng)于到達所述頁面交換的周期的起始時刻而發(fā)生的,其中所述頁面交換的周期是根據(jù)運行在所述同一物理機上的所有虛擬機有數(shù)據(jù)分組待向所述外部機器發(fā)送的平均時間間隔與所述所有虛擬機向所述單個共享頁面寫入所述數(shù)據(jù)分組所需的平均時間間隔確定的;以及 所述方法進一步包括:向每個虛擬機通知所述頁面交換的周期。
4.根據(jù)權(quán)利要求3所述的方法,其中調(diào)度所述頁面交換是響應(yīng)于進一步確定所述單個共享頁面具有待向所 述外部機器發(fā)送的數(shù)據(jù)分組而發(fā)生的;以及 所述方法進一步包括:響應(yīng)于確定所述單個共享頁面不具有待向所述外部機器發(fā)送的數(shù)據(jù)分組,重新計算所述頁面交換的周期。
5.根據(jù)權(quán)利要求3所述的方法,進一步包括: 如果所述每個虛擬機中的任何一個虛擬機向所述單個共享頁面寫入其待向所述外部機器發(fā)送的數(shù)據(jù)分組所需的時間間隔跨越所述頁面交換的下一周期的起始時刻,推遲所述任何一個虛擬機的寫入到所述頁面交換的下一周期。
6.根據(jù)權(quán)利要求1所述的方法,進一步包括: 在所述單個共享頁面中對所述待向所述外部機器發(fā)送的數(shù)據(jù)分組進行重組。
7.根據(jù)權(quán)利要求6所述的方法,其中所述重組包括: 將來自同一虛擬機的或來自運行在所述同一物理機上的不同虛擬機的、具有相同目的地地址和協(xié)議層類型的數(shù)據(jù)分組的有效載荷聚集在一個數(shù)據(jù)分組中。
8.根據(jù)權(quán)利要求1所述的方法,進一步包括: 響應(yīng)于所述特定虛擬機接收到來自所述外部機器的數(shù)據(jù)分組,將原始套接字應(yīng)用于從所述數(shù)據(jù)分組尋址到的虛擬機的虛擬驅(qū)動器轉(zhuǎn)發(fā)所述數(shù)據(jù)分組,以便對其進行解封裝, 其中所述來自所述外部機器的數(shù)據(jù)分組是在所述外部機器的虛擬機的用戶內(nèi)存空間內(nèi)、按照特定協(xié)議進行了封裝的,或者在所述外部機器的單個共享頁面內(nèi)進行了重組的數(shù)據(jù)分組。
9.一種用于在虛擬機與外部機器進行通信時使用的設(shè)備,包括: 提供裝置,配置用于提供在多個所述虛擬機與特定虛擬機之間共享的單個共享頁面,其中所述特定虛擬機與多個所述虛擬機運行在同一物理機上; 寫入裝置,配置用于向所述單個共享頁面寫入所述虛擬機待向所述外部機器發(fā)送的數(shù)據(jù)分組; 調(diào)度裝置,配置用于調(diào)度所述單個共享頁面與所述特定虛擬機的空白內(nèi)存頁面之間的頁面交換;以及 發(fā)送裝置,配置用于將所述頁面交換后的所述特定虛擬機的內(nèi)存頁面中的數(shù)據(jù)分組向所述外部機器發(fā)送。
10.根據(jù)權(quán)利要求9所述的設(shè)備,進一步包括: 封裝裝置,配置用于在向所述單個共享頁面寫入所述虛擬機待向所述外部機器發(fā)送的數(shù)據(jù)分組之前,在所述虛擬機的用戶內(nèi)存空間內(nèi)、按照特定協(xié)議封裝所述數(shù)據(jù)分組;以及 所述寫入裝置包括:用于直接通過方法調(diào)用的方式將所述封裝后的數(shù)據(jù)分組寫入到所述單個共享頁面的裝置。
11.根據(jù)權(quán)利要求9所述的設(shè)備,其中所述調(diào)度裝置是響應(yīng)于到達所述頁面交換的周期的起始時刻而操作的,其中所述頁面交換的周期是根據(jù)運行在所述同一物理機上的所有虛擬機有數(shù)據(jù)分組待向所述外部機器發(fā)送的平均時間間隔與所述所有虛擬機向所述單個共享頁面寫入所述數(shù)據(jù)分組所需的平均時間間隔確定的;以及 所述設(shè)備進一步包括:通知裝置,配置用于向每個虛擬機通知所述頁面交換的周期。
12.根據(jù)權(quán)利要求11所述的設(shè)備,其中所述調(diào)度裝置是響應(yīng)于進一步確定所述單個共享頁面具有待向所述外部機器發(fā)送的數(shù)據(jù)分組而操作的;以及 所述設(shè)備進一步包括:計算裝置,配置用于響應(yīng)于確定所述單個共享頁面不具有待向所述外部機器發(fā)送的數(shù)據(jù)分組,重新計算所述頁面交換的周期。
13.根據(jù)權(quán)利要求11所述的設(shè)備,進一步包括: 推遲裝置,配置用于如果所述每個虛擬機中的任何一個虛擬機向所述單個共享頁面寫入其待向所述外部機器發(fā)送的數(shù)據(jù)分組所需的時間間隔跨越所述頁面交換的下一周期的起始時刻,推遲所述任何一個虛擬機的寫入到所述頁面交換的下一周期。
14.根據(jù)權(quán)利要求9所述的設(shè)備,進一步包括: 重組裝置,配置用于在所述單個共享頁面中對所述待向所述外部機器發(fā)送的數(shù)據(jù)分組進行重組。
15.根據(jù)權(quán)利要求14所述的設(shè)備,其中所述重組裝置包括: 用于將來自同一虛擬機的或來自運行在所述同一物理機上的不同虛擬機的、具有相同目的地地址和協(xié)議層類型的數(shù)據(jù)分組的有效載荷聚集在一個數(shù)據(jù)分組中的裝置。
16.根據(jù)權(quán)利要求9所述的設(shè)備,進一步包括: 分發(fā)裝置,配置用于響應(yīng)于所述特定虛擬機接收到來自所述外部機器的數(shù)據(jù)分組,將原始套接字應(yīng)用于從所述數(shù)據(jù)分組尋址到的虛擬機的虛擬驅(qū)動器轉(zhuǎn)發(fā)所述數(shù)據(jù)分組,以便對其進行解封裝, 其中所述來自所述外部機器的數(shù)據(jù)分組是在所述外部機器的虛擬機的用戶內(nèi)存空間內(nèi)、按照特定協(xié)議進行了封裝的,或者在所述外部機器的單個共享頁面內(nèi)進行了重組的數(shù)據(jù)分組。
17.—種虛擬機系統(tǒng),包括: 虛擬機管理器,其具有用于在所述虛擬機系統(tǒng)包括的多個虛擬機與特定虛擬機之間進行共享的單個共享頁面,其中所述特定虛擬機與所述多個虛擬機運行在同一物理機上;所述多個虛擬機,配置用于向所述單個共享頁面寫入待向外部機器發(fā)送的數(shù)據(jù)分組; 其中所述虛擬機管理器進一步包括通信調(diào)度器,其配置用于調(diào)度所述單個共享頁面與所述特定虛擬機的空白內(nèi)存頁面之間的頁面交換,以使得所述頁面交換后的所述特定虛擬機的內(nèi)存頁面中的數(shù)據(jù)分組向所述外部機器發(fā)送。
18.根據(jù)權(quán)利要求17所述的虛擬機系統(tǒng),進一步包括封裝器,配置用于在向所述單個共享頁面寫入所述多個虛擬機中的相應(yīng)虛擬機待向所述外部機器發(fā)送的數(shù)據(jù)分組之前、在所述相應(yīng)虛擬機的用戶內(nèi)存空間內(nèi)、按照特定協(xié)議進行封裝;以及 所述虛擬機管理器進一步包括方法調(diào)用裝置,其配置用于直接通過方法調(diào)用的方式將所述封裝后的數(shù)據(jù)分組寫入所述單個共享頁面。
19.根據(jù)權(quán)利要求17所述的虛擬機系統(tǒng),其中所述虛擬機管理器進一步包括內(nèi)容組織器,其配置用于在所述單個共享頁面中對所述待向所述外部機器發(fā)送的數(shù)據(jù)分組進行重組。
20.根據(jù)權(quán)利要求19所述的虛擬機系統(tǒng),其中所述內(nèi)容組織器進一步配置用于通過將來自同一虛擬機的或來自運行在所述同一物理機上的不同虛擬機的、具有相同目的地地址和協(xié)議層類型的數(shù)據(jù)分組的有效載荷聚集在一個數(shù)據(jù)分組中來對所述數(shù)據(jù)分組進行重組。
全文摘要
本發(fā)明的實施方式涉及一種虛擬機與外部機器通信時使用的方法、設(shè)備及虛擬機系統(tǒng)。具體地,根據(jù)本發(fā)明第一方面的用于在虛擬機與外部機器進行通信時使用的方法例如可以包括提供在多個所述虛擬機與特定虛擬機之間共享的單個共享頁面,其中特定虛擬機與多個所述虛擬機運行在同一物理機上;向單個共享頁面寫入所述虛擬機待向外部機器發(fā)送的數(shù)據(jù)分組;調(diào)度單個共享頁面與特定虛擬機的空白內(nèi)存頁面之間的頁面交換;以及將頁面交換后的特定虛擬機的內(nèi)存頁面中的數(shù)據(jù)分組向外部機器發(fā)送。
文檔編號G06F9/54GK103218266SQ201210016848
公開日2013年7月24日 申請日期2012年1月18日 優(yōu)先權(quán)日2012年1月18日
發(fā)明者曲俊媚, 李立, 劉亮, 戈弋, 袁昱 申請人:國際商業(yè)機器公司