[發明專利]一種基于內核虛擬機調度策略的實現方法在審
| 申請號: | 201010208491.0 | 申請日: | 2010-06-24 |
| 公開(公告)號: | CN101894047A | 公開(公告)日: | 2010-11-24 |
| 發明(設計)人: | 丁濤;郝沁汾;張冰;董翰飛 | 申請(專利權)人: | 北京航空航天大學 |
| 主分類號: | G06F9/50 | 分類號: | G06F9/50;G06F9/455 |
| 代理公司: | 北京慧泉知識產權代理有限公司 11232 | 代理人: | 王順榮;唐愛華 |
| 地址: | 100191 北京市*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 內核 虛擬機 調度 策略 實現 方法 | ||
1.一種基于內核虛擬機調度策略的實現方法,其特征在于:該方法具體步驟如下:
步驟一:將計算機操作系統即Linux的進程分為普通進程,虛擬機進程和實時進程,使虛擬機進程的優先級介于普通進程和實時進程之間,并為其提供特殊的調度算法;具體實現步驟如下:
步驟1:標識內核虛擬機進程;在task_struct結構體中設置特殊標志,將KVM進程進行標識;為task_struct結構增加一個新的屬性is_kvm,并且它只有兩種狀態0和1,其中1代表該進程是KVM進程,0代表其他進程;該屬性在進程被創建的時候賦值;在Linux內核執行調度程序時首先檢測task_struct結構體中的is_kvm的值,如果是KVM進程,則采取特殊的調度策略,從而避免了和普通進程競爭系統資源的問題;
步驟2:設置專門的虛擬機就緒隊列;將Linux進程就緒隊列分為虛擬機進程就緒隊列和普通進程就緒隊列,分別通過兩個指針進行訪問;Linux內核進行進程調度時都會先檢索虛擬機就緒隊列,選擇一個就緒的虛擬機進程運行,只有在虛擬機進程就緒隊列為空,或是每個虛擬機進程的時間片為0時,再去調度普通進程就緒隊列;在所有進程就緒隊列的所有進程的時間片都為0時,再對所有進程賦以新的時間片,進行新一輪的調度;
步驟3:細分虛擬機就緒隊列;將虛擬機就緒隊列再細分為under隊列和over隊列,under隊列中是時間片不為0的虛擬機進程,over隊列中是時間片為0的虛擬機進程;最開始所有的虛擬機就緒進程都在under隊列,每個虛擬機具有相同的優先級,以保證每個虛擬機得到公平的對待;Linux內核每次從under隊列的隊首取一個就緒的虛擬機進程,使之成為下一個被調度的進程,該虛擬機進程的時間片隨著運行時間而減小,當該虛擬機進程的運行時間達到且其時間片不為0時,將該虛擬機進程移到under隊列的隊尾,接著選擇under隊列的下一個隊首進程投入運行;當某一個虛擬機進程的時間片減少為0時,便被放入到over隊列;當under隊列為空時,互換under隊列和over隊列的指針,并重新賦值所有虛擬機進程的初始時間片值,繼續參與調度,周而復始;
步驟4:設置虛擬機進程為不可搶占進程;如果虛擬機進程在運行期間,由一個優先級更高的進程到來,此時并不是直接搶占虛擬機進程的運行權,而是將虛擬機進程的need_shed置位,待此虛擬機進程運行完畢讓出處理器資源后,立即進行調度,以保證虛擬機進程在運行期間不可搶占;
步驟二:根據虛擬機中業務的需求,動態調整各虛擬機的資源,使虛擬機更好的適應其客戶操作系統中業務的需求;具體實現步驟為:
步驟1:根據虛擬機中的業務需求,將其分為計算密集型和I/O密集型;tasK_struct結構體的sleep_avg域記錄一個虛擬機進程的休眠時間和執行時間,當一個進程從休眠狀態恢復到執行狀態,sleep_avg會隨其休眠時間的長短而增長,直到一個預定的閾值為止;相反,虛擬機進程每運行一個時鐘節拍,sleep_avg就相應的減少,直到0為止;
步驟2:在進行重新計算優先級和時間片時,根據sleep_avg值對兩種不同的虛擬機進行不同的獎懲;每一個虛擬機進程都有一個相同的初始優先級,當所有虛擬機進程的時間片用完時,需要重新計算優先級和時間片,此時根據sleep_avg的值分別對每一個虛擬機進程的優先級進行調整,以便使各個虛擬機進程在新一輪調度中能夠更好的滿足業務的需求,達到自適應調整的能力。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京航空航天大學,未經北京航空航天大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201010208491.0/1.html,轉載請聲明來源鉆瓜專利網。





