Xen CPU 調度算法對比

XenCPU調度算法主要有3種,BVTborrowed virtual time)調度算法、SEDFsimple earliest deadline first)調度算法、以及Credit調度算法。

 

一、BVT調度算法

1.BVT調度算法的基本原理

BVT算法由 KermethJ.Duda1999年提出。BVT是一種公平性優先的調度算法。該算法將時間分爲實際時間和虛擬時間:真實時間爲硬件計時器記錄的時間;虛擬時間爲對真實時間經過某種規則計算後得到的時間值。該算法用虛擬時間來監控進程的執行時間,每次總是調度具有最早的有效虛擬時間的VCPU。這這種調度算法考慮到了運行實時和交互件的戍用程序的一些Guest操作系統,允許這些操作系統“借”一些時間片,就是說:在一定範圍內將未來分配給它運行的時問片先“借”過來用一段時間。這種“借”過來的虛擬時間片只能是當前真實的時間片中的某個虛擬時間片,不能借下一個真實時間片中的虛擬時問片。在系統初始化時,每個VCPU將分配一個權值來代表該VCPU能獲得的處理器份額。VCPU根據其權值來實現處理器的公平共享。系統用實際虛擬時間和有效虛擬時間來記錄VCPU運行狀態。其計算方式如下:

Ai =At + t/wi                                        

Ei < Ai - (warp?wi:0)                          

其中,t表示VCPU實際運行時長(由真實時間計算);wi表示該VCPU的權值大小;Ei表示有效虛擬時間;Ai表示實際虛擬時間;warp爲時間偏移標記,表示VCPU能否提前運行;磯爲VCPU能提前運行的虛擬時間長度。

BVT算法是一種搶佔式的working-conserving模式算法。該算法通過warp值來調整EVT使VCPU獲得處理器的時間提前,即VCPU從預定的有效虛擬時間中借用了一定的虛擬時間以獲得更高的調度優先級。此外,該算法還用LiUi來限制VCPUwarp值的大小及進行warp操作的頻率,以防止進程過度借用虛擬時間。

 

2.BVT的優缺點

BVT調度算法的優點在於可以將物理時間片公平、均勻地分配給各個Guest操作系統,每個Guest操作系統兩次被調度的時間間隔不會超過一個真實的時間片;能夠滿足I/O密集型和實時應用的低時延要求,能較好地調度某些實時性要求比較高的操作系統;在單CPU和多CPU環境下的調度開銷都比較小。

BVT調度算法的缺點有以下幾點。首先,BVT不支持non-working-conserving。也就是說,每當當前domain被加載運行時,它將獲得整個CPU。用戶不能把某個將某個domainCPU的使用限制在某個比例以下。其次,每個Guest OS只能借用分給它的時間片部分,而不會剝奪其他Guest OS的時間片。即當確定了各個domain的時間片分配比例後,這個比例在下次分配之前不會改變。

 

二、SEDF調度算法

1.SEDF調度算法的基本原理

SEDF算法源於C.L.Liu1973年提出的最早截止期限(EDF:Earliest DeadlineFirst)調度算法。Xen中的每個VCPU在初始化時,將由調度算法爲該VCPU設定一個截止期限作爲其被調度時的參考因素。當進行VCPU調度時,調度程序將優先調度截止期限最早的VCPU。與Credit算法一樣,當前對SEDF算法的研究還僅限於對配置有該算法的Xen的性能(磁盤讀寫速度、網絡吞吐量、CPU分配精度、I/O性能)影響進行了分析。

SEDF算法爲一種動態優先級調度算法。VCPU的優先級隨着其絕對截止期限的變化而改變。在任何時刻,具有最早絕對截止期限的VCPU優先級最高。當處理器進行VCPU調度時,將總是調度具有最早絕對截止期限的VCPU到該處理器上運行。

SEDF調度算法是這樣工作的:它爲每個Guest操作系統設置一個三元組(spx),其中sp指的是在p毫秒內,Guest操作系統至少運行s毫秒,而x指的是如果在p時間片內,還有空餘時間的話,是否允許該Guest操作系統佔用這些空餘的時間片;而每個Guest操作系統都有一個“最遲調度時間”(例如,0-100ms這個時間片內,若Guest操作系統至少運行30ms那麼它的最遲運行時間是70ms),調度算法選擇“最遲調度時間”最早的Guest操作系統進行調度:如果Guest A操作系統還任運行,Guest B操作系統的調度時間片已經到來,那麼Xen將選用Guest B進行調度。

SEDF支持working-conservingnon-working-conserving。即可以分配部分CPU給一個Guest OS

 

2.SEDF調度算法的優缺點

SEDF算法的優點是:可以通過配置各Guest操作系統的配置參數調節它們的優先級(一個Guest操作系統的p越小,優先級就越高)。這個算法效率很高、實現容易;易於推斷及計算;支持working-conservingnon-working-conserving;支持實時性較強的應用;當系統負載較輕時,其處理器的利用率最高可達100%

SEDF有以下幾個主要缺點:

SEDF算法中,一旦VCPU的調度參數被初始化後,就不能根據該VCPU的運行狀況進行修改。

SEDF調度算法是根據任務滿足截止期限的緊迫性,來修改任務的優先級,以保證最緊迫的任務能夠及時完成。當系統的負載相對較低時,這種算法非常有效;但是當系統負載極端沉重時,這就會使大量的任務發生時問錯誤(misSing the deadline),因此很可能使一些進程困錯過截止期,來不及處理而夭折;甚至可能導致CPU時間大量花費在調度上,這時系統的性能還不如FIFO方法。根據計算,當系統負載超過50%時系統性能會急劇下降,其主要問題在於:如何使進程按照到達最後期限的時間排序。因爲進程到達期限的時間在執行期間是變化的,這樣進程就無法給予事先排序,每一個進程結束時,優先級都必須重新計算。

還有一個重要缺點,這種算法只能對單個CPU進行SEDF調度,沒有多CPU間負載平衡的控制。例如存在如下分配:

分配CPU1: dom1 --- 80% CPU,分配CPU2: dom2 --- 80% CPU,如果此時有dom3,需要30% CPU 空間,那麼dom3將無法被分配和加載。即使兩個CPU的剩餘部分相加起來足夠dom3的使用,但是由於每個CPU的剩餘部分都不足,dom3只能等待。

 

三、Credit調度算法

1.Credit調度算法的基本原理

Credit調度算法是自Xen3.0版本以來使用的缺省的調度算法,其爲一種按比例公平共享的非搶佔式調度算法。Credit調度算法爲每一個Guest操作系統設置二元組(weightcap),各個Guest操作系統之間weight的比例決定它們各自佔用CPU時間片的比例;而cap決定一個Guest操作系統用CPU時間的上限值,比如cap=50,表示Guest操作系統只能最多隻能佔用半個物理CPU的所有時間,cap=100,表示Guest操作系統只能最多隻能佔用一個物理CPU的所有時間。Credit調度算法將各個虛擬CPU分爲兩個隊列,under隊列和over隊列,它只調度Under隊列中的虛擬CPU。最開始所有的虛擬CPU都在under隊列,每個domain的初始Credit爲其對應的weight值;每當虛擬CPU被調度時,這個虛擬CPU對應的domainCredit就被減小,當發現虛擬CPU對應的domainCredit爲負數時,這個虛擬CPU就被放入over隊列;當所有的虛擬CPU都在over隊列中時,Credit調度算法按比例爲所有的domainCredit加上最初爲domain設置的weight值,並把對應的虛擬CPU入至under隊列;周而復始。系統每次調度處於隊首且優先級爲underVCPU運行。當一個處理器空閒時或該處理器的就緒VCPU隊列中無under優先級的VCPU時,它將查看其它處理器以找到一個可運行的VCPU到本處理器上運行。

目前,對Credit算法的研究主要集中在該算法對系統性能影響方面。其中,Ludmila Cherkasova對該算法在Xen虛擬機管理器中上應用時的磁盤讀寫速度,網絡吞吐量和CPU分配精度的影響進行了分析;Diego Ongaro分析了Credit算法對Xen上虛擬機I/O性能的影響。

 

2.Credit調度算法的優缺點

Credit調度算法的最大優點在於,它可以全局管理多個物理CPU,從而將CPU時間公平高效地分配給各個虛擬CPU。它可以用SMP的方式將各個物理CPU分配給務個虛擬CPU,實現負載平衡:它可以通過調節Guest操作系統的cap參數很好的實現Non-Working-Conserving(NWC)調度模式,使得管理員可以很容易地控制物理CPU的分配情況。

Credit調度算法的缺點在於不能保證實時性,響應速度要求較高的應用中,事件響應延遲與其所處的隊列位置密切相關,響應延遲普遍較長且波動明顯。該算法的全局負載平衡策略過於簡單,仍易導致處理器因進程未就緒而空閒的情況。由於全局分配而產生的CPU分配錯誤率比較高,使得管理更加複雜。

 

(多篇論文整理)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章