一種基于帶寬調(diào)度的cpu任務遷移方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及操作系統(tǒng)調(diào)度領(lǐng)域,特別涉及一種基于帶寬調(diào)度的CPU任務迀移方法及系統(tǒng)。
【背景技術(shù)】
[0002]在多任務實時操作系統(tǒng)中,通常會出現(xiàn)多個CPU需要分別對多個CPU任務進行處理的現(xiàn)象。為了減少較忙CPU的負擔,需要進行相應任務調(diào)度處理。
[0003]目前,較為常見的CPU任務調(diào)度過程是基于EDF(EDF,即Earliest DeadlineFirst,最早截止時間優(yōu)先算法)算法展開的,這種調(diào)度方法可以實現(xiàn)將當前最忙的CPU任務(即離截止時間最小的CPU任務)迀移至當前最閑的CPU上(即離截止時間最大的CPU)。然而,當截止時間很小的時候,將會導致操作系統(tǒng)頻繁進行CPU任務的切換,由此帶來了極大的系統(tǒng)開銷。
[0004]綜上所述可以看出,如何降低CPU任務切換的頻率,以減少系統(tǒng)開銷是目前亟待解決的問題。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明的目的在于提供一種基于帶寬調(diào)度的CPU任務迀移方法及系統(tǒng),降低了 CPU任務切換的頻率,從而減少了系統(tǒng)開銷。其具體方案如下:
[0006]—種基于帶寬調(diào)度的CPU任務迀移方法,包括:
[0007]從計算機的所有CPU中選取N個CPU,其中,N為不小于2的正整數(shù);
[0008]按照預設(shè)的迀移周期,定期對所述N個CPU進行一次整體的CPU任務迀移;其中,
[0009]所述對所述N個CPU進行一次整體的CPU任務迀移的過程,包括:
[0010]確定所述N個CPU中每個CPU的當前繁忙程度,并根據(jù)CPU當前繁忙程度的大小順序,對所述N個CPU進行第一排序,得到N個排序后的CPU ;并對所述N個CPU進行任務提取處理,以從每個CPU的所有CPU任務中提取出當前該CPU的最忙CPU任務,相應地得到N個CPU任務,并按照CPU任務的忙碌程度的大小順序,對所述N個CPU任務進行第二排序,得到N個排序后的CPU任務;其中,所述第一排序的大小順序和所述第二排序的大小順序相反;按照排序后的對應位置,將所述N個排序后的CPU任務一對一地迀移至所述N個排序后的 CPU ο
[0011]優(yōu)選的,所述Ν個CPU中,每個CPU當前的所有CPU任務的數(shù)量大于一個。
[0012]優(yōu)選的,所述N個CPU為所述計算機的同一個NUMA架構(gòu)中的N個CPU,并且每個CPU的CPU帶寬均大于預設(shè)閾值。
[0013]優(yōu)選的,所述迀移周期為100毫秒。
[0014]優(yōu)選的,所述確定所述N個CPU中每個CPU的當前繁忙程度,并根據(jù)CPU當前繁忙程度的大小順序,對所述N個CPU進行第一排序,得到N個排序后的CPU的過程,包括:
[0015]利用數(shù)組結(jié)構(gòu),分別記錄每個CPU當前的所有CPU任務的總帶寬以及相應的CPU編號,相應地得到包含N組CPU信息的第一數(shù)組,其中,一組CPU信息包括一個CPU編號以及與該CPU編號對應的總帶寬;
[0016]根據(jù)所述N組CPU信息中記錄的總帶寬的大小順序,對所述N個CPU進行所述第一排序,得到所述N個排序后的CPU。
[0017]優(yōu)選的,所述對所述N個CPU進行任務提取處理,以從每個CPU的所有CPU任務中提取出當前該CPU的最忙CPU任務,相應地得到N個CPU任務,并按照CPU任務的忙碌程度的大小順序,對所述N個CPU任務進行第二排序,得到N個排序后的CPU任務的過程,包括:
[0018]分別從每個CPU當前的所有CPU任務中查找出占用最大帶寬的CPU任務,相應地得到N個CPU任務,并利用數(shù)組結(jié)構(gòu),記錄所述N個CPU任務中每個CPU任務所對應的任務帶寬以及任務ID,相應地得到包含N組任務信息的第二數(shù)組,其中,一組任務信息包括一個任務ID以及與該任務ID對應的任務帶寬;
[0019]按照所述N組任務信息中記錄的任務帶寬的大小順序,對所述N個CPU任務進行所述第二排序,得到所述N個排序后的CPU任務。
[0020]本發(fā)明還公開了一種基于帶寬調(diào)度的CPU任務迀移系統(tǒng),包括:
[0021]CPU選取模塊,用于從計算機的所有CPU中選取N個CPU,其中,N為不小于2的正整數(shù);
[0022]CPU任務迀移模塊,用于按照預設(shè)的迀移周期,定期對所述N個CPU進行一次整體的CPU任務迀移;其中,所述CPU任務迀移模塊包括:
[0023]第一排序器,用于在對所述N個CPU進行一次整體的CPU任務迀移的過程中,確定所述N個CPU中每個CPU的當前繁忙程度,并根據(jù)CPU當前繁忙程度的大小順序,對所述N個CPU進行第一排序,得到N個排序后的CPU ;
[0024]第二排序器,用于在對所述N個CPU進行一次整體的CPU任務迀移的過程中,對所述N個CPU進行任務提取處理,以從每個CPU的所有CPU任務中提取出當前該CPU的最忙CPU任務,相應地得到N個CPU任務,并按照CPU任務的忙碌程度的大小順序,對所述N個CHJ任務進行第二排序,得到N個排序后的CPU任務;其中,所述第一排序的大小順序和所述第二排序的大小順序相反;
[0025]任務迀移器,用于按照排序后的對應位置,將所述N個排序后的CPU任務一對一地迀移至所述N個排序后的CPU。
[0026]優(yōu)選的,所述N個CPU為所述計算機的同一個NUMA架構(gòu)中的N個CPU,并且每個CPU的CPU帶寬均大于預設(shè)閾值。
[0027]優(yōu)選的,所述第一排序器包括:
[0028]第一數(shù)組記錄單元,用于利用數(shù)組結(jié)構(gòu),分別記錄每個CPU當前的所有CPU任務的總帶寬以及相應的CPU編號,相應地得到包含N組CPU信息的第一數(shù)組,其中,一組CPU信息包括一個CPU編號以及與該CPU編號對應的總帶寬;
[0029]第一排序單元,用于根據(jù)所述N組CPU信息中記錄的總帶寬的大小順序,對所述N個CPU進行所述第一排序,得到所述N個排序后的CPU。
[0030]優(yōu)選的,所述第二排序器包括:
[0031]最忙任務查找單元,用于分別從每個CPU當前的所有CPU任務中查找出占用最大帶寬的CPU任務,相應地得到N個CPU任務;
[0032]第二數(shù)組記錄單元,用于利用數(shù)組結(jié)構(gòu),記錄所述N個CPU任務中每個CPU任務所對應的任務帶寬以及任務ID,相應地得到包含N組任務信息的第二數(shù)組,其中,一組任務信息包括一個任務ID以及與該任務ID對應的任務帶寬;
[0033]第二排序單元,用于按照所述N組任務信息中記錄的任務帶寬的大小順序,對所述N個CPU任務進行所述第二排序,得到所述N個排序后的CPU任務。
[0034]本發(fā)明中,CPU任務迀移方法包括:從計算機的所有CPU中選取N個CPU ;按照預設(shè)的迀移周期,定期對上述N個CPU進行一次整體的CPU任務迀移;其中,對上述N個CPU進行一次整體的CPU任務迀移的過程,包括:確定上述N個CPU中每個CPU的當前繁忙程度,并根據(jù)CPU當前繁忙程度的大小順序,對上述N個CPU進行第一排序,得到N個排序后的CPU ;并對上述N個CPU進行任務提取處理,以從每個CPU的所有CPU任務中提取出當前該CPU的最忙CPU任務,相應地得到N個CPU任務,并按照CPU任務的忙碌程度的大小順序,對上述N個CPU任務進行第二排序,得到N個排序后的CPU任務;其中,第一排序的大小順序和第二排序的大小順序相反;按照排序后的對應位置,將上述N個排序后的CPU任務一對一地迀移至上述N個排序后的CPU??梢?,本發(fā)明是按照排序后的對應位置,將上述N個排序后的CPU任務一對一地迀移至上述N個排序后的CPU,實現(xiàn)了將較忙的CPU任務迀移至較閑的CPU上,以及將較閑的CPU任務迀移至較忙的CPU上的過程,從而保證了對操作系統(tǒng)調(diào)度過程的整體優(yōu)化,并且,本發(fā)明是按照預設(shè)的迀移周期,定期進行整體的CPU任務迀移,從而避免了頻繁切換CPU任務的現(xiàn)象,也即降低了 CPU任務切換的頻率,減少了系統(tǒng)開銷。
【附圖說明】
[0035]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
[0036]圖1為本發(fā)明實施例公開的一種基于帶寬調(diào)度的CPU任務迀移方法流程圖;<