一種適用于虛擬機(jī)動(dòng)態(tài)遷移的內(nèi)存狀態(tài)遷移方法
【專利摘要】本發(fā)明提供一種適用于虛擬機(jī)動(dòng)態(tài)遷移的內(nèi)存狀態(tài)遷移方法,包括以下步驟:步驟1,以一個(gè)固定的時(shí)間間隔定期收集源主機(jī)中內(nèi)存臟頁歷史數(shù)據(jù),記錄每個(gè)頁面被改寫的次數(shù)以及最近N次的觀察狀態(tài)值;步驟2,識(shí)別源主機(jī)的空閑內(nèi)存頁,向選定的目標(biāo)主機(jī)發(fā)送遷移請(qǐng)求;步驟3,迭代拷貝;步驟4,停機(jī)拷貝階段。本發(fā)明提供的內(nèi)存狀態(tài)遷移方法,拷貝效率高、總遷移時(shí)間短、停機(jī)時(shí)間短、遷移數(shù)據(jù)量小。
【專利說明】一種適用于虛擬機(jī)動(dòng)態(tài)遷移的內(nèi)存狀態(tài)遷移方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及虛擬機(jī)【技術(shù)領(lǐng)域】,尤其涉及適用于虛擬機(jī)動(dòng)態(tài)遷移的內(nèi)存狀態(tài)遷移方 法。
【背景技術(shù)】
[0002] 隨著云計(jì)算和數(shù)據(jù)中心的發(fā)展,虛擬機(jī)(VM)動(dòng)態(tài)遷移已成為今年來的研究熱點(diǎn)。 VM動(dòng)態(tài)遷移是一種可以再?zèng)]有斷開客戶端或應(yīng)用程序連接的情況下,在不同的物理機(jī)器之 間移動(dòng)正在運(yùn)行的VM的技術(shù)。因此,在負(fù)載均衡、在線維護(hù)、主動(dòng)容錯(cuò)等領(lǐng)域,VM動(dòng)態(tài)遷移 被用作管理集群個(gè)云平臺(tái)的一個(gè)強(qiáng)大工具。
[0003] 為了執(zhí)行一臺(tái)VM的動(dòng)態(tài)遷移,VM運(yùn)行狀態(tài)時(shí)的物理內(nèi)存、網(wǎng)絡(luò)連接、VCPU以及其 他資源都必須從源主機(jī)遷移到目的主機(jī),在遷移過程中,VM仍舊保持運(yùn)行。最復(fù)雜的問題 就在于遷移物理內(nèi)存,因?yàn)殡S著VM的運(yùn)行,內(nèi)存的內(nèi)容是動(dòng)態(tài)的,它是影響遷移性能的主 要因素。但是,在內(nèi)存狀態(tài)遷移方面,現(xiàn)有的動(dòng)態(tài)遷移方法存在以下問題:(1)判斷臟頁是 否需要被發(fā)送到目的VM僅僅依賴于上一輪和當(dāng)前一輪迭代,造成不必要的重復(fù)傳送;(2) 迭代次數(shù)僅為三次,三輪迭代的歷史臟頁數(shù)據(jù)對(duì)于準(zhǔn)確判斷頁面類型依舊缺乏可靠性;(3) 沒有對(duì)內(nèi)存頁面詳細(xì)劃分,導(dǎo)致不必要的內(nèi)存頁面?zhèn)魉汀?br>
【發(fā)明內(nèi)容】
[0004] 為解決現(xiàn)有技術(shù)存在的問題,本發(fā)明提供一種拷貝效率高、總遷移時(shí)間短、停機(jī)時(shí) 間短、遷移數(shù)據(jù)量小的適用于虛擬機(jī)動(dòng)態(tài)遷移的內(nèi)存狀態(tài)遷移方法,包括以下步驟:
[0005] 步驟1,以一個(gè)固定的時(shí)間間隔定期收集源主機(jī)中內(nèi)存臟頁歷史數(shù)據(jù),記錄每個(gè)頁 面被改寫的次數(shù)以及最近N次的觀察狀態(tài)值:
[0006] 步驟1. 1,定義存放內(nèi)存頁面狀態(tài)信息的數(shù)據(jù)結(jié)構(gòu)global_pfn_info,其中有三個(gè) int類型的成員,分別是客戶操作系統(tǒng)的物理頁號(hào)pfn、頁面類型type和被改寫的頁面數(shù)量 dirty-num ;
[0007] 步驟1. 2,設(shè)置一個(gè)固定的時(shí)間間隔,從預(yù)遷移階段開始每一個(gè)時(shí)間間隔收集一次 數(shù)據(jù),并將被改寫的頁面數(shù)量存入數(shù)據(jù)結(jié)構(gòu)gl〇bal_pfn_info中,直到迭代拷貝階段結(jié)束;
[0008] 步驟1. 3,用int類型數(shù)組global_pfn_info. dirty_num記錄每個(gè)頁面被改寫的次 數(shù),用int類型數(shù)組nearest_n記錄最近N次頁面的觀察狀態(tài)值;
[0009] 步驟1. 4,收集內(nèi)存頁面歷史數(shù)據(jù)進(jìn)程,并將收集的數(shù)據(jù)存入步驟1. 2和1. 3定義 的數(shù)據(jù)結(jié)構(gòu)中。
[0010] 步驟2,識(shí)別源主機(jī)的空閑內(nèi)存頁,向選定的目標(biāo)主機(jī)發(fā)送遷移請(qǐng)求:
[0011] 步驟2. 1,選定目標(biāo)主機(jī),向目標(biāo)主機(jī)發(fā)送遷移請(qǐng)求,確保目標(biāo)主機(jī)有足夠的磁盤 空間、內(nèi)存容量和資源容納被遷移的VM,否則,遷移結(jié)束;
[0012] 步驟2. 2,識(shí)別遷移前源主機(jī)的空閑內(nèi)存頁,定義空閑內(nèi)存頁集合FS。
[0013] 步驟3,迭代拷貝:
[0014] 步驟3. 1,定義源主機(jī)內(nèi)存頁的不同類型,包括空閑內(nèi)存頁、工作內(nèi)存頁,工作內(nèi)存 頁又包括冷頁內(nèi)存頁和臟頁內(nèi)存頁,臟頁內(nèi)存頁包括熱工作內(nèi)存頁和溫工作內(nèi)存頁;
[0015] 步驟3. 2,設(shè)定迭代拷貝終止條件,設(shè)定閾值Wdpr ;
[0016] 步驟3. 3,第一輪迭代拷貝,發(fā)送除了空閑內(nèi)存頁的其他所有頁面至目的主機(jī)的 VM ;
[0017] 步驟3. 4,第二輪迭代拷貝,遍歷每個(gè)內(nèi)存頁,執(zhí)行工作集識(shí)別算法,區(qū)分冷頁內(nèi)存 頁、熱工作內(nèi)存頁、溫工作內(nèi)存頁;
[0018] 步驟3. 5,剩余迭代期間,為每個(gè)溫工作內(nèi)存頁頁面的最近N次記錄分配權(quán)重,并 按照權(quán)重大小降序排列并儲(chǔ)存,計(jì)算每個(gè)頁面的臟頁率
【權(quán)利要求】
1. 一種適用于虛擬機(jī)動(dòng)態(tài)遷移的內(nèi)存狀態(tài)遷移方法,包括以下步驟: 步驟1,以一個(gè)固定的時(shí)間間隔定期收集源主機(jī)中內(nèi)存臟頁歷史數(shù)據(jù),記錄每個(gè)頁面被 改寫的次數(shù)以及最近N次的觀察狀態(tài)值; 步驟2,識(shí)別源主機(jī)的空閑內(nèi)存頁,向選定的目標(biāo)主機(jī)發(fā)送遷移請(qǐng)求; 步驟3,迭代拷貝; 步驟4,停機(jī)拷貝階段。
2. 根據(jù)權(quán)利要求1所述的適用于虛擬機(jī)動(dòng)態(tài)遷移的內(nèi)存狀態(tài)遷移方法,其特征在于步 驟1的內(nèi)存頁面歷史數(shù)據(jù)收集,步驟如下: 步驟1. 1,定義存放內(nèi)存頁面狀態(tài)信息的數(shù)據(jù)結(jié)構(gòu)gl〇bal_pfn_info,其中有三個(gè)int類型的成員,分別是客戶操作系統(tǒng)的物理頁號(hào)pfn、頁面類型type和被改寫的頁面數(shù)量 dirty-num; 步驟1. 2,設(shè)置一個(gè)固定的時(shí)間間隔,從預(yù)遷移階段開始每一個(gè)時(shí)間間隔收集一次數(shù) 據(jù),并將被改寫的頁面數(shù)量存入數(shù)據(jù)結(jié)構(gòu)gl〇bal_pfn_info中,直到迭代拷貝階段結(jié)束; 步驟1. 3,用int類型數(shù)組global_pfn_info.dirty_num記錄每個(gè)頁面被改寫的次數(shù), 用int類型數(shù)組nearest_n記錄最近N次頁面的觀察狀態(tài)值; 步驟1. 4,收集內(nèi)存頁面歷史數(shù)據(jù)進(jìn)程,并將收集的數(shù)據(jù)存入步驟1. 2和1. 3定義的數(shù) 據(jù)結(jié)構(gòu)中。
3. 根據(jù)權(quán)利要求1所述的適用于虛擬機(jī)動(dòng)態(tài)遷移的內(nèi)存狀態(tài)遷移方法,其特征在于步 驟2的預(yù)遷移階段,步驟如下: 步驟2. 1,選定目標(biāo)主機(jī),向目標(biāo)主機(jī)發(fā)送遷移請(qǐng)求,確保目標(biāo)主機(jī)有足夠的磁盤空間、 內(nèi)存容量和資源容納被遷移的VM,否則,遷移結(jié)束; 步驟2. 2,識(shí)別遷移前源主機(jī)的空閑內(nèi)存頁,定義空閑內(nèi)存頁集合FS。
4. 根據(jù)權(quán)利要求1所述的適用于虛擬機(jī)動(dòng)態(tài)遷移的內(nèi)存狀態(tài)遷移方法,其特征在于步 驟3的迭代拷貝過程,步驟如下: 步驟3. 1,定義源主機(jī)內(nèi)存頁的不同類型,包括空閑內(nèi)存頁、工作內(nèi)存頁,工作內(nèi)存頁又 包括冷頁內(nèi)存頁和臟頁內(nèi)存頁,臟頁內(nèi)存頁包括熱工作內(nèi)存頁和溫工作內(nèi)存頁; 步驟3. 2,設(shè)定迭代拷貝終止條件,設(shè)定閾值Wdpr; 步驟3. 3,第一輪迭代拷貝,發(fā)送除了空閑內(nèi)存頁的其他所有頁面至目的主機(jī)的VM; 步驟3. 4,第二輪迭代拷貝,遍歷每個(gè)內(nèi)存頁,執(zhí)行工作集識(shí)別算法,區(qū)分冷頁內(nèi)存頁、 熱工作內(nèi)存頁、溫工作內(nèi)存頁; 步驟3. 5,剩余迭代期間,為每個(gè)溫工作內(nèi)存頁頁面的最近N次記錄分配權(quán)重,并按照 權(quán)重大小降序排列并儲(chǔ)存,計(jì)算每個(gè)頁面的臟頁率
若一 個(gè)溫工作內(nèi)存頁面的dpr超過設(shè)定的閾值Wdpr,則步驟3. 4結(jié)束;若dpr未超過設(shè)定的閾值Wdpr,則將該頁面加入待傳送的緩沖區(qū);當(dāng)緩沖區(qū)放滿之后,開始溫工作內(nèi)存頁內(nèi)存頁的傳 送; 步驟3. 6,重復(fù)步驟3. 5直至迭代拷貝終止條件達(dá)成。
5. 根據(jù)權(quán)利要求4所述的適用于虛擬機(jī)動(dòng)態(tài)遷移的內(nèi)存狀態(tài)遷移方法,步驟3. 2迭代 拷貝終止條件是迭代拷貝次數(shù)達(dá)到預(yù)定數(shù)量或者工作集小到內(nèi)存頁面總數(shù)的10%以內(nèi)。
6.根據(jù)權(quán)利要求1所述的適用于虛擬機(jī)動(dòng)態(tài)遷移的內(nèi)存狀態(tài)遷移方法,其特征在于步 驟4的停機(jī)拷貝階段,步驟如下: 步驟4. 1,傳送剩余的內(nèi)存頁至目的主機(jī),包括剩余迭代拷貝期間未被發(fā)送的溫工作內(nèi) 存頁以及發(fā)送過后又被改寫溫工作內(nèi)存頁和全部熱工作內(nèi)存頁; 步驟4. 2,保存各種寄存器狀態(tài)和共享內(nèi)存信息,并發(fā)送給目的主機(jī)。 步驟4. 3,目的主機(jī)向源主機(jī)發(fā)送內(nèi)存已全部收到的信息,源主機(jī)確認(rèn)后,銷毀虛擬 機(jī); 步驟4. 4,虛擬機(jī)在目的主機(jī)上恢復(fù)運(yùn)行,內(nèi)存遷移全部完成。
【文檔編號(hào)】G06F9/455GK104268003SQ201410523490
【公開日】2015年1月7日 申請(qǐng)日期:2014年9月30日 優(yōu)先權(quán)日:2014年9月30日
【發(fā)明者】徐建, 費(fèi)薇, 李濤, 張琨, 張宏, 吳旺文, 李千目, 許福, 范志凱, 陳龍 申請(qǐng)人:南京理工大學(xué)