新聞中心
linux CFS調(diào)度器(Completely Fair Scheduler,完全公正調(diào)度器)是Linux內(nèi)核中采用的一種調(diào)度器,它旨在實現(xiàn)在操作系統(tǒng)中多任務(wù)的管理,它讓操作系統(tǒng)根據(jù)優(yōu)先級及其它多種因素來決定每一塊CPU處理哪個任務(wù),以實現(xiàn)根據(jù)每個任務(wù)的特性選擇最合適的CPU調(diào)度策略。linux cfs調(diào)度器向操作系統(tǒng)中的運行的任務(wù)分配表示 CPU 運行時間的時間片,每個任務(wù)都會按照其優(yōu)先級和運行時間從而分配 CPU 時間片,這樣就能充分利用 CPU 便于任務(wù)的調(diào)度,以達到負載均衡的效果,以保證系統(tǒng)低延遲、高效率和穩(wěn)定運行。

Linux CFS調(diào)度器按照 “Actual Finish Time” (ACT) 的形式來管理進程和對象,它使用一種基于紅黑數(shù)求根樹 (RB-Tree) 的數(shù)據(jù)結(jié)構(gòu)(參見下圖)來進行管理,這是一種有效管理多任務(wù)的數(shù)據(jù)結(jié)構(gòu)。

RB-Tree 的特點:(1) 根據(jù)它的秩 (degree) 來排序運行任務(wù),根據(jù)優(yōu)先級排序,(2) 支持動態(tài)的插入、刪除、搜索等操作,(3) 時間復(fù)雜度為 O (logn),即幾乎不會發(fā)生阻塞,從而可以保證進程在實時性方面更穩(wěn)定,具有更好的響應(yīng)速度。
下面這段代碼是 Linux CFS 調(diào)度器的優(yōu)先級轉(zhuǎn)換函數(shù):
static inline void __prio_changed(struct rq *rq, struct task_struct *p,
int oldprio)
{
if (rq->curr == p) {
set_rq_task(rq, p);
rq->aff_info.flags |= RQCF_ACTIVE_BALANCE;
}
if (p->prio
insert_task_rbtree(rq, p);
else
delete_task_rbtree(rq, p);
}```
它會根據(jù)傳入的參數(shù)調(diào)用相關(guān)的函數(shù)來改變?nèi)蝿?wù)的優(yōu)先級,以實現(xiàn)每一次優(yōu)先級的變化,并修改RB-Tree數(shù)據(jù)結(jié)構(gòu)。
Linux CFS調(diào)度器可使操作系統(tǒng)充分利用CPU,它支持動態(tài)的插入、刪除、搜索操作,這樣每個任務(wù)都能被優(yōu)先分配好自己應(yīng)得的資源,從而實現(xiàn)多任務(wù)管理的優(yōu)先級分配。
香港云服務(wù)器機房,創(chuàng)新互聯(lián)(www.cdcxhl.com)專業(yè)云服務(wù)器廠商,回大陸優(yōu)化帶寬,安全/穩(wěn)定/低延遲.創(chuàng)新互聯(lián)助力企業(yè)出海業(yè)務(wù),提供一站式解決方案。香港服務(wù)器-免備案低延遲-雙向CN2+BGP極速互訪!
標(biāo)題名稱:調(diào)度器LinuxCFS調(diào)度器:實現(xiàn)多任務(wù)管理的優(yōu)先級分配(linuxcfs)
標(biāo)題鏈接:http://www.dlmjj.cn/article/ccdgoos.html


咨詢
建站咨詢
