System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術屬于微內核,更為具體地講,涉及一種基于微內核hypervisor的vcpu調度方法。
技術介紹
1、hypervisor(虛擬機監控器)是一種虛擬化技術,它允許在一臺物理計算機上創建和管理多個虛擬化的計算環境,每個環境都可以運行獨立的操作系統和應用程序。hypervisor的作用類似于一個虛擬化的操作系統,它通過分配計算資源和隔離不同的虛擬機,使得它們能夠在同一臺物理計算機上同時運行而互不干擾。type1類型的hypervisor沒有宿主操作系統。其直接運行在物理硬件之上,直接管理各種物理資源,同時管理并運行客戶機操作系統。type2類型的hypervisor,其寄生的宿主操作系統擁有對硬件平臺和資源(包括cpu和物理內存等)的全部控制權。
2、在虛擬化環境中,由于hypervisor與客戶操作系統之間存在語義縫隙,導致客戶操作系統對于內核自旋鎖的優化機制失效,帶來lhp(lock?holder?preemption,鎖持有者搶占)和lwp(lock?waiter?preemption,鎖等待者搶占)等同步性能問題,導致嚴重的同步開銷,降低系統性能。為了解決同步性能問題,目前行業內已經提出了一些技術方案,其中全虛擬化方案由于不需要修改客戶操作系統源碼,得到了較大關注。在全虛擬化方案中,具有代表性的方案包括vcpu同步調度方案、驅動檢測lhp方案和基于ipi驅使的調度方案。
3、vcpu同步調度方案是將客戶操作系統的vcpu(虛擬中央處理單元)分配到不同的物理cpu上進行同步調度,以便實現它們的同
4、驅動檢測lhp方案通過在客戶操作系統中引入特殊的驅動程序,系統能夠識別不會持有自旋鎖的“安全點”,并在非“安全點”處禁止搶占,從而避免lhp問題。此方法還引入了搶占窗口的概念,以確保調度的公平性。此方案雖然能夠有效地識別鎖的持有者,但是配置繁瑣且需安裝特殊的無鎖設備驅動,增加了實施的復雜性。
5、基于ipi驅使的調度方案基于在研究中發現的ipi信號通常在某些自旋鎖釋放之前被觸發的情況,通過利用ipi信號,在hypervisor層可以動態地識別鎖的持有者并延遲其被搶占的時間,以達到避免lhp的目的。此方案雖然可以在hypervisor層可以動態地識別鎖的持有者并作出一定的調度處理,但基于ipi中斷只能識別出用戶級別的同步,對其它類型的內核自旋鎖無效。
技術實現思路
1、本專利技術的目的在于克服現有技術的不足,提供一種基于微內核hypervisor的vcpu調度方法,微內核hypervisor基于鎖檢測與協同公平調度策略來進行vcpu調度,能夠減少hypervisor中因鎖競爭而導致的性能開銷,從而提高同步性能,同時無需修改客戶操作系統源碼,確保系統的穩定性和可移植性。
2、為了實現上述專利技術目的,本專利技術基于微內核hypervisor的vcpu調度方法,每當進入一個新的調度時間片,微內核hypervisor調用時鐘處理函數進行vcpu調度,具體包括以下步驟:
3、s1:微內核hypervisor獲取當前被調度vcpu;
4、s2:令被調度vcpu的時間片數量n=n-1;
5、s3:判斷被調度vcpu是否已開啟監測,如果未開啟,進入步驟s4,否則進入步驟s19;
6、s4:判斷被調度vcpu的當前線程是否處于內核態,如果不是,進入步驟s5,否則進入步驟s6;
7、s5:將被調度vcpu標記為普通vcpu,然后進入步驟s18;
8、s6:判斷被調度vcpu是否存在線程切換,如果發生線程切換,進入步驟s7,否則進入步驟s9;
9、s7:將被調度vcpu標記為普通vcpu,然后進入步驟s8;
10、s8:將開啟監測的vcpu的監測關閉,進入步驟s19;
11、s9:從被調度vcpu的線程信息結構體thread_info中讀取搶占計數器preempt_count的值;
12、s10:判斷是否preempt_count=0,如果是,進入步驟s18,否則進入步驟s11;
13、s11:根據搶占計數器preempt_count的歷史記錄,確定preempt_count值在本時間片中是否發生變化,如果發生變化,則不作任何操作,如果未發生變化,則確定preempt_count連續保持為當前值的時間片數量;
14、s12:判斷被調度vcpu的監測時間是否達到預設上限,如果是,進入步驟s13,否則進入步驟s19;
15、s13:判斷被調度vcpu是否是鎖相關vcpu,如果是,進入步驟s14,否則進入步驟s17;鎖相關vcpu的判斷方法為:如果被調度vcpu的preempt_count值連續保持為當前值的時間片數量大于預設閾值,則不是鎖相關vcpu,否則是鎖相關vcpu;
16、s14:將被調度vcpu標記為同步問題vcpu;
17、s15:為被調度vcpu增加額外時間片,額外時間片的數量根據實際情況確定,令被調度vcpu的時間片增加次數加1;
18、s16:將開啟監測的vcpu的監測關閉,進入步驟s21;
19、s17:將被調度vcpu標記為例外vcpu,然后進入步驟s18;
20、s18:保存被調度vcpu的剩余時間片,然后調用vcpu調用函數,重新確定被調度vcpu;vcpu調用函數包括以下步驟:
21、1)判斷被調度vcpu是否是同步問題vcpu,如果是,進入步驟2),否則進入步驟3);
22、2)判斷被調度vcpu的時間片增加次數是否達到預設上限,如果是,進入步驟8),否則進入步驟4);
23、3)判斷被調度vcpu是否是例外vcpu,如果是,進入步驟8),否則進入步驟4);
24、4)判斷被調度vcpu的當前線程是否處于內核態,如果是,進入步驟5),否則進入步驟8);
25、5)從被調度vcpu的線程信息結構體thread_info中讀取搶占計數器preempt_count的值;
26、6)判斷是否preempt_count=0,如果是,則進入步驟8),否則進入步驟7);
27、7)對被調度vcpu的當前線程開啟監測,記錄每個時間片中preempt_count的值和監測時長;本次調度結束;
...
【技術保護點】
1.一種基于微內核Hypervisor的VCPU調度方法,其特征在于,每當進入一個新的調度時間片,微內核Hypervisor調用時鐘處理函數進行VCPU調度,具體包括以下步驟:
2.根據權利要求1所述的VCPU調度方法,其特征在于,所述步驟S9中獲取preempt_count的具體方法為:
3.根據權利要求1所述的VCPU調度方法,其特征在于,所述微內核Hypervisor對VCPU的正常調度時間片數量與額外調度時間片數量進行記錄,在每次對VCPU正常補充時間片時,根據額外調度時間片數計算平衡系數λ∈(0,1),額外調度時間片數量占調度時間片數的比例越高,平衡系數λ的值越大,則該VCPU的補充時間片數量表示標準補充時間片數量。
【技術特征摘要】
1.一種基于微內核hypervisor的vcpu調度方法,其特征在于,每當進入一個新的調度時間片,微內核hypervisor調用時鐘處理函數進行vcpu調度,具體包括以下步驟:
2.根據權利要求1所述的vcpu調度方法,其特征在于,所述步驟s9中獲取preempt_count的具體方法為:
3.根據權利要...
【專利技術屬性】
技術研發人員:肖堃,陽寧康,李蒙,羅蕾,陳麗蓉,
申請(專利權)人:電子科技大學,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。