一種數(shù)據(jù)處理方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明涉及通信技術(shù)領(lǐng)域,具體涉及一種數(shù)據(jù)處理方法及裝置。
【背景技術(shù)】
[0002]隨著計算機技術(shù)的飛速發(fā)展,越來越多的公司和研究機構(gòu)開始關(guān)注計算機的能耗和資源利用率,而云計算則是其中關(guān)鍵的計算模式。云計算將所有的計算機抽象成特定的計算資源,然后將這些計算資源提供給用戶,而不是直接提供一臺或多臺計算機。這種模式最大的好處就是用戶可以根據(jù)自己的實際需要來申請資源,避免不必要的資源的浪費,提高資源利用率。
[0003]服務(wù)器虛擬化技術(shù)是云計算中基于基礎(chǔ)設(shè)施層的關(guān)鍵技術(shù),通過對物理服務(wù)器進行虛擬化,實現(xiàn)在單臺物理節(jié)點上部署多臺虛擬機,并在虛擬機的內(nèi)部部署業(yè)務(wù),從而提高物理服務(wù)器的資源利用率,降低使用成本。但是,由于服務(wù)器虛擬化技術(shù)是基于虛擬機監(jiān)視器(英文全稱:virtual machine monitor,縮寫:VMM)模塊,在硬件平臺和客戶操作系統(tǒng)中加入了一層抽象硬件層,所以不可避免的會帶來一定的性能開銷。對于大部分的應(yīng)用來說,虛擬化引入的性能開銷是可以接受的,但是對于信息技術(shù)(英文全稱:Informat1nTechnology,縮寫:IT)等關(guān)鍵應(yīng)用來說,對于性能的需求比較嚴茍S虛擬化引入的性能開銷可能會對用戶體驗起到嚴重的影響。例如,對于虛擬化高級特性熱迀移和熱備,內(nèi)存標(biāo)臟(dirty logging)的效率直接影響熱迀移時長、業(yè)務(wù)中斷時間和虛擬機內(nèi)部的業(yè)務(wù)性能,特別是在熱備中,由于需要不斷地獲取內(nèi)存臟頁信息來進行內(nèi)存同步,影響巨大。因此,內(nèi)存標(biāo)臟的效率是保障在熱迀移和熱備過程中虛擬機業(yè)務(wù)性能不受影響以及降低業(yè)務(wù)中斷時間的關(guān)鍵指標(biāo),直接影響用戶體驗。
[0004]在沒有引入硬件來輔助內(nèi)存標(biāo)臟之前,業(yè)界使用純軟件技術(shù),如圖1所示,S卩:當(dāng)快速計算仿真器(英文全稱:Quick EMUlator,縮寫:QEMU)通知虛擬機管理程序(Hypervisor)需要進行內(nèi)存標(biāo)臟時,Hypervisor設(shè)置虛擬機的內(nèi)存寫保護,當(dāng)虛擬機進行內(nèi)存寫操作時,就會產(chǎn)生異常退出到Hypervisor ,Hypervisor截獲到該寫異常后,根據(jù)寫的內(nèi)存地址,標(biāo)記該內(nèi)存頁為臟頁,然后再返回虛擬機。
[0005]由于虛擬機頻繁退出到Hypervisor,嚴重影響虛擬機內(nèi)部業(yè)務(wù)性能。當(dāng)虛擬機退出到Hypervisor時,虛擬機的內(nèi)部業(yè)務(wù)是中斷的,直到Hypervisor返回虛擬機,虛擬機內(nèi)部業(yè)務(wù)才得以繼續(xù)進行。
【發(fā)明內(nèi)容】
[0006]本發(fā)明實施例提供了一種數(shù)據(jù)處理方法及裝置,用于解決現(xiàn)有技術(shù)中虛擬機進行內(nèi)存標(biāo)臟時,頻繁退出到Hypervi sor而導(dǎo)致虛擬機的內(nèi)部業(yè)務(wù)中斷的問題。
[0007]本發(fā)明第一方面提供一種數(shù)據(jù)處理方法,所述方法應(yīng)用于虛擬機系統(tǒng)中的第一物理機,所述第一物理機上運行第一虛擬機,所述虛擬機系統(tǒng)還包括第二物理機,所述第二物理機上運行第二虛擬機,其中,所述第一物理機包括中央處理器CHJ和虛擬機管理程序Hypervisor,所述方法包括:
[0008]在預(yù)設(shè)條件下,當(dāng)所述第一虛擬機進行內(nèi)存寫操作時,獲取第一地址和第二地址,其中,所述第一地址為所述第一虛擬機進行內(nèi)存寫操作的地址,所述第二地址為存儲在第一寄存器的標(biāo)臟位圖的地址,所述第一地址和所述第二地址對應(yīng)的標(biāo)臟位圖之間存在映射關(guān)系;
[0009]根據(jù)所述映射關(guān)系確定所述第一地址在所述第二地址對應(yīng)的標(biāo)臟位圖中對應(yīng)的比特bit位,并將所述對應(yīng)的bit位置位,其中,所述第一寄存器為所述CPU上的至少一個寄存器。
[0010]該預(yù)設(shè)條件一般為需要將虛擬機的臟頁進行備份或者拷貝,例如:熱迀移或者熱備等條件下。其中,熱迀移是指將整個虛擬機的運行狀態(tài)完整保存下來,同時可以快速的恢復(fù)到原有硬件平臺甚至是不同硬件平臺上,恢復(fù)以后,虛擬機仍舊平滑運行,用戶不會察覺到任何差異,例如:源虛擬機從一臺物理機迀移至另一臺物理機上。而熱備是指一臺服務(wù)器處于某種業(yè)務(wù)的激活狀態(tài)(即Active狀態(tài)),另一臺服務(wù)器處于該業(yè)務(wù)的備用狀態(tài)(SPStandby狀態(tài)),例如:避免主虛擬機所在的物理機發(fā)生故障而導(dǎo)致數(shù)據(jù)流失,主虛擬機上的數(shù)據(jù)與備虛擬機上的數(shù)據(jù)同步。
[0011]在本發(fā)明實施例中,CPU根據(jù)所述映射關(guān)系確定所述第一地址在所述第二地址對應(yīng)的標(biāo)臟位圖中對應(yīng)的比特bit位,并將所述對應(yīng)的bit位置位,即完成內(nèi)存標(biāo)臟,例如:在熱迀移或者是熱備的條件下,當(dāng)?shù)谝惶摂M機的內(nèi)存中的記錄頁內(nèi)容被修改時,稱該被修改的頁為臟頁。而CHJ完成該內(nèi)存標(biāo)臟主要是記錄該臟頁信息,QEMU通過接口獲取該臟頁信息,并把該臟頁信息發(fā)送至第二虛擬機。
[0012]可見,在預(yù)設(shè)條件下(例如:熱迀移或者熱備),當(dāng)?shù)谝惶摂M機進行內(nèi)存寫操作時,CPU獲取第一地址和第二地址,根據(jù)第一地址和所述第二地址對應(yīng)的標(biāo)臟位圖之間的映射關(guān)系確定該第一地址在第二地址對應(yīng)的標(biāo)臟位圖中對應(yīng)的bit位,并將所述對應(yīng)的bit位置位,其中,第一寄存器為所述CPU上的至少一個寄存器,可見通過CPU進行內(nèi)存標(biāo)臟,無需虛擬機退出到Hypervisor,消除虛擬機由于頻繁退出到Hypervisor所導(dǎo)致的虛擬機的內(nèi)部業(yè)務(wù)中斷的問題,從而提高內(nèi)存標(biāo)臟的效率。
[0013]結(jié)合第一方面,在一些可能的實現(xiàn)方式中,在獲取第一地址和第二地址之前,所述方法還包括:
[0014]檢測到所述Hypervisor在所述第一寄存器上的第一寫操作,所述第一寫操作用于指示所述第一寄存器保存所述第二地址。
[0015]在另一些可能的實現(xiàn)方式中,所述在檢測到所述Hypervisor在所述第一寄存器上的第一寫操作的之后或者同時,所述方法還包括:
[0016]檢測到所述Hypervisor在第二寄存器上的第二寫操作,所述第二寫操作用于指示所述CPU進行內(nèi)存標(biāo)臟,其中,所述第二寄存器為所述CPU上的至少一個寄存器。
[0017]在另一些可能的實現(xiàn)方式中,在將所述對應(yīng)的bit位置位之后,所述方法還包括:
[0018]將所述置位后的標(biāo)臟位圖傳輸給所述Hypervisor,所述置位后的標(biāo)臟位圖所對應(yīng)的臟頁信息用于發(fā)送給所述第二虛擬機,使得所述第二虛擬機同步所述第一虛擬機進行內(nèi)存寫操作的臟頁信息。
[0019]在另一些可能的實現(xiàn)方式中,所述將所述置位后的標(biāo)臟位圖發(fā)送給所述Hypervisor之后,所述方法還包括:
[0020]將所述CPU的運行狀態(tài)恢復(fù)至初始狀態(tài)。
[0021]本發(fā)明第二方面提供一種數(shù)據(jù)處理裝置,所述裝置應(yīng)用于虛擬機系統(tǒng)中的第一物理機,所述第一物理機上運行第一虛擬機,所述虛擬機系統(tǒng)還包括第二物理機,所述第二物理機上運行第二虛擬機,其中,所述第一物理機包括中央處理器CHJ和虛擬機管理程序Hypervisor,所述裝置包括:
[0022]獲取模塊,用于在預(yù)設(shè)條件下,當(dāng)所述第一虛擬機進行內(nèi)存寫操作時,獲取第一地址和第二地址,其中,所述第一地址為所述第一虛擬機進行內(nèi)存寫操作的地址,所述第二地址為存儲在第一寄存器的標(biāo)臟位圖的地址,所述第一地址和所述第二地址對應(yīng)的標(biāo)臟位圖之間存在映射關(guān)系;
[0023]處理模塊,用于根據(jù)所述映射關(guān)系確定所述第一地址在所述第二地址對應(yīng)的標(biāo)臟位圖中對應(yīng)的比特bit位,并將所述對應(yīng)的bit位置位,其中,所述第一寄存器為所述CPU上的至少一個寄存器。
[0024]可見,在預(yù)設(shè)條件下(例如:熱迀移或者熱備),當(dāng)?shù)谝惶摂M機進行內(nèi)存寫操作時,獲取模塊獲取第一地址和第二地址,處理模塊根據(jù)第一地址和所述第二地址對應(yīng)的標(biāo)臟位圖之間的映射關(guān)系確定第一地址在所述第二地址對應(yīng)的標(biāo)臟位圖中對應(yīng)的bit位,并將所述對應(yīng)的bit位置位,其中,第一寄存器為所述CPU上的至少一個寄存器,可見通過處理模塊進行內(nèi)存標(biāo)臟,無需虛擬機退出到Hyperv i sor,消除虛擬機由于頻繁退出到Hyperv i sor所導(dǎo)致的虛擬機的內(nèi)部業(yè)務(wù)中斷的問題,從而提高內(nèi)存標(biāo)臟的效率。
[0025]在一些可能的實現(xiàn)方式中,
[0026]所述處理模塊,還用于在所述獲取模塊獲取第一地址和第二地址之前,檢測到所述Hypervisor在所述第一寄存器上的第一寫操作,所述第一寫操作用于指示所述第一寄存器保存所述第二地址。
[0027]在另一些可能的實現(xiàn)方式中,
[0028]所述處理模塊,還用于在檢測到所述Hypervisor在所述第一寄存器上的第一