完全公平排程器

fair Staircase 內含的

完全公平排程(completelyfairschedule)是匈牙利程式員英格·蒙內(IngoMolnar)所提出,Linuxkernel2.6.23採用。
CFS排程器參與先前ConKolivas所開發的樓梯調度算法(staircasescheduler)與RSDL(TheRotatingStaircaseDeadlineSchedule)的經驗[1],選取花費CPU執行時間最少的行程來進行排程。CFS主要由sched_entity內含的vruntime所決定,不再跟蹤process的sleeptime,並揚棄active/expire的概念,runqueue裡面所有的進程都平等對待,CFS使用“虛擬運行時”(virtualrunningtime)來表示某個任務的時間量。
CFS改使用紅黑樹算法,將執行時間越少的工作(即sched_entity)排列在紅黑樹的左邊[2],時間複雜度是O(logN),節點(即rb_node)的安插工作則由dequeue_entity()和enqueue_entity()來完成。當前執行的task通過呼叫put_prev_task返回紅黑樹,下一個待執行的task則由pick_next_task來呼叫。蒙內表示,CFS在百分之八十時間都在確實模擬處理器的處理時間。由於CFS的優異排程,使得Linux2.6.23決定將CFS合併到mainline而放棄了RSDL。為此,ConKolivas一度宣布脫離Linux開發團隊。

相關詞條

熱門詞條

聯絡我們