[發(fā)明專利]基于RDMA的虛擬機分布式Fork方法在審
| 申請?zhí)枺?/td> | 202310215218.8 | 申請日: | 2023-03-06 |
| 公開(公告)號: | CN116149795A | 公開(公告)日: | 2023-05-23 |
| 發(fā)明(設(shè)計)人: | 魏星達;王天下;陳榕;陳海波 | 申請(專利權(quán))人: | 上海交通大學 |
| 主分類號: | G06F9/455 | 分類號: | G06F9/455 |
| 代理公司: | 上海漢聲知識產(chǎn)權(quán)代理有限公司 31236 | 代理人: | 胡晶 |
| 地址: | 200240 *** | 國省代碼: | 上海;31 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 基于 rdma 虛擬機 分布式 fork 方法 | ||
1.一種基于RDMA的虛擬機分布式Fork方法,其特征在于,包括:在虛擬機打包執(zhí)行狀態(tài)過程中,對目標的虛擬機的內(nèi)存內(nèi)容以及模擬的硬件狀態(tài)進行打包,存儲于文件中;在虛擬機執(zhí)行狀態(tài)恢復過程中,利用用戶態(tài)程序,使用RDMA處理虛擬機的缺頁錯誤;具體為:
步驟1:父虛擬機所在物理機執(zhí)行虛擬機打包執(zhí)行狀態(tài)過程,返回打包虛擬機的標識或打包失敗的錯誤;
步驟2:若虛擬機執(zhí)行狀態(tài)打包成功,則子虛擬機所在物理機通過父虛擬機所在物理機的標識以及打包虛擬機的標識,執(zhí)行虛擬機狀態(tài)恢復過程,完成分布式Fork的過程。
2.根據(jù)權(quán)利要求1所述的基于RDMA的虛擬機分布式Fork方法,其特征在于,所述步驟1包括:
步驟1.1:父虛擬機所在物理機預先啟動一個長時間運行的守護進程,該守護進程能夠通過RPC接受請求;
步驟1.2:用戶通過接口通知守護進程開始虛擬機打包執(zhí)行狀態(tài)過程,同時傳遞給守護進程一個整數(shù)作為該虛擬機打包后的標識;
步驟1.3:守護進程判斷該虛擬機打包后的標識是否存在關(guān)聯(lián),若存在關(guān)聯(lián),則返回標識沖突的錯誤,中止執(zhí)行;否則,繼續(xù)執(zhí)行;
步驟1.4:守護進程暫停虛擬機的執(zhí)行,打包虛擬機的內(nèi)存狀態(tài)以及模擬的硬件狀態(tài),若打包失敗,則返回打包失敗的錯誤,中止執(zhí)行;若打包成功,則獲得虛擬機的內(nèi)存鏡像文件和虛擬機的狀態(tài)文件;
步驟1.5:守護進程將虛擬機的內(nèi)存鏡像文件和虛擬機的狀態(tài)文件映射在該守護進程的內(nèi)存空間中,將這兩段內(nèi)存注冊為RDMA網(wǎng)卡可以訪問的內(nèi)存;
步驟1.6:守護進程將虛擬機的內(nèi)存鏡像文件和虛擬機的狀態(tài)文件對應的映射地址與指定的虛擬機的標識相關(guān)聯(lián),返回該打包虛擬機的標識。
3.根據(jù)權(quán)利要求2所述的基于RDMA的虛擬機分布式Fork方法,其特征在于,所述步驟2包括:
步驟2.1:子虛擬機所在物理機利用父虛擬機所在物理機的標識以及打包虛擬機的標識,通過RPC向守護進程發(fā)送分布式fork請求,并將打包虛擬機的標識編碼在RPC請求中;
步驟2.2:父虛擬機的守護進程接收到RPC請求后,通過RPC中的打包虛擬機的標識找到關(guān)聯(lián)的虛擬機的狀態(tài)文件和虛擬機的內(nèi)存鏡像文件的內(nèi)存地址,若不存在相關(guān)的關(guān)聯(lián),則通過RPC返回不存在相關(guān)聯(lián)虛擬機的錯誤;
步驟2.3:父虛擬機的守護進程將關(guān)聯(lián)的虛擬機的狀態(tài)文件和虛擬機的內(nèi)存鏡像文件的內(nèi)存地址以及父虛擬機所在的物理機的RDMA地址標識通過RPC返回給子虛擬機所在的物理機;
步驟2.4:若子虛擬機所在物理機收到的RPC響應為錯誤,則報錯并終止執(zhí)行;否則,通過父虛擬機所在的物理機的RDMA地址以及虛擬機的狀態(tài)文件的內(nèi)存地址,通過RDMA單邊讀取操作,從父虛擬機所在機器將父虛擬機的狀態(tài)一次性讀回;
步驟2.5:子虛擬機所在物理機通過讀回的虛擬機的狀態(tài),設(shè)置子虛擬機的寄存器和內(nèi)存大小;
步驟2.6:子虛擬機所在物理機啟動一個用戶態(tài)缺頁錯誤處理程序,并將父虛擬機所在物理機的RDMA標識以及父虛擬機的內(nèi)存鏡像文件所在的內(nèi)存地址傳遞給該程序;
步驟2.7:子虛擬機所在的物理機將子虛擬機的內(nèi)存區(qū)域與用戶態(tài)缺頁錯誤處理程序相關(guān)聯(lián),并啟動子虛擬機;
步驟2.8:子虛擬機開始運行后,每當其訪問到未映射的內(nèi)存頁,用戶態(tài)缺頁處理程序就會接收到缺頁錯誤,包括發(fā)生缺頁錯誤的內(nèi)存頁的偏移;
步驟2.9:用戶態(tài)缺頁錯誤處理程序通過父虛擬機的內(nèi)存鏡像文件所在的內(nèi)存地址以及發(fā)生缺頁錯誤的內(nèi)存頁的偏移,計算出遠端父虛擬機對應的內(nèi)存頁的內(nèi)存地址;
步驟2.10:用戶態(tài)缺頁錯誤處理程序通過RDMA單邊讀取操作,從遠端機器讀取對應的內(nèi)存頁;
步驟2.11:用戶態(tài)缺頁錯誤處理程序通過Linux用戶態(tài)缺頁錯誤處理機制,通過UFFDIO_COPY調(diào)用,將內(nèi)存頁復制到虛擬機的內(nèi)存空間中,完成缺頁處理流程,恢復子虛擬機的執(zhí)行。
4.根據(jù)權(quán)利要求2所述的基于RDMA的虛擬機分布式Fork方法,其特征在于,守護進程在開始分布式Fork過程之前完成啟動,守護進程使用傳統(tǒng)的以太網(wǎng)網(wǎng)絡棧或RDMA的網(wǎng)絡棧實現(xiàn)RPC;
守護進程通過Linux現(xiàn)有的mmap調(diào)用映射文件;注冊內(nèi)存時,設(shè)置該內(nèi)存可被遠端的RDMA網(wǎng)卡訪問。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于上海交通大學,未經(jīng)上海交通大學許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202310215218.8/1.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。





