19:
∆j ← dnsty;
20: p ∗ ← j;
21:
return p∗;
22:
End FunctionTheorem 1. [11] 一個處理器所分配到的任務之使用率 (utilization) 與任務之使用密度 (density) 之總和不可超過 1,利用 EDF 排程任務,皆可滿足即時需求。
Theorem 2. [11] 一個任務若有多個片段,將原任務之截限時間分配給片段之子任務作 為截限時間,若每個子任務可以滿足自己的截限時間限制,則原任務即可原截限時間 限制。
Theorem 3. [11] 一個系統中任務集合若以事先分配方式將任務分配給系統中的處理器,
且每個處理器以 EDF 排程方式執行任務,系統的任務可排程分配方式必須符合以下條 件:系統中的每個處理器所分配到的任務之使用率 (utilization) 與子任務之使用密度 (density) 之總和不可超過 1。
Theorem 4. 當一個可平行化任務衍生成多個子任務後,依據第 3.2 節中的截限時間分 配方式,讓每個子任務的使用密度不超過 1,如果每個子任務分配給不同的處理器,
且每個處理器所分配到的 (子) 任務使用率與使用密度總和都不超過 1.0,則原任務可 以滿足即時需求。
Proof. 當可平行化任務分隔成多個子任務後,因為每個子任務已有截限時間限制,
且使用密度不超過 1.0,每個子任務可被視為各自獨立的任務,承續 Theorem 3,在執 行時,每個 (子) 任務都可以滿足在截限時間之前完成,故原任務可以滿足即時需求。
Theorem 5. 當一個可平行化任務衍生成多個子任務時,如果有兩個以上之子任務分配 給同一個處理器,且每個處理器所分配到的 (子) 任務使用率與使用密度總和都不超過 1。在執行時,每個 (子) 任務都可以滿足在截限時間之前完成。
Proof. 同 Theorem 4 證明。
Theorem 6. 同一個可平行化任務之不同片段的兩個子任務若分配到同一個處理器時,
系統保留給這些子任務之能力必須要大於或是等於這些不同片段子任務之中最大的使 用密度,才能確保子任務能夠在截限時間之前完成。
Proof. 當同一個可平行化任務之不同片段的子任務分配到同一個處理器時,由於子 任務有相同的週期,不同的相對截限時間,前面片段的子任務與後面片段的子任務的
執行時間區間完全沒有重疊,因此只須在該處理器上保留這兩個子任務之最大使用密 度之能力即可。
Theorem 7. 同一個可平行化任務之相同片段的子任務若分配到同一個處理器時,系統 保留給這些子任務之能力必須要大於或是等於這些相同片段子任務之使用密度總和,
才能確保子任務能夠在截限時間之前完成。
Proof. 當同一個可平行化任務之相同片段的子任務分配到同一個處理器時,由於子 任務有相同的週期和相同的相對截限時間,兩個子任務的執行時間區間完全重疊,因 此只須在該處理器上保留這兩個子任務使用密度和之能力。
在分配 (子) 任務時,有不同的分配機制可使用,如 Best Fit (BF)、First Fit (FF) 和 Worst Fit (WF) [4],我們分別提出基於這三種機制之 (子) 任務分配演算法,分別 列在 Algorithm 3、Algorithm 4、和 Algorithm 5。
由於上述的三個演算法許多部份近似,所以我們僅詳細描述 Algorithm 3,並在之 後作之間的差異說明。利用函式 Derive_Subtask(τ
i
) 取得可平行化任務之子任務,並 且依據 (子) 任務使用率或是使用密度排序過後,最後須依據 Algorithm 3的機制來分配 (子) 任務至處理器,分配的過程中會使用子任務使用密度合併的概念。關於 Algorithm 3中的運作細節,首先,第 2 行至第 6 行分別初始化相關變數,第 1 行初始化 dnsty,被用來暫時記錄每個處理器如果被給予傳入的 (子) 任務後使用密度之總和。第 2 行初 始化 p
∗,它被用來記錄目前最可能被當作 (子) 任務要放置的目標處理器。第 4 行則是
初始化變數 Belongs ame t ask,被用來判斷處理器中是否先前已分配同一任務之不同片
段的子任務。接著第 5 行初始化變數 increment,用來記錄在有不同的片段的子任務 在相同處理器中時,每個處理器判斷過後,處理器加上子任務的使用密度和最小的變 數。第 6 行初始化變數 largeU ,被用來放置處理器中的最大使用率 (密度) 總和。第 7 行至第 20 行則是針對每個處理器,討論如果再放被置入目前的 (子) 任務 τi,k
時的狀 況,第 9 行至 16 行判斷有沒有同一任務之不同片段的子任務在同一個處理器中。如果 有,代表處理器已有分配到同一任務之不同片段的子任務。若有多個處理器都有該任 務子其他片段之子任務,以合併後所增加的使用密度最小的處理器為分配對象。第 17 行至 20 行則是判斷如果所有處理器都未含同一任務之不同片段的子任務,則退化到一 般的分配機制 BF,BF 即是尋找目前處理器中所分配到的 (子) 任務使用率與使用密度總和最高,且將新的子任務分配給它之後,使用率與使用密度總和仍然不超過 1.0 者,
即為目標處理器。第 20 行,在判斷完所有的處理器後,回傳找到的目標處理器。
Algorithm 4與 Algorithm 3不同之處在於判斷當沒有屬於同一個平行任務之不同片 段子任務在同一個處理器時,FF 分配機制依據處理器編號,依序尋找,當找到的第一 個處理器中所分配到的 (子) 任務與新子任務的使用率與使用密度總和不超過 1.0 者,
即為目標處理器。而 Algorithm 5則是在判斷沒有不同的片段在同一個處理器時,WF 分配機制則尋找目前處理器中所分配到的 (子) 任務使用率與使用密度總和最低且將新 的子任務分配給它之後,使用率與使用密度總和仍然不超過 1.0 者,即為目標處理器。
在時間複雜度分析方面,由於 Algorithm 1為整個任務分配的方法主體,執行過 程中需要呼叫 Algorithm 2處理每個任務,以及不同 (子) 任務分配機制 Algorithm 3、
Algorithm 4或是 Algorithm 5。在 Algorithm 1中,針對所輸入的有 N 個任務的集合
T
,在第 5 行至第 13 行之間,需要對每個任務逐一處理,在最差情況下,所有的 任務可能都是可平行化任務,且第二片段的平行度都設定在 M ,加上第一片段與 第三片段的子任務,因此,最多會有可能衍生出 N× (M + 2) 個子任務,而此階段
的複雜度為 O(N )。而在第 14 行,需要依據使用密度大小對子任務做排序,複雜度 為 O((N× (M + 2))log(N × (M + 2)))。而在第 15 行至第 19 行之間,針對已排序的 N × (M + 2) 個子任務中的每一個子任務做分配至處理器的動作,由於最多會檢查所
有的處理器,因此複雜度為 O((N× (M + 2)) × M)。依據前面的討論內容,影響複雜
度的主要是後面兩個部分,因此整個機制的複雜度為 O(N M (M + logN M ))。3.4 例子
在本節中,我們將舉一個例子來說明子任務使用密度合併機制對於可平行化任務分 配時,在可排程性上所帶來的好處。假設系統中具有四個處理器 P r
1 , P r 2 , P r 3 , P r 4
和 一個任務集合為 T ={τ 1 , τ 2 , τ 3 , τ 4 , τ 5 , τ 6 },τ 1
為可平行化任務,而其餘 5 個任務則為不 可平行化任務。任務之相關時間特性如表格 3.1和 3.2所示。以下我們將採用第 3.2 節所提到的三種不同的週期分配給可平行化任務的不同片段 分配機制:EQS、EQF、與 Boundary,搭配 Best Fit (BF) 分配準則,測試子任務使
表 3.1: 平行化例子可平行任務
任務 週期 第一片段
平行度 第二片段 第三片段 執行時間長度 執行時間長度 執行時間長度
τ 1
10 11 14
2 9 1
3 7
4 6
表 3.2: 平行化例子不可平行任務 任務 週期 執行時間
τ 2
10 1τ 3
10 1τ 4
10 2τ 5
10 2τ 6
10 2用密度不合併與合併對於任務可否成功分配到處理器所帶來的影響。由於當 τ
i
的平行 度 3 時,才能滿足 ei,1
+ ei,2,3
+ ei,3 ≤ P 1
,因此 EQS、EQF、與 Boundary 皆是在平行 度為 3 時,設定每個片段之子任務的相對截限時間。當可平行化任務之週期的分配給不同片段是採用 EQS 時,平行度設定為 3,第 一、二、三片段的相對截限時間分別為 1.333、7.333、和 1.333,衍生出 5 個子任 務 τ
1,1
、τ1,2,1
、τ1,2,2
、τ1,2,3
和 τ1,3
,而其使用密度分別為 0.75、0.955、0.955、0.955 和 0.75。τ2
、τ3
、τ4
、τ5
和 τ6
為不可平行化任務,使用率分別為 0.1、0.1、0.2、0.2 和 0.2。之後,依據使用率 (/密度) 由大到小排序,順序為 τ1,2,1
、τ1,2,2
、τ1,2,3
、τ1,1
、τ1,3
、τ 4
、τ5
、τ6
、τ2
、τ3
。當不採用合併機制時,不可平行化任務之使用率與可平行化任務 之子任務使用密度之總和超過處理器個數 4,無法找到分配後所有處理器之 (子) 任務 使用率與使用密度總和皆不超過 1.0 的分配結果。但若採用同一平行化任務的不同片 段之子任務的使用密度可以合併之機制時,處理器 P r1
將被放置 τ1,2,1
、τ1,1
、τ1,3
,處 理器 P r2
將被放置 τ1,2,2
,處理器 P r3
將被放置 τ1,2,3
,處理器 P r4
將被放置 τ4
、τ5
、τ 6
、τ2
、τ3
,所有處理器上的 (子) 任務使用率與使用密度總和皆不超過 1.0,分配結果為可排。
另外,當可平行化任務之週期的分配給不同片段是採用 EQF 時,平行度設定為 3,
第一、二、三片段的相對截限時間分別為 1.111、7.778、和 1.111,因此,τ
1
衍生出 5 個子任務 τ1,1
、τ1,2,1
、τ1,2,2
、τ1,2,3
和 τ1,3
,子任務之使用密度皆為 0.9。之後,依據 使用率 (/密度) 由大到小排序,順序為 τ1,2,1
、τ1,2,2
、τ1,2,3
、τ1,1
、τ1,3
、τ4
、τ5
、τ6
、τ2
、τ 3
。當不採用合併機制時,不可平行化任務之使用率與可平行化任務之子任務使用密 度之總和超過處理器個數 4,因此,無法找到分配後所有處理器之 (子) 任務使用率 與使用密度總和皆不超過 1.0 的分配結果。但若採用同一平行化任務的不同片段之子 任務的使用密度可以合併之機制時,處理器 P r1
將被放置 τ1,2,1
、τ1,1
、與 τ1,3
,處理 器 P r2
將被放置 τ1,2,2
,處理器 P r3
將被放置 τ1,2,3
,處理器 P r4
將被放置 τ2
、τ3
、τ4
、τ 5
、τ6
,所有處理器上的 (子) 任務使用率與使用密度總和皆不超過 1.0,分配結果為可 排。當週期的分配原則是採用 Boundary 時,平行度設定為 3,第一、二、三片段的相 對截限時間分別為 1.5、7、和 1.5,衍生成 5 個子任務 τ