欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

多核處理器操作系統(tǒng)負載均衡的實現方法

文檔序號:6460445閱讀:284來源:國知局
專利名稱:多核處理器操作系統(tǒng)負載均衡的實現方法
技術領域
本發(fā)明涉及多核處理器操作系統(tǒng)技術,特別是涉及一種多核處理器操作系統(tǒng)負載均衡的實現方法。

背景技術
摩爾定律已經出現了幾十年了,但是近年來隨著集成電路晶體管尺寸的不斷縮小,在硅片尺寸里面很難再裝下更多的晶體元件,集成電路的復雜度不能得到大幅度提升,進而預示著處理器性能得不到大幅度提高。另一方面,處理器的頻率已經到了一個瓶頸(Pentium 4最高達到了3.8GHZ,并沒有達到預期的4GHz),已經很難再提高,即使可以提高運行頻率,所帶來的功耗問題也不能解決。因此,為了提升性能,以Intel、AMD、IBM為代表的硬件開發(fā)商開始著眼于多核處理器(也稱單芯片多處理架構,Chip Multi-Processors,CMP)的開發(fā)。
新的體系結構的出現,必須有合適的軟件匹配才能發(fā)揮其更好的性能。多核體系結構性能提升的最基本思想是將任務進行合適的分解,讓任務在多個處理器上同時并行。因此,并行計算是多核體系結構最大的特點。目前任務的劃分、多線程執(zhí)行實現的主要瓶頸在軟件上,因為多核體系結構要求的多線程不單是在軟件程度上實現多線程,而且要在硬件層面上實現多線程。
操作系統(tǒng)作為與硬件接觸最密切的軟件,如何讓操作系統(tǒng)更好地發(fā)揮多核的性能,是目前研究的一個熱點。多處理之間協調工作,并發(fā)程度達到盡可能得大,很大程度上依賴于操作系統(tǒng)調度程序對任務的調度和分配。
眾所周知,操作系統(tǒng)的任務調度包括對實時任務、交互性任務和后臺批處理任務的調度。調度的算法可以基于優(yōu)先級、時間片輪轉、任務搶占等。調度解決的主要問題是如何達到資源最充分的利用和系統(tǒng)最大的吞吐量、而花費盡可能少的調度時間。
多處理器相較于單核處理器提出了新的調度問題負載均衡和任務分配。負載均衡指盡可能讓所有的處理器都能均衡的占有資源,以達到最大的系統(tǒng)吞吐率;任務分配指系統(tǒng)把任務合理分配到各處理器核上,以達到處理器之間工作量的均衡。在考慮諸多不同的多核體系架構下,探索一種合適的多核處理器調度顯得尤為重要。
多核系統(tǒng)與單核系統(tǒng)最大的區(qū)別是多核系統(tǒng)的并發(fā)性。并發(fā)性要求系統(tǒng)中所有的處理器都能盡量達到最大的吞吐率和資源最大利用率。因此,我們希望每個處理器能均衡地執(zhí)行任務,負載相同。
負載均衡是多核操作系統(tǒng)提出的新問題。在單核操作系統(tǒng)中,只有一個核,不需要考慮負載均衡。多核系統(tǒng)要盡量達到最好的執(zhí)行性能,需要將任務均勻地分配到每個處理器核上,這里指的均勻,不單單是任務數量的均勻,還包括對系統(tǒng)資源訪問均勻、執(zhí)行時間均勻。任務合理分配的目標是負載均衡。從任務執(zhí)行的狹義角度來看,任務運行的時間長短、訪問資源的時機、請求系統(tǒng)中斷等都是不可預見的,任務的執(zhí)行是動態(tài)的。因此負載的均衡不能單方面考慮任務分配,當系統(tǒng)中處理器之間負載發(fā)生不均衡時,需要對任務作遷移作為運行時動態(tài)平衡,以達到各處理器負載均衡的目的。
合理的解決處理器的負載均衡這兩個新問題,能夠對資源進行更有效合理利用,使任務執(zhí)行得到最快響應。


發(fā)明內容
本發(fā)明的目的在于提供一種多核處理器操作系統(tǒng)負載均衡的實現方法。
本發(fā)明解決其技術問題采用的技術方案如下 1)調度域構建 處理器核初始化的過程中,訪問每個處理器核;共享二級緩存的處理器核被劃分到同一個調度域當中;這樣,就可以形成若干個不同的調度域; 2)負載向量計算 使用資源使用率和運行隊列長度作為計算負載向量的因子,使用公式(1)計算處理器核的利用率FCPU,其中Tused為處理器運算時間,Tidle為處理器空閑時間, FCPU=Tused/(Tidle+Tused)(1) 使用公式(2)計算負載向量Fload,其中FCPU為處理器核的利用率,利用公式(1)進行計算,Frun-queue為處理器核運行隊列的長度; Fload=(FCPU+1)*Frun_queue(2) 3)負載均衡檢測 對于處理器核的一個調度域Pset={P1,P2,...,Pn},其中P1,P2,...,Pn是調度域Pset中的處理器核,對于Pset中的處理器核Pi會去檢測該處理器核與其他處理器核是否有負載失衡的狀況;每個處理器核都有自己的負載檢查,負載檢查的時間發(fā)生在線程分配、處理器空閑和固定時間間隔; 負載均衡檢查過程如下 第一步,Pi檢測與它在同一個調度域中的處理器核Pj,Pj+1,......,Pj+k,若負載不均衡,則返回負載向量相差最大的處理器核P和Pi負載向量差值正負的標志W,檢查結束; 第二步,若同一調度域中的處理器核負載均衡,則去檢查其他同層調度域中的負載,同層調度域的檢查只需要檢查其中任意一個處理器Pm即可;負載不均衡時,返回第一個負載量不平衡的處理器核P和Pi負載差正負的標志W; 4)線程分配 當線程Tnew產生后,分配流程如下 當線程Tnew的狀態(tài)為可運行后,調用父線程Tparent所在處理器核Pparent的檢測負載均衡,若負載均衡,則該線程被進入父進程所在的處理器核的運行隊列中;否則,該線程被插到負載最小的處理器核Pload_least的運行隊列中; 5)運行時動態(tài)負載均衡 對于處理器核的集合Pset,對于任意Pi屬于Pset,都有獨立的檢查負載均衡策略。這里采用的負載均衡檢查策略與步驟3)中相同 若Pi有線程運行,負載檢測由Pi隔固定的時間間隔調用;若Pi空閑,則減少時間間隔數,以盡量少的時間間隔進行檢測。若所有處理器核都空閑,則調整檢查負載均衡的時間間隔數; 處理器核Pi發(fā)現負載均衡,負載均衡檢查策略會返回與Pi負載不均衡的處理器Pt以及負載大小關系比較值W;若W>0,Pi的負載量小于Pt,需要遷移Pi中部分就緒隊列中的線程到Pt的就緒隊列中;若W<0,則需要從Pt中的就緒隊列遷移部分線程到Pi中,以達到負載均衡;如果W=0時,負載已經均衡,不需要遷移線程隊列。
本發(fā)明與背景技術相比,具有的有益的效果是 本發(fā)明是一種面向多核處理器操作系統(tǒng)的負載均衡方法,其主要功能是通過構建調度域,在調度域內部和調度域之間進行負載的均衡,從而在多核處理器操作系統(tǒng)上運行的多線程程序能夠在操作系統(tǒng)的調度下,多線程均衡的分布在不同的處理器核上,從而提高多處理器核的執(zhí)行效率。
(1)高效性。由操作系統(tǒng)對負載進行均衡,使得多個線程能夠均衡的分布在多個處理器核上運行,提高了運行效率。
(2)實用性。負載均衡能夠提高線程運行的并行度,減少線程遷移,經過反復試驗證明有很好的實用性。



圖1是本發(fā)明的實施過程示意圖; 圖2是四核二路多處理器調度域構建的示意圖; 圖3是四核二路多處理器負載均衡的線程分配示意圖; 圖4是四核二路多處理器調度域內負載不均衡的線程分配示意圖; 圖5是四核二路多處理器調度域間負載不均衡的線程分配示意圖。

具體實施例方式 本發(fā)明是一種多核處理器操作系統(tǒng)負載均衡的實現方法,下面結合圖1說明其具體實施過程。
1)調度域構建 通常所說的線程是指共享資源的輕量級進程,在現代操作系統(tǒng)調度中,線程是任務調度的基本單位。在本發(fā)明中調度的基本單位是線程;而負載是指運行在不同的處理器核上的線程。多核處理器有三個典型的特點多處理器核、處理器核間共享二級高速緩存、處理器核之間能通過寄存器直接通信。在這樣的處理器上,一級高速緩存是各個處理器核私有的。
調度域,是負載量需要達到平衡的處理器核的集合。對于共享二級高速緩存的處理器核來說,線程在共享二級緩存的處理器之間遷移時,所發(fā)生的二級高速緩存失配率代價與不進行任務遷移的二級高速緩存失配率代價一致。調度域的構建是將共享二級緩存的處理器核劃分到同一個調度域中。調度域是級層式結構。最高層(第n級的調度域,若有n層調度域)包含所有的處理器核,而最底層(第0級,基層調度域)的調度域表示調度中負載關系最密切的處理器核。如果兩個處理器在同一個調度域中,需要進行負載均衡。調度域之間如果有父子、祖先或者兄弟關系,那么調度域之間的處理器核能進行負載均衡。圖2以四核二路多處理器為例,說明調度域的結構。處理器核0和處理器核1為基層調度域,處理器核2和處理器核3亦為基層調度域。兩個基層調度域共同構成上一層調度域。
每個處理器核在啟動時都會分配到一個邏輯ID,這些邏輯ID從0開始遞增。處理器核初始化的過程中,訪問每個處理器核。共享二級緩存的處理器核被劃分到同一個調度域當中。這樣,就可以形成若干個不同的調度域。
2)負載向量計算 負載向量是指進行負載比較的尺度。為了對負載均衡進行有效的評估,需要使用負載向量。負載向量,定義為判斷處理器核負載的基本單位。
本發(fā)明使用資源使用率和運行隊列長度作為計算負載向量的因子。
公式(1)給出了處理器核的利用率FCPU計算公式,其中Tused為處理器運算時間,Tidle為處理器空閑時間。
FCPU=Tused/(Tidle+Tused)(1) 公式(2)給出了本發(fā)明中負載向量的計算方式,其中FCPU為處理器地利用率,利用公式(1)進行計算,Frun-queue為處理器核運行隊列的長度。
Fload=(FCPU+1)*Frun_queue(2) 3)負載均衡檢測 負載檢測是指操作系統(tǒng)檢查處理器核之間是否存在負載不平衡。負載均衡的檢查是多核操作系統(tǒng)調度實現負載均衡中十分重要的部分。對于處理器核的一個調度域Pset={P1,P2,...,Pn},其中P1,P2,...,Pn是調度域Pset中的處理器核,對于Pset中的處理器核Pi會去檢測該處理器核與其他處理器核是否有負載失衡的狀況。
每個處理器核都有自己的負載檢查。負載檢查的時間發(fā)生在線程分配、處理器空閑和固定時間間隔。
負載均衡檢查過程如下 (1)Pi檢測與它在同一個調度域中的處理器核Pj,Pj+1,......,Pj+k,若負載不均衡,則返回負載向量相差最大的處理器核P和Pi負載向量差值正負的標志W。檢查結束。
(2)若同一調度域中的處理器核負載均衡,則去檢查其他同層調度域中的負載。同層調度域的檢查只需要檢查其中任意一個處理器Pm即可。負載不均衡時,返回第一個負載量不平衡的處理器核P和Pi負載差正負的標志W。
對于負載量比較,需要用到前面所提到的負載向量。規(guī)定閥值M,對同一調度域中的處理器核,若負載向量差小于閥值aM(a<1),則負載均衡,反之,負載不均衡;不同調度域中的處理器,取閥值M做比較。其中閥值M和因子a的選擇與二級高速緩存命中失配、調度隊列任務轉移時間、調度器調度時間等有關系,可以在使用時根據應用環(huán)境進行設定。
4)線程分配 線程分配指線程均衡地分配到各個處理器核上。在新線程產生時,若處理器核負載均衡條件成立,線程會優(yōu)先考慮在父線程執(zhí)行的處理器核上繼續(xù)執(zhí)行。因此,在線程的任務描述符保留cpu_mask,用于標識某個線程可以運行的處理器核的集合,限制了線程可執(zhí)行的處理器,設置該值后線程只能在cpu_mask規(guī)定的處理器核集合內執(zhí)行,達到負載的靜態(tài)平衡。
當線程Tnew產生后,分配流程如下當線程Tnew的狀態(tài)為可運行(runnable)后,調用父線程Tparent所在處理器核Pparent的檢測負載均衡,若負載均衡,則該線程被進入父進程所在的處理器核的運行隊列中。否則,該線程被插到負載最小的處理器核Pload_least的運行隊列中。
下面以四核二路多核處理器為例,說明線程分配策略。處理器核0和處理器核1同在一個調度域中,處理器核2和處理器核3在同一個調度域。新線程的父線程在處理器核2就緒。圖3中負載平衡,Tnew被分配到處理器核1中;在圖4中調度域內負載不平衡,Tnew被分配到處理器核0中;圖5調度域內負載均衡,但調度域間負載不平衡,Tnew被分配到處理器核2中。
在現代操作系統(tǒng)中,線程產生的速度很快。如果在每個線程產生時都去檢測負載均衡,這個代價是得不償失的。每個處理器核每隔一定時間間隔去檢測負載均衡。在一段時間內,線程都分配到同一個處理器核中。這樣更有效的解決負載均衡檢測的代價問題。
5)運行時動態(tài)負載均衡 線程在運行時的狀態(tài)會因為各種資源不足、用戶中斷、運行異常、需要通信的線程狀態(tài)為不可運行等情況進入等待隊列,線程運行中的缺頁損失會造成線程等待。各種線程不能正常繼續(xù)運行的條件是不可預知的,因此線程運行的剩余時間是動態(tài)可變的。因此只有線程分配維持處理器之間的負載均衡是不夠的,需要在線程運行時也做到動態(tài)的負載均衡。運行時動態(tài)負載均衡的實現主要由處理器核之間的線程遷移實現。
多核處理器共享二級緩存,線程在同一個調度域的處理器核間遷移,代價要比在不同調度域間的遷移失配代價小很多。
對于處理器核的集合Pset,對于任意Pi屬于Pset,都有獨立的檢查負載均衡策略。這里采用的負載均衡檢查策略與步驟3)中相同。若Pi有線程運行,負載檢測由Pi隔固定的時間間隔調用;若Pi空閑,則減少時間間隔數,以盡量少的時間間隔進行檢測。若所有處理器核都空閑,則調整檢查負載均衡的時間間隔數。
處理器核Pi發(fā)現負載均衡,負載均衡檢查策略會返回與Pi負載不均衡的處理器Pt以及負載大小關系比較值W。若W>0,Pi的負載量小于Pt,需要遷移Pi中部分就緒隊列中的線程到Pt的就緒隊列中;若W<0,則需要從Pt中的就緒隊列遷移部分線程到Pi中,以達到負載均衡。如果W=0時,負載已經均衡,不需要遷移線程隊列。
由于很多因素,如線程遷移時很多線程不能進行遷移,有可能達不到負載平衡。所以需要對其他不平衡的處理器繼續(xù)做動態(tài)負載平衡,直到負載平衡。
讓單個處理器核Pi獨自檢測負載均衡,平衡目標為Pi與其負載量相差最大的處理器核之間的負載。由于每個處理器核都會對與其負載量相差最多的處理器進行負載均衡,因此每個處理器核的動態(tài)負載平衡可以達到全局的負載平衡。
線程從處理器Pt到Pi遷移時,當被選擇的線程Tselected滿足以下條件時,線程不做遷移。
(1)線程Tselected正在目標處理器核中執(zhí)行。
(2)線程Tselected處于cache熱命中狀態(tài),即當前線程在最近時間段內被使用過。
(3)線程Tselected的cpu_mask所示的處理器核集合中不包含處理器Pi,則線程Tselected不能被Pi運行。
權利要求
1.一種多核處理器操作系統(tǒng)負載均衡的實現方法,其特征在于
1)調度域構建
處理器核初始化的過程中,訪問每個處理器核;共享二級緩存的處理器核被劃分到同一個調度域當中;這樣,就可以形成若干個不同的調度域;
2)負載向量計算
使用資源使用率和運行隊列長度作為計算負載向量的因子,使用公式(1)計算處理器核的利用率FCPU,其中Tused為處理器運算時間,Tidle為處理器空閑時間,
FCPU=Tused/(Tidle+Tused)(1)
使用公式(2)計算負載向量Fload,其中FCPU為處理器核的利用率,利用公式(1)進行計算,Frun-queue為處理器核運行隊列的長度;
Fload=(FCPU+1)*Frun_queue (2)
3)負載均衡檢測
對于處理器核的一個調度域Pset={P1,P2,...,Pn},其中P1,P2,...,Pn是調度域Pset中的處理器核,對于Pset中的處理器核Pi會去檢測該處理器核與其他處理器核是否有負載失衡的狀況;每個處理器核都有自己的負載檢查,負載檢查的時間發(fā)生在線程分配、處理器空閑和固定時間間隔;
負載均衡檢查過程如下
第一步,Pi檢測與它在同一個調度域中的處理器核Pj,Pj+1,......,Pj+k,若負載不均衡,則返回負載向量相差最大的處理器核P和Pi負載向量差值正負的標志W,檢查結束;
第二步,若同一調度域中的處理器核負載均衡,則去檢查其他同層調度域中的負載,同層調度域的檢查只需要檢查其中任意一個處理器Pm即可;負載不均衡時,返回第一個負載量不平衡的處理器核P和Pi負載差正負的標志W;
4)線程分配
當線程Tnew產生后,分配流程如下
當線程Tnew的狀態(tài)為可運行后,調用父線程Tparent所在處理器核Pparent的檢測負載均衡,若負載均衡,則該線程被進入父進程所在的處理器核的運行隊列中;否則,該線程被插到負載最小的處理器核Pload_least的運行隊列中;
5)運行時動態(tài)負載均衡
對于處理器核的集合Pset,對于任意Pi屬于Pset,都有獨立的檢查負載均衡策略。這里采用的負載均衡檢查策略與步驟3)中相同
若Pi有線程運行,負載檢測由Pi隔固定的時間間隔調用;若Pi空閑,則減少時間間隔數,以盡量少的時間間隔進行檢測。若所有處理器核都空閑,則調整檢查負載均衡的時間間隔數;
處理器核Pi發(fā)現負載均衡,負載均衡檢查策略會返回與Pi負載不均衡的處理器Pt以及負載大小關系比較值W;若W>0,Pi的負載量小于Pt,需要遷移Pi中部分就緒隊列中的線程到Pt的就緒隊列中;若W<0,則需要從Pt中的就緒隊列遷移部分線程到Pi中,以達到負載均衡;如果W=0時,負載已經均衡,不需要遷移線程隊列。
全文摘要
本發(fā)明公開了一種多核處理器操作系統(tǒng)負載均衡的實現方法。是通過對多核處理器操作系統(tǒng)運行時,對負載情況進行檢測,并根據檢測的負載情況對線程進行分配。本方法實現多核處理器操作系統(tǒng)負載的均衡,從而在多核處理器操作系統(tǒng)上運行的多線程程序能夠在操作系統(tǒng)的調度下,多線程均衡的分布在不同的處理器核上,從而提高多處理器核的執(zhí)行效率。
文檔編號G06F15/16GK101256515SQ20081006113
公開日2008年9月3日 申請日期2008年3月11日 優(yōu)先權日2008年3月11日
發(fā)明者陳天洲, 威 胡, 曹明騰, 施青松, 嚴力科, 斌 謝, 馮德貴, 罡 王, 蔣冠軍, 王宇杰 申請人:浙江大學
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
定陶县| 锡林浩特市| 静乐县| 建湖县| 浦东新区| 米易县| 黄梅县| 卫辉市| 应城市| 盘锦市| 武强县| 汶川县| 嵊泗县| 门源| 湛江市| 龙里县| 五大连池市| 全州县| 化德县| 勐海县| 沛县| 沅江市| 剑阁县| 西乡县| 大足县| 韶山市| 枞阳县| 普洱| 武隆县| 通化市| 蓝田县| 寻乌县| 浦县| 喜德县| 大悟县| 阿尔山市| 信阳市| 固阳县| 东乡族自治县| 深圳市| 郎溪县|