本發(fā)明涉及安卓系統(tǒng)虛擬機(jī)技術(shù)領(lǐng)域,具體而言,涉及一種虛擬機(jī)的休眠與喚醒方法及系統(tǒng)。
背景技術(shù):
隨著4g網(wǎng)絡(luò)和智能手機(jī)的普及,移動(dòng)辦公應(yīng)運(yùn)而生,實(shí)現(xiàn)了企業(yè)所有員工的實(shí)時(shí)辦公、同步辦公、協(xié)同辦公、交互辦公,突破了空間和內(nèi)網(wǎng)的限制,提升了辦公效率,同時(shí)也帶來了潛在的信息安全隱患,增加了敏感數(shù)據(jù)的泄露風(fēng)險(xiǎn),嚴(yán)重影響移動(dòng)辦公的深度應(yīng)用。為此,類似pc(personalcomputer,個(gè)人計(jì)算機(jī))云桌面系統(tǒng)的android云桌面系統(tǒng)開始逐步應(yīng)用。在android云桌面系統(tǒng)中,云端服務(wù)器上運(yùn)行大量的虛擬機(jī),在虛擬機(jī)中安裝android操作系統(tǒng)。用戶在手機(jī)中通過安裝瘦客戶端軟件,遠(yuǎn)程登錄云端的android虛擬機(jī),遠(yuǎn)程操控云端android虛擬機(jī)中的應(yīng)用軟件,以此實(shí)現(xiàn)在用戶手機(jī)上遠(yuǎn)程操作云端android系統(tǒng)中的各種應(yīng)用。
現(xiàn)有技術(shù)的實(shí)現(xiàn)方法是在服務(wù)器上運(yùn)行的若干個(gè)android虛擬機(jī)實(shí)例,都在服務(wù)器的物理內(nèi)存中,現(xiàn)有技術(shù)的android虛擬機(jī)的休眠系統(tǒng)結(jié)構(gòu)如圖1所示,由于服務(wù)器物理配置是確定的,能容納的android虛擬機(jī)實(shí)例個(gè)數(shù)有限,現(xiàn)有技術(shù)的最大瓶頸在于服務(wù)器物理內(nèi)存和cpu(centralprocessingunit,中央處理器)的限制。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明旨在至少解決現(xiàn)有技術(shù)或相關(guān)技術(shù)中存在的技術(shù)問題之一。
為此,本發(fā)明的一個(gè)目的在于提出了一種虛擬機(jī)的休眠與喚醒方法。
本發(fā)明的另一個(gè)目的在于提出了一種虛擬機(jī)的休眠與喚醒系統(tǒng)。
有鑒于此,根據(jù)本發(fā)明的一個(gè)目的,提出了一種虛擬機(jī)的休眠與喚醒方法,包括:檢測虛擬機(jī)的工作狀態(tài);當(dāng)虛擬機(jī)的工作狀態(tài)為空閑狀態(tài)時(shí),對虛擬機(jī)進(jìn)行空閑計(jì)時(shí);當(dāng)空閑時(shí)間大于第一預(yù)設(shè)時(shí)間閾值時(shí),使虛擬機(jī)進(jìn)入休眠狀態(tài),并對虛擬機(jī)進(jìn)行休眠計(jì)時(shí);根據(jù)喚醒請求或休眠時(shí)間,喚醒虛擬機(jī)。
本發(fā)明提供的虛擬機(jī)的休眠與喚醒方法,檢測客戶端與虛擬機(jī)長時(shí)間無網(wǎng)絡(luò)連接或者客戶端與虛擬機(jī)的網(wǎng)絡(luò)連接長時(shí)間沒有數(shù)據(jù)傳輸時(shí),判斷虛擬機(jī)的工作狀態(tài)為空閑狀態(tài),此時(shí)開始記錄虛擬機(jī)的空閑時(shí)間,并在空閑時(shí)間大于第一預(yù)設(shè)時(shí)間閾值時(shí),使虛擬機(jī)進(jìn)入休眠狀態(tài),同時(shí)釋放虛擬機(jī)的cpu資源,并開始記錄虛擬機(jī)的休眠時(shí)間,當(dāng)接收到喚醒請求或休眠時(shí)間達(dá)到一定閾值時(shí),喚醒虛擬機(jī),本發(fā)明在不影響用戶體驗(yàn)的前提下,降低了服務(wù)器cpu和內(nèi)存的占用,滿足了使用有限的資源支持更多用戶接入的需求,有效降低了用戶投入成本。
根據(jù)本發(fā)明的上述虛擬機(jī)的休眠與喚醒方法,還可以具有以下技術(shù)特征:
在上述技術(shù)方案中,優(yōu)選地,使虛擬機(jī)進(jìn)入休眠狀態(tài)的同時(shí),還包括:切換虛擬機(jī)的內(nèi)存至硬盤交換分區(qū)。
在該技術(shù)方案中,在使虛擬機(jī)進(jìn)入休眠狀態(tài)的同時(shí),使虛擬機(jī)所使用的物理內(nèi)存換出到硬盤交換分區(qū)上以釋放物理內(nèi)存資源,實(shí)現(xiàn)物理內(nèi)存的合理及有效利用。
在上述技術(shù)方案中,優(yōu)選地,根據(jù)喚醒請求或休眠時(shí)間,喚醒虛擬機(jī),具體包括:接收喚醒請求;根據(jù)喚醒請求,喚醒虛擬機(jī)。
在該技術(shù)方案中,當(dāng)用戶使用客戶端連接服務(wù)器時(shí),接收到用戶使用客戶端連接服務(wù)器的請求時(shí),虛擬機(jī)管理系統(tǒng)負(fù)責(zé)快速喚醒該安卓虛擬機(jī),并且在安卓虛擬機(jī)喚醒運(yùn)行后如無客戶端連接或長時(shí)間無數(shù)據(jù)傳輸時(shí),安卓虛擬機(jī)繼續(xù)進(jìn)入休眠流程,能夠極大地增加服務(wù)器資源的使用效率。
在上述技術(shù)方案中,優(yōu)選地,根據(jù)喚醒請求或休眠時(shí)間,喚醒虛擬機(jī),具體包括:當(dāng)休眠時(shí)間大于第二預(yù)設(shè)時(shí)間閾值時(shí),喚醒虛擬機(jī)。
在該技術(shù)方案中,對于休眠的虛擬機(jī),有定期喚醒機(jī)制,當(dāng)虛擬機(jī)的休眠時(shí)間大于預(yù)設(shè)時(shí)間閾值時(shí),喚醒虛擬機(jī),確保用戶在客戶端能及時(shí)獲取虛擬機(jī)內(nèi)應(yīng)用的通知信息,也滿足了部分應(yīng)用需要不斷更新狀態(tài)的需求,給用戶帶來良好的使用體驗(yàn)。
在上述技術(shù)方案中,優(yōu)選地,喚醒虛擬機(jī)的同時(shí),還包括:切換虛擬機(jī)的內(nèi)存至物理內(nèi)存。
在該技術(shù)方案中,安卓虛擬機(jī)正常運(yùn)行后系統(tǒng)會(huì)自動(dòng)將使用的內(nèi)存數(shù)據(jù)從交換分區(qū)交換到物理內(nèi)存中,實(shí)現(xiàn)內(nèi)存資源的合理及有效利用。
在上述技術(shù)方案中,優(yōu)選地,檢測虛擬機(jī)的工作狀態(tài)之前,還包括:通過控制組將程序按虛擬機(jī)進(jìn)行分組;移植linux容器,通過linux容器運(yùn)行多個(gè)虛擬機(jī)。
在該技術(shù)方案中,通過控制組將程序按虛擬機(jī)進(jìn)行分組,并移植linux容器,通過linux容器運(yùn)行多程序,能夠在服務(wù)器創(chuàng)建更多的安卓虛擬機(jī),支持更多的用戶登錄云端安卓虛擬機(jī)系統(tǒng),在服務(wù)器配置一定的情況下,支持的用戶數(shù)大大增加。
根據(jù)本發(fā)明的另一個(gè)目的,提出了一種虛擬機(jī)的休眠與喚醒系統(tǒng),包括:檢測單元,用于檢測虛擬機(jī)的工作狀態(tài);計(jì)時(shí)單元,用于當(dāng)虛擬機(jī)的工作狀態(tài)為空閑狀態(tài)時(shí),對虛擬機(jī)進(jìn)行空閑計(jì)時(shí);控制單元,用于當(dāng)空閑時(shí)間大于第一預(yù)設(shè)時(shí)間閾值時(shí),使虛擬機(jī)進(jìn)入休眠狀態(tài);以及根據(jù)喚醒請求或休眠時(shí)間,喚醒虛擬機(jī);計(jì)時(shí)單元,還用于對虛擬機(jī)進(jìn)行休眠計(jì)時(shí)。
本發(fā)明提供的虛擬機(jī)的休眠與喚醒系統(tǒng),檢測單元檢測客戶端與虛擬機(jī)長時(shí)間無網(wǎng)絡(luò)連接或者客戶端與虛擬機(jī)的網(wǎng)絡(luò)連接長時(shí)間沒有數(shù)據(jù)傳輸時(shí),判斷虛擬機(jī)的工作狀態(tài)為空閑狀態(tài),此時(shí)計(jì)時(shí)單元開始記錄虛擬機(jī)的空閑時(shí)間,并在空閑時(shí)間大于第一預(yù)設(shè)時(shí)間閾值時(shí),控制單元使虛擬機(jī)進(jìn)入休眠狀態(tài),同時(shí)釋放虛擬機(jī)的cpu資源,由計(jì)時(shí)單元開始記錄虛擬機(jī)的休眠時(shí)間,控制單元在接收到喚醒請求或休眠時(shí)間達(dá)到一定閾值時(shí),喚醒虛擬機(jī),本發(fā)明在不影響用戶體驗(yàn)的前提下,降低了服務(wù)器cpu和內(nèi)存的占用,滿足了使用有限的資源支持更多用戶接入的需求,有效降低了用戶投入成本。
根據(jù)本發(fā)明的上述虛擬機(jī)的休眠與喚醒系統(tǒng),還可以具有以下技術(shù)特征:
在上述技術(shù)方案中,優(yōu)選地,控制單元,還用于:切換虛擬機(jī)的內(nèi)存至硬盤交換分區(qū)。
在該技術(shù)方案中,控制單元在使虛擬機(jī)進(jìn)入休眠狀態(tài)的同時(shí),使虛擬機(jī)所使用的物理內(nèi)存換出到硬盤交換分區(qū)上以釋放物理內(nèi)存資源,實(shí)現(xiàn)物理內(nèi)存的合理及有效利用。
在上述技術(shù)方案中,優(yōu)選地,控制單元,還用于:接收喚醒請求;根據(jù)喚醒請求,喚醒虛擬機(jī)。
在該技術(shù)方案中,當(dāng)用戶使用客戶端連接服務(wù)器時(shí),控制單元接收到用戶使用客戶端連接服務(wù)器的請求時(shí),快速喚醒該安卓虛擬機(jī),并且在安卓虛擬機(jī)喚醒運(yùn)行后如無客戶端連接或長時(shí)間無數(shù)據(jù)傳輸時(shí),安卓虛擬機(jī)繼續(xù)進(jìn)入休眠流程,能夠極大地增加服務(wù)器資源的使用效率。
在上述技術(shù)方案中,優(yōu)選地,控制單元,還用于:當(dāng)休眠時(shí)間大于第二預(yù)設(shè)時(shí)間閾值時(shí),喚醒虛擬機(jī)。
在該技術(shù)方案中,對于休眠的虛擬機(jī),有定期喚醒機(jī)制,當(dāng)虛擬機(jī)的休眠時(shí)間大于預(yù)設(shè)時(shí)間閾值時(shí),控制單元喚醒虛擬機(jī),確保用戶在客戶端能及時(shí)獲取虛擬機(jī)內(nèi)應(yīng)用的通知信息,也滿足了部分應(yīng)用需要不斷更新狀態(tài)的需求,給用戶帶來良好的使用體驗(yàn)。
在上述技術(shù)方案中,優(yōu)選地,控制單元,還用于:切換虛擬機(jī)的內(nèi)存至物理內(nèi)存。
在該技術(shù)方案中,安卓虛擬機(jī)正常運(yùn)行后控制單元會(huì)自動(dòng)將使用的內(nèi)存數(shù)據(jù)從交換分區(qū)交換到物理內(nèi)存中,實(shí)現(xiàn)內(nèi)存資源的合理及有效利用。
在上述技術(shù)方案中,優(yōu)選地,還包括:預(yù)處理單元,用于通過控制組將程序按虛擬機(jī)進(jìn)行分組;以及移植linux容器,通過linux容器運(yùn)行多個(gè)虛擬機(jī)。
在該技術(shù)方案中,由預(yù)處理單元通過控制組將程序按虛擬機(jī)進(jìn)行分組,并移植linux容器,通過linux容器運(yùn)行多個(gè)安卓虛擬機(jī),能夠在服務(wù)器創(chuàng)建更多的安卓虛擬機(jī),支持更多的用戶登錄云端安卓虛擬機(jī)系統(tǒng),在服務(wù)器配置一定的情況下,支持的用戶數(shù)大大增加。
本發(fā)明的附加方面和優(yōu)點(diǎn)將在下面的描述部分中變得明顯,或通過本發(fā)明的實(shí)踐了解到。
附圖說明
本發(fā)明的上述和/或附加的方面和優(yōu)點(diǎn)從結(jié)合下面附圖對實(shí)施例的描述中將變得明顯和容易理解,其中:
圖1示出了現(xiàn)有技術(shù)中android虛擬機(jī)的休眠系統(tǒng)結(jié)構(gòu)示意框圖;
圖2示出了本發(fā)明的一個(gè)實(shí)施例的虛擬機(jī)的休眠與喚醒方法的流程示意圖;
圖3示出了本發(fā)明的一個(gè)實(shí)施例的虛擬機(jī)的休眠與喚醒系統(tǒng)的示意框圖;
圖4示出了本發(fā)明的一個(gè)具體實(shí)施例的android虛擬機(jī)的休眠系統(tǒng)結(jié)構(gòu)示意框圖;
圖5示出了本發(fā)明的一個(gè)具體實(shí)施例的系統(tǒng)分組的邏輯結(jié)構(gòu)示意框圖;
圖6示出了本發(fā)明的一個(gè)具體實(shí)施例的android虛擬機(jī)的休眠流程示意圖;
圖7示出了本發(fā)明的一個(gè)具體實(shí)施例的android虛擬機(jī)的請求喚醒流程示意圖;
圖8示出了本發(fā)明的一個(gè)具體實(shí)施例的android虛擬機(jī)的定期喚醒流程示意圖。
具體實(shí)施方式
為了能夠更清楚地理解本發(fā)明的上述目的、特征和優(yōu)點(diǎn),下面結(jié)合附圖和具體實(shí)施方式對本發(fā)明進(jìn)行進(jìn)一步的詳細(xì)描述。需要說明的是,在不沖突的情況下,本申請的實(shí)施例及實(shí)施例中的特征可以相互組合。
在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本發(fā)明,但是,本發(fā)明還可以采用其他不同于在此描述的其他方式來實(shí)施,因此,本發(fā)明的保護(hù)范圍并不限于下面公開的具體實(shí)施例的限制。
本發(fā)明第一方面的實(shí)施例,提出一種虛擬機(jī)的休眠與喚醒方法,圖2示出了本發(fā)明的一個(gè)實(shí)施例的虛擬機(jī)的休眠與喚醒方法的流程示意圖。其中,該方法包括:
步驟200,檢測虛擬機(jī)的工作狀態(tài);
步驟202,當(dāng)虛擬機(jī)的工作狀態(tài)為空閑狀態(tài)時(shí),對虛擬機(jī)進(jìn)行空閑計(jì)時(shí);
步驟204,判斷空閑時(shí)間是否大于第一預(yù)設(shè)時(shí)間閾值;
步驟206,當(dāng)空閑時(shí)間大于第一預(yù)設(shè)時(shí)間閾值時(shí),使虛擬機(jī)進(jìn)入休眠狀態(tài),切換虛擬機(jī)的內(nèi)存至硬盤交換分區(qū),并對虛擬機(jī)進(jìn)行休眠計(jì)時(shí);
步驟208,根據(jù)喚醒請求或休眠時(shí)間,喚醒虛擬機(jī)。
本發(fā)明提供的虛擬機(jī)的休眠與喚醒方法,檢測客戶端與虛擬機(jī)長時(shí)間無網(wǎng)絡(luò)連接或者客戶端與虛擬機(jī)的網(wǎng)絡(luò)連接長時(shí)間沒有數(shù)據(jù)傳輸時(shí),判斷虛擬機(jī)的工作狀態(tài)為空閑狀態(tài),此時(shí)開始記錄虛擬機(jī)的空閑時(shí)間,并在空閑時(shí)間大于第一預(yù)設(shè)時(shí)間閾值時(shí),使虛擬機(jī)進(jìn)入休眠狀態(tài),同時(shí)釋放虛擬機(jī)的cpu資源,并開始記錄虛擬機(jī)的休眠時(shí)間,當(dāng)接收到喚醒請求或休眠時(shí)間達(dá)到一定閾值時(shí),喚醒虛擬機(jī),本發(fā)明在不影響用戶體驗(yàn)的前提下,降低了服務(wù)器cpu和內(nèi)存的占用,滿足了使用有限的資源支持更多用戶接入的需求,有效降低了用戶投入成本。在使虛擬機(jī)進(jìn)入休眠狀態(tài)的同時(shí),使虛擬機(jī)所使用的物理內(nèi)存換出到硬盤交換分區(qū)上以釋放物理內(nèi)存資源,實(shí)現(xiàn)物理內(nèi)存的合理及有效利用。
在本發(fā)明的一個(gè)實(shí)施例中,如圖2所示,優(yōu)選地,該方法包括:
步驟200,檢測虛擬機(jī)的工作狀態(tài);
步驟202,當(dāng)虛擬機(jī)的工作狀態(tài)為空閑狀態(tài)時(shí),對虛擬機(jī)進(jìn)行空閑計(jì)時(shí);
步驟204,判斷空閑時(shí)間是否大于第一預(yù)設(shè)時(shí)間閾值;
步驟206,當(dāng)空閑時(shí)間大于第一預(yù)設(shè)時(shí)間閾值時(shí),使虛擬機(jī)進(jìn)入休眠狀態(tài),切換虛擬機(jī)的內(nèi)存至硬盤交換分區(qū),并對虛擬機(jī)進(jìn)行休眠計(jì)時(shí);
步驟2082,接收喚醒請求;
步驟2084,根據(jù)喚醒請求,喚醒虛擬機(jī)。
在該實(shí)施例中,當(dāng)用戶使用客戶端連接服務(wù)器時(shí),接收到用戶使用客戶端連接服務(wù)器的請求時(shí),虛擬機(jī)管理系統(tǒng)負(fù)責(zé)快速喚醒該安卓虛擬機(jī),并且在安卓虛擬機(jī)喚醒運(yùn)行后如無客戶端連接或長時(shí)間無數(shù)據(jù)傳輸時(shí),安卓虛擬機(jī)繼續(xù)進(jìn)入休眠流程,能夠極大地增加服務(wù)器資源的使用效率。
在本發(fā)明的一個(gè)實(shí)施例中,優(yōu)選地,該方法包括:
步驟200,檢測虛擬機(jī)的工作狀態(tài);
步驟202,當(dāng)虛擬機(jī)的工作狀態(tài)為空閑狀態(tài)時(shí),對虛擬機(jī)進(jìn)行空閑計(jì)時(shí);
步驟204,判斷空閑時(shí)間是否大于第一預(yù)設(shè)時(shí)間閾值;
步驟206,當(dāng)空閑時(shí)間大于第一預(yù)設(shè)時(shí)間閾值時(shí),使虛擬機(jī)進(jìn)入休眠狀態(tài),切換虛擬機(jī)的內(nèi)存至硬盤交換分區(qū),并對虛擬機(jī)進(jìn)行休眠計(jì)時(shí);
步驟2082,接收喚醒請求;
步驟2084,根據(jù)喚醒請求,喚醒虛擬機(jī);
步驟2086,判斷休眠時(shí)間是否大于第二預(yù)設(shè)時(shí)間閾值;
步驟2088,當(dāng)休眠時(shí)間大于第二預(yù)設(shè)時(shí)間閾值時(shí),喚醒虛擬機(jī)。
在該實(shí)施例中,對于休眠的虛擬機(jī),有定期喚醒機(jī)制,當(dāng)虛擬機(jī)的休眠時(shí)間大于預(yù)設(shè)時(shí)間閾值時(shí),喚醒虛擬機(jī),確保用戶在客戶端能及時(shí)獲取虛擬機(jī)內(nèi)應(yīng)用的通知信息,也滿足了部分應(yīng)用需要不斷更新狀態(tài)的需求,給用戶帶來良好的使用體驗(yàn)。
在本發(fā)明的一個(gè)實(shí)施例中,優(yōu)選地,喚醒虛擬機(jī)的同時(shí),還包括:切換虛擬機(jī)的內(nèi)存至物理內(nèi)存。
在該實(shí)施例中,安卓虛擬機(jī)正常運(yùn)行后系統(tǒng)會(huì)自動(dòng)將使用的內(nèi)存數(shù)據(jù)從交換分區(qū)交換到物理內(nèi)存中,實(shí)現(xiàn)內(nèi)存資源的合理及有效利用。
在本發(fā)明的一個(gè)實(shí)施例中,優(yōu)選地,檢測虛擬機(jī)的工作狀態(tài)之前,還包括:通過控制組將程序按虛擬機(jī)進(jìn)行分組;移植linux容器,通過linux容器運(yùn)行多個(gè)虛擬機(jī)。
在該實(shí)施例中,通過控制組將程序按虛擬機(jī)進(jìn)行分組,并移植linux容器,通過linux容器運(yùn)行多程序,能夠在服務(wù)器創(chuàng)建更多的安卓虛擬機(jī),支持更多的用戶登錄云端安卓虛擬機(jī)系統(tǒng),在服務(wù)器配置一定的情況下,支持的用戶數(shù)大大增加。
本發(fā)明第二方面的實(shí)施例,提出一種虛擬機(jī)的休眠與喚醒系統(tǒng)300,圖3示出了本發(fā)明的一個(gè)實(shí)施例的虛擬機(jī)的休眠與喚醒系統(tǒng)300的示意框圖。其中,該系統(tǒng)包括:
檢測單元302,用于檢測虛擬機(jī)的工作狀態(tài);
計(jì)時(shí)單元304,用于當(dāng)虛擬機(jī)的工作狀態(tài)為空閑狀態(tài)時(shí),對虛擬機(jī)進(jìn)行空閑計(jì)時(shí);
控制單元306,用于當(dāng)空閑時(shí)間大于第一預(yù)設(shè)時(shí)間閾值時(shí),使虛擬機(jī)進(jìn)入休眠狀態(tài);以及根據(jù)喚醒請求或休眠時(shí)間,喚醒虛擬機(jī);
計(jì)時(shí)單元304,還用于對虛擬機(jī)進(jìn)行休眠計(jì)時(shí)。
本發(fā)明提供的虛擬機(jī)的休眠與喚醒系統(tǒng)300,檢測單元302檢測客戶端與虛擬機(jī)長時(shí)間無網(wǎng)絡(luò)連接或者客戶端與虛擬機(jī)的網(wǎng)絡(luò)連接長時(shí)間沒有數(shù)據(jù)傳輸時(shí),判斷虛擬機(jī)的工作狀態(tài)為空閑狀態(tài),此時(shí)計(jì)時(shí)單元304開始記錄虛擬機(jī)的空閑時(shí)間,并在空閑時(shí)間大于第一預(yù)設(shè)時(shí)間閾值時(shí),控制單元306使虛擬機(jī)進(jìn)入休眠狀態(tài),同時(shí)釋放虛擬機(jī)的cpu資源,由計(jì)時(shí)單元304開始記錄虛擬機(jī)的休眠時(shí)間,控制單元306在接收到喚醒請求或休眠時(shí)間達(dá)到一定閾值時(shí),喚醒虛擬機(jī),本發(fā)明在不影響用戶體驗(yàn)的前提下,降低了服務(wù)器cpu和內(nèi)存的占用,滿足了使用有限的資源支持更多用戶接入的需求,有效降低了用戶投入成本。
在本發(fā)明的一個(gè)實(shí)施例中,優(yōu)選地,控制單元306,還用于:切換虛擬機(jī)的內(nèi)存至硬盤交換分區(qū)。
在該實(shí)施例中,控制單元306在使虛擬機(jī)進(jìn)入休眠狀態(tài)的同時(shí),使虛擬機(jī)所使用的物理內(nèi)存換出到硬盤交換分區(qū)上以釋放物理內(nèi)存資源,實(shí)現(xiàn)物理內(nèi)存的合理及有效利用。
在本發(fā)明的一個(gè)實(shí)施例中,優(yōu)選地,控制單元306,還用于:接收喚醒請求;根據(jù)喚醒請求,喚醒虛擬機(jī)。
在該實(shí)施例中,當(dāng)用戶使用客戶端連接服務(wù)器時(shí),控制單元306接收到用戶使用客戶端連接服務(wù)器的請求時(shí),快速喚醒該安卓虛擬機(jī),并且在安卓虛擬機(jī)喚醒運(yùn)行后如無客戶端連接或長時(shí)間無數(shù)據(jù)傳輸時(shí),安卓虛擬機(jī)繼續(xù)進(jìn)入休眠流程,能夠極大地增加服務(wù)器資源的使用效率。
在本發(fā)明的一個(gè)實(shí)施例中,優(yōu)選地,控制單元306,還用于:當(dāng)休眠時(shí)間大于第二預(yù)設(shè)時(shí)間閾值時(shí),喚醒虛擬機(jī)。
在該實(shí)施例中,對于休眠的虛擬機(jī),有定期喚醒機(jī)制,當(dāng)虛擬機(jī)的休眠時(shí)間大于預(yù)設(shè)時(shí)間閾值時(shí),控制單元306喚醒虛擬機(jī),確保用戶在客戶端能及時(shí)獲取虛擬機(jī)內(nèi)應(yīng)用的通知信息,也滿足了部分應(yīng)用需要不斷更新狀態(tài)的需求,給用戶帶來良好的使用體驗(yàn)。
在本發(fā)明的一個(gè)實(shí)施例中,優(yōu)選地,控制單元306,還用于:切換虛擬機(jī)的內(nèi)存至物理內(nèi)存。
在該實(shí)施例中,安卓虛擬機(jī)正常運(yùn)行后控制單元306會(huì)自動(dòng)將使用的內(nèi)存數(shù)據(jù)從交換分區(qū)交換到物理內(nèi)存中,實(shí)現(xiàn)內(nèi)存資源的合理及有效利用。
在本發(fā)明的一個(gè)實(shí)施例中,如圖3所示,優(yōu)選地,還包括:預(yù)處理單元308,用于通過控制組將程序按虛擬機(jī)進(jìn)行分組;以及移植linux容器,通過linux容器運(yùn)行多個(gè)虛擬機(jī)。
在該實(shí)施例中,由預(yù)處理單元308通過控制組將程序按虛擬機(jī)進(jìn)行分組,并移植linux容器,通過linux容器運(yùn)行多個(gè)虛擬機(jī),能夠在服務(wù)器創(chuàng)建更多的安卓虛擬機(jī),支持更多的用戶登錄云端安卓虛擬機(jī)系統(tǒng),在服務(wù)器配置一定的情況下,支持的用戶數(shù)大大增加。
本發(fā)明使用操作系統(tǒng)中的cgroup子系統(tǒng)來使不活躍的android虛擬機(jī)處于休眠狀態(tài)或者近乎休眠狀態(tài)以釋放cpu資源,同時(shí)將不活躍的android虛擬機(jī)所使用的物理內(nèi)存換出到swap分區(qū)上(硬盤)以釋放物理內(nèi)存資源。能夠在服務(wù)器上創(chuàng)建更多的android虛擬機(jī),大大增加了服務(wù)器資源的使用效率和服務(wù)器能容納用戶接入的數(shù)量,系統(tǒng)結(jié)構(gòu)如圖4所示,具體實(shí)現(xiàn)方法如下:
(1)android系統(tǒng)啟用cgroup子系統(tǒng)
cgroup子系統(tǒng)提供的一種可以限制、記錄、隔離進(jìn)程組所使用的物理資源(如:cpu,memory,io等等)的機(jī)制,cgroup子系統(tǒng)是將任意進(jìn)程進(jìn)行分組化管理的linux內(nèi)核功能。cgroup子系統(tǒng)本身是提供將進(jìn)程進(jìn)行分組化管理的功能和接口的基礎(chǔ)結(jié)構(gòu),i/o或內(nèi)存的分配控制等具體的資源管理功能是通過這個(gè)功能來實(shí)現(xiàn)的。在android系統(tǒng)源碼中修改./arch/x86/configs/android-x86_64_defconfig文件內(nèi)容,重新編譯源碼使該模塊在系統(tǒng)中可用。cgroup子系統(tǒng)作為系統(tǒng)核心的一部分,將系統(tǒng)資源隔離分組,使多組任務(wù),利用cgroup子系統(tǒng)進(jìn)行系統(tǒng)分組的邏輯結(jié)構(gòu)如圖5所示,運(yùn)行獨(dú)立的android操作系統(tǒng)可看作邏輯上的一個(gè)任務(wù),系統(tǒng)內(nèi)核通過cgroup子系統(tǒng)機(jī)制將任務(wù)分組,每個(gè)android操作系統(tǒng)工作在一個(gè)cgroup子系統(tǒng)分組中,彼此之間相互獨(dú)立,達(dá)到了多android虛擬系統(tǒng)同時(shí)運(yùn)行的目的。
(2)lxc容器移植進(jìn)android系統(tǒng)并進(jìn)行適配
在采用容器技術(shù)的服務(wù)器虛擬化實(shí)現(xiàn)中,要求被虛擬化實(shí)現(xiàn)的系統(tǒng)能夠多實(shí)例運(yùn)行,而android系統(tǒng)原生不支持這種運(yùn)行方式,需要修改如下子系統(tǒng)以適配多實(shí)例運(yùn)行:framebuffer、input、binder。具體實(shí)現(xiàn)方法是使用namespace命名空間對這三個(gè)子系統(tǒng)進(jìn)行隔離,每個(gè)android運(yùn)行實(shí)例對應(yīng)一個(gè)命名空間,這三個(gè)子系統(tǒng)運(yùn)行在當(dāng)前實(shí)例的命名空間中。
(3)android虛擬機(jī)休眠喚醒調(diào)度
1)android虛擬機(jī)休眠
如圖6所示,步驟602,android虛擬機(jī)管理系統(tǒng)啟動(dòng)android虛擬機(jī)后,android虛擬機(jī)記錄客戶端的連接狀態(tài),每次狀態(tài)變化都要上報(bào)給android虛擬機(jī)管理系統(tǒng)。步驟604,android虛擬機(jī)檢測到客戶端和虛擬機(jī)長時(shí)間無網(wǎng)絡(luò)連接或者客戶端和虛擬機(jī)的網(wǎng)絡(luò)連接長時(shí)間沒有數(shù)據(jù)傳輸,則系統(tǒng)認(rèn)為該虛擬機(jī)為空閑狀態(tài)。android虛擬機(jī)將該狀態(tài)上報(bào)android虛擬機(jī)管理系統(tǒng)。步驟606,android虛擬機(jī)管理系統(tǒng)對空閑的android虛擬機(jī)進(jìn)行計(jì)時(shí),當(dāng)達(dá)到管理員設(shè)置的空閑時(shí)間閾值時(shí),則使android虛擬機(jī)進(jìn)入休眠狀態(tài)。休眠android虛擬機(jī)時(shí)調(diào)用“l(fā)xc_cgroup-nnamecpu.shares1”命令釋放cpu資源,調(diào)用“l(fā)xc_cgroup-nnamememory.force_empty1”將虛擬機(jī)使用的內(nèi)存切換到硬盤swap分區(qū)以釋放物理內(nèi)存。
2)android虛擬機(jī)喚醒
android虛擬機(jī)喚醒分為兩種情況:有客戶端請求時(shí)快速喚醒a(bǔ)ndroid虛擬機(jī)、定期喚醒休眠的android虛擬機(jī)。
有客戶端請求時(shí)快速喚醒a(bǔ)ndroid虛擬機(jī):如圖7所示,步驟702,用戶對應(yīng)的虛擬機(jī)處于休眠狀態(tài),步驟704,用戶使用客戶端連接服務(wù)器,步驟706,android虛擬機(jī)管理系統(tǒng)負(fù)責(zé)快速喚醒該android虛擬機(jī),調(diào)用命令“l(fā)xc_cgroup-nnamecpu.shares1024”取消對該android虛擬機(jī)的cpu使用限制,android虛擬機(jī)正常運(yùn)行后系統(tǒng)會(huì)自動(dòng)將使用的內(nèi)存數(shù)據(jù)從swap分區(qū)交換到物理內(nèi)存中。喚醒運(yùn)行后的android虛擬機(jī)如無客戶端連接或長時(shí)間無數(shù)據(jù)傳輸,則進(jìn)入休眠流程。
定期喚醒休眠的android虛擬機(jī):對于長時(shí)間休眠的虛擬機(jī),有定期喚醒機(jī)制,喚醒虛擬機(jī)定期運(yùn)行內(nèi)部應(yīng)用,確保用戶在客戶端能及時(shí)獲取虛擬機(jī)內(nèi)應(yīng)用的通知信息,也滿足了部分應(yīng)用需要不斷更新狀態(tài)的需求,給用戶帶來良好的體驗(yàn)。如圖8所示,android虛擬機(jī)管理系統(tǒng)對處于休眠狀態(tài)的android虛擬機(jī)進(jìn)行管理,步驟802,android虛擬機(jī)處于休眠狀態(tài),步驟804,當(dāng)虛擬機(jī)休眠時(shí)間達(dá)到管理員設(shè)置的休眠時(shí)間閾值,步驟806,android虛擬機(jī)管理系統(tǒng)需要喚醒a(bǔ)ndroid虛擬機(jī),調(diào)用命令“l(fā)xc_cgroup-nnamecpu.shares1024”取消對該android虛擬機(jī)的cpu使用限制,android虛擬機(jī)正常運(yùn)行后系統(tǒng)會(huì)自動(dòng)將使用的內(nèi)存數(shù)據(jù)從swap分區(qū)交換到物理內(nèi)存中。喚醒運(yùn)行后的android虛擬機(jī)如無客戶端連接或長時(shí)間無數(shù)據(jù)傳輸,則進(jìn)入休眠流程。
本發(fā)明在不影響用戶體驗(yàn)的前提下,降低了cpu和內(nèi)存的占用,滿足了使用有限的資源支持更多用戶接入的需求,有效降低了用戶投入成本。
在本說明書的描述中,術(shù)語“一個(gè)實(shí)施例”、“一些實(shí)施例”、“具體實(shí)施例”等的描述意指結(jié)合該實(shí)施例或示例描述的具體特征、結(jié)構(gòu)、材料或特點(diǎn)包含于本發(fā)明的至少一個(gè)實(shí)施例或示例中。在本說明書中,對上述術(shù)語的示意性表述不一定指的是相同的實(shí)施例或?qū)嵗?。而且,描述的具體特征、結(jié)構(gòu)、材料或特點(diǎn)可以在任何的一個(gè)或多個(gè)實(shí)施例或示例中以合適的方式結(jié)合。
以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。