999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

關于完全公平調度算法的研究與分析

2012-04-12 00:00:00武瑛
消費電子 2012年7期

摘要:GFS調度法是Linux最新研制的調度算法,表現出很強的有異性。GFS涉及能夠有效促進處理器資源的公平與共享。本文主要分析了GFS調度算法的特性與工作流程,從算法分析與Hackbench測試兩方面對CFS與O(1)性能進行對比分析與研究

關鍵詞:完全公平調度法;計算機技術;公平

中圖分類號:TP316.81 文獻標識碼:A 文章編號:1674-7712 (2012) 06-0159-01

一、引言

操作系統的一項核心功能表現在進程調度方面,進程調度主要是對處理器資源進行合理公平的分配。調度算法應該以實現效率與公平作為其目標,并促進周轉時間、吞吐量、響應時間等目標之間的平衡[1]。Linux從使用調度算法以來,不斷經歷了O(1)、RSDL、SD、CFS調度算法,CFS相對O(1)有了很大的進步,簡化了代碼,突出了公平的核心思想。

二、CFS概述

GPS采用virtual runtime來描述CPU上的執行時間,在調度的過程中,CFS為保證每個進程有基本相似的執行時間,會選擇執行時間最小的進程來運行,從而達到任務執行時間的相對平衡。CFS調度法相對于O(1)來講有了很大的進步,比如能夠區分交互式進程,不跟蹤睡眠時間,所以代碼思路相對簡單。另外還增加了組調度的功能,以保證組與用戶的公平。同時不再采用優先級數組,將就緒態進程插入紅黑樹,并以此來選擇下一個調度進程。一般每一個調度模塊都需要執行調度類以為其制定一組函數,以簡化需要修改進程杜奧杜算法時的程序。

三、CFS算法

(一)周期性調度函數

系統時鐘中斷調用周期性調度函數,即Scheduler-tick(),對運行隊列信息進行更新并執行相關調度操作,其主要流程表現如下:

(1)對本地CPU的運行隊列負載、時間戳等信息進行更新,之后轉入CFS調度類task_tick函數——task_tick_fair()

(2)對GFS運行隊列和執行進程相關信息進行更新,更新在update-curr()中進行。這種操作構成函數中斷處理的重要內容和核心步驟。

(3)對是否需要搶占當前進程進行有效判斷,這一過程在check_preempt_tick()中進行。

首先,需要對CFS隊列中每一進程被調度以此的時間周期period進行計算;

其次,對目前進程所允許占用的時間,即ideal_runtime進行計算,表現為:ideal_runtime=period*curr->load.weight/cfs_rq->load[2]

cfs_rq->load為cfs_rq的負載,這一數值的增加在進程出列時則會減小,curr->load.weight為nice對應的weight數值。通過上述公式能夠發現,系統負載與ideal_runtime之間呈現負相關;nice與se->load.weight、ideal_runtime呈現負相關。

再次,計算進程已經占用的CPU時間。

delta_exec=curr->sum_exec_runtime-curr->prev_sum_exec_runtime[3]。

式中prev_sum_exec_runtime代表進程被切換到CPU時sum_exec_runtime。

最后,比較進程占用CPU時間delta_exec是否比ideal_runtime要大。如果執行時間超過ideal_runtime則會用resched_task()設置此進程的搶占標志位,同時在tick中斷返回過程中調用schedule()完成調度。

(二)主調度函數

schedule()即主調度函數,包括主動與被動兩種方式,schedule()功能表現為在運行隊列中選擇被調度的進程,同時對調度信息進行有效更新。主調度函數如下:

(1)禁止初始化局部變量、清除調度標志位、內核搶占、執行相關鎖操作等;

(2)在put_prev_task_fair()中將目前執行的程序放到運行隊列。

首先,對當前運行進程up-data_curr()和cfs-rq進行有效更新;其次,在進程插入紅黑樹后,排序鍵值key在_enqueue_entity中變為:se_>vruntime-cfs_rq->min_vruntime。

(3)在pick_next_task_fair()中將CPU分配到下一個被調度的進程中。

首先,選擇結點se(紅黑樹最左側),之后進行兩次條件判斷,分別為是否被cfs_rq->next搶占、是否被cfs_rq->last搶占。之后決定下一個被調度進程。

其次,在選出下一個被調度進程之后,需要采用set_next_entity()設置所選擇的進程的信息,在_dequeue_entity()中實現。

四、CFS總結

從上述分析中可以發現CFS與之前的調度器有很大不同,發生了很大的改進。CFS突出完全公平的思想,以對進程執行時間的追逐來調度任務,通過以紅黑樹代替之前采用的優先級數組來決定被調度的進程,將調度類引入以有效增強代碼的可維護性與內核調度程序的擴展性。同時代碼中也將之前較難理解的公式進行去除,使得整個思路相對清楚,也提高了算法的實用性。但CFS同時也有一些負面的報告,需要在以后的研究中不斷完善。

參考文獻:

[1]朱旭,楊斌,劉海濤.完全公平調度算法分析[J].成都信息工程學院學報,2010,25(1):18-21

[2]王輝,李津生,洪佩琳.802.11WLAN中一種基于循環隊列的分布式公平隊列調度算法[J].電子與信息學報,2004,26(10):1540-1547

[3]趙旭,夏靖波.基于RTAI的Linux系統實時性研究與改進[J].計算機工程,2010,36(14):288-290

主站蜘蛛池模板: 伊人精品成人久久综合| 精品视频在线观看你懂的一区| 久热中文字幕在线| 高清不卡毛片| 日韩a级片视频| 中文字幕2区| 欧美午夜网| 欧美日韩国产在线观看一区二区三区 | 国产美女一级毛片| 午夜福利无码一区二区| 久久精品视频亚洲| 精品少妇人妻av无码久久| 91精品久久久久久无码人妻| 97视频在线精品国自产拍| 99国产精品国产| 精品久久综合1区2区3区激情| 一区二区三区在线不卡免费| 99ri精品视频在线观看播放| 国模私拍一区二区| 国产精品无码制服丝袜| 夜夜拍夜夜爽| 欧美日本在线一区二区三区| 亚洲欧美日韩另类| 久久五月天国产自| 久青草网站| 国产一区二区免费播放| 高清无码一本到东京热| 亚洲无码视频一区二区三区| 四虎影视无码永久免费观看| 亚洲成年人片| 国产人成在线视频| 色天天综合久久久久综合片| 国产一级毛片网站| 久久99久久无码毛片一区二区| 老司机午夜精品视频你懂的| 国产美女精品人人做人人爽| 国产精品香蕉| 一区二区三区四区精品视频 | 亚洲小视频网站| 日韩在线第三页| 亚洲日本中文字幕乱码中文| 自拍欧美亚洲| 国产成人亚洲毛片| 欧美中文字幕第一页线路一| 特级毛片免费视频| 国产精品无码影视久久久久久久| 亚洲欧美不卡视频| 中文字幕日韩视频欧美一区| 亚洲精品大秀视频| 91小视频在线观看| 亚洲精品国产综合99| 97一区二区在线播放| 五月天丁香婷婷综合久久| 国产在线麻豆波多野结衣| 久青草网站| 为你提供最新久久精品久久综合| 婷婷综合在线观看丁香| 亚洲啪啪网| 亚洲天堂成人在线观看| 亚洲成人黄色在线观看| 在线观看精品自拍视频| 国产成人av一区二区三区| 国产午夜福利在线小视频| 欧美翘臀一区二区三区| 91精品国产综合久久不国产大片| 五月天久久综合| 精品国产aⅴ一区二区三区| 国产一级在线观看www色 | 丁香六月激情综合| 亚洲人在线| 国产精品女主播| 日韩免费成人| 久久国产高潮流白浆免费观看| 色呦呦手机在线精品| 久久香蕉国产线看观| 99久久精品美女高潮喷水| 亚洲欧洲AV一区二区三区| 精品久久久久无码| 国产精品黑色丝袜的老师| 国产精品三级专区| 亚洲一道AV无码午夜福利| 亚洲国产AV无码综合原创|