• 沒有找到結果。

Chapter 3 區塊式作種與排程演算法

3.3 下載區塊排程演算法

在此主要目的在於利用本論文的下載排程演算法避免播放中斷。但有幾個決定性的 假設前提:

1. 每個區塊的檔案大小不盡相同,最大與最小可能相差 1~3 倍,因此下載時間也有 所差異。

2. 第二,區塊下載速度必須大於其播放位元率(Bit Rate);在此前提下,每個區塊才 有機會在播放前完成下載動作,否則下載速度過慢仍無濟於事。換句話說:平均每 個區塊距離下載完成的時間必須小於它距離預期播放的時間。

3. 由於客戶端的播放具連續性(按順序播放)的特性,這些連續播放的區塊被趨近於 同一批的鄰居同儕所維護與服務,也因此同一客戶端節點相臨區塊編號的下載速度 可被認為十分相近。

4. 除了鄰居差異的影響外,我們認為時間也是一項影響要素,也就是說:隨著時間流 逝,某個區塊上一次或是上上次所測出的下載速度也可提供參考;且因為鄰居相同,

故前幾次測量之下載速度,其參考價值比相鄰編號的區塊下載速度更高。

9

基於以上前提,本論文制定一些變數幫助了解:

T:每個影音區塊的播放時間

P:在一個播放時間內要檢查是否開始下載的次數 B:檢查是否開始下載的區塊數

k:第 k 個區塊(1 k N)

Wk:第k 個區塊的下載速度

Q:取出下載速度歷史記錄的時間範圍 R:取出下載速度歷史記錄的區塊數

假設每個區塊的播放時間皆為T 秒,我們希望在這播放時間內的 P 個時段,也就是 系統每隔 T

P 秒都能檢查是否有區塊必須開始下載;且每次從B 個尚未下載的區塊中 挑選,最多只能挑選一個開始下載。

由於區塊編號相臨時,下載速度亦相近;在挑選下載區塊時,我們以加權移動平均 法(Weighted Moving Average)去推測該區塊開始下載後的下載速度 W,再評估是否該 開始下載。加權移動平均法的基本公式如下:

W α W

α

其中 W 是區塊編號第 k 個的下載速度,而 α 是計算範圍內第 i 個區塊下載速度 所占的權重。我們的想法是在每次檢查是否有區塊可下載時,取出之前記錄的若干個區 塊的下載速度W,包含下載中或剛下載完畢的區塊,我們以這段評估範圍定為 R。隨著 時間流逝,某個區塊的下載速度歷史記錄也是可提供參考的,只是該權重α 仍因時間流 逝而漸漸降低,我們以這段可評估的時間範圍定為Q。

如圖6,我們可以看到右邊第 k 個區塊(S )正準備計算出預期的下載速度 W ,x 軸為區塊之編號,其中也包含了下載、預載與播放區塊區間的範圍,y 軸則是代表每次

10

檢查下載的時間,每次時間間隔如前文提到為 T

P 秒,因此每 T

P 秒我們也得到並記 錄這些下載中區塊的下載速度。

舉例來說:若B 3,我們取 4 份時間(Q 4,t ~ t 3),與最近 5 份區塊的資料

(R 5),下載區間恰有 3 個區塊正在下載時,則預載區間會找最近的 2 個區塊的速度 資料,故理論上我們可以得出一份最多 20 份下載速度的資料表格。但因這些區塊下載 狀況不一,剛開始下載的區塊所獲得的速度資料必然較少;且預載區間的區塊因為已下 載完成,故更新之下載速度必為0,故不計算其權重。以此推論,實際能測得之下載速 度資料可能如橘色部分所示。在此為易於說明,將W 與α以 W編號,時間、α

編號,時間表

示。

6:預測下載速度之速度分佈

11

7:預測下載速度之權重分佈圖

圖 7 則是相對之權重分佈情形,故我們可將上述所得出之下載速度計算公式列出:

W α , W ,

α , , R 5, Q 4

R, Q

,

接下來探討權重的安排,由於x 軸的權重被鄰居的差異度所影響,區塊的起始下載 時間不同,其鄰居差異度亦有所影響,得到的速度可參考性則隨著起始下載時間的漸遠 而大幅降低,故我們在權重方面會以等比級數遞減。

至於 y 軸權重是受到時間的影響,每段時間所得到的速度並不會有太大的變化;唯 一的例外即當區塊一開始進行下載時,總是稍微浪費了一些時間在初始化上(與Tracker 溝通、取得鄰居清單並要求檔案片段等等),故參考性最低。因此,我們以時間t 得到的 權重為基準,每項往前追溯的權重皆以等差級數遞減,而最早的數據我們給予最低的權 重。

圖 8 即為我們給予這權重的範例,可發現最底層的目前下載速度是等比級數的比例 遞減;再來每往前一段時間的資料,我們給予目前權重再減 1 作為該權重(等差級數)。 但當這個資料為最舊時,我們認為此為起始下載的下載資料,故採計可信度最低,給予

12

的權重也改成只有 1。而預載區間在下載完成後之速度資料為 0,不採計。當我們建構 出這個權重表格時,即可一一配合對應的速度值,予以計算出預期下載速度 Wk

8:預測下載速度之權重範例圖

求出預期下載速度後,為了區塊下載控制的檢查機制,我們便可為這個機制推導出 一些式子:

T:區塊的播放時間

N:一份影片被切割的區塊總個數

c:目前播放或是先前播放中斷的區塊編號 m:下載中的區塊個數

k:第 k 個區塊(1 k N)

Dk:第k 個區塊距離下載完成的時間 Fk:第k 個區塊尚未下載的檔案大小 Wk:第k 個區塊的預期下載速度

u:緊急程度,可與緊急指標比較作為是否可開始下載或播放的依據

13

H.U.:高水線緊急指標(High Urgent Index),可被比較來評斷是否開始下載區塊

L.U.:低水線緊急指標(Low Urgent Index),可被比較來評斷是否開始下載或播放區塊 首先,若要於播放前完成下載動作,必須達成平均每個區塊距離下載完成的時間小

u

F

W T

(7)

若 u>H.U.,表示緊急程度非常高,必須趕緊開始下載;而當 u=H.U.,則是緊急 程度中等,再不下載會使u 提高而使中斷機率上升,故仍開始下載;最後則是 u<H.U.

的情形,我們認為仍在安全範圍內,可暫不開始下載。此外,前文曾提及每次偵測時會 從 B 個區塊中挑選,最多只能挑選一個開始下載。若有多個區塊求出的比值 u 皆超出 H.U.時,則選 u 最大的區塊準備開始下載。

當我們選好欲開始下載的區塊(S )時,由於會使其它正在下載的區塊下載速度變 慢,故必須再度評估:該區塊新增下載動作後,會不會使這些正在下載的區塊因為下載 變慢而來不及在播放前完成,造成播放中斷。為考慮此一情形,我們認為必須也求出這 些區塊的緊急程度u,其中下載中區塊的下載速度被新增區塊所分走,平均下降速度為 W 的 m 分之一,因此我們以 在下正 載的區塊(S )為例,求出新的 W :

W W

W

(8)

再將W 代入公式(5)即可得出新的緊急程度u:

u 距離下載完成的時間

距離預期播放時間

F

W T

(9)

得出以上式子後,我們制定幫助判斷 S 是否可開始下載的規則:

1. 首先下載中區塊的 u 只要全部都小於 H.U.,S 即可開始下載,因為就算 S 開始 下載,S 也不會因為下載速度變慢而造成播放中斷。

2. 但萬一下載中區塊的 u 任一介於 H.U.與 1 之間時(H. U. u 1),則 S 不可開始 下載,除非 S 的 u大於1。

3. 任一下載中區塊的 u 1,表示很有可能發生中斷,故 S 不能開始下載。

如圖 9 我們整理一些狀況範例來判定 S 是否可開始下載動作:

15

16

9:判定是否下載之狀況範例圖

圖 9(a)下載中區塊的 u 只要全部都小於 H.U.,表示加入 S 也不會使得其它正 在下載的區塊下載不及,以至論到它播放時發生中斷。圖 9(b)則是 S 的 u 介於 H.U.與 1 之間,且 S 的 u 也不夠高(不夠緊急),故不進行下載動作。圖 10(c)跟圖 9(b)差別只在 S 的 u 大於 1,故開始下載。圖 9(d)則是出現下載中區塊的 u 大於 1,此時不可開始下載。

最後我們討論特殊情形:初始化的運作。由於一開始沒有下載速度可參考,無法決 定哪個區塊先下載,所以當客戶端一開始剛入網路時先下載第一個區塊。接下來每隔

T

P 秒仍檢查是否有區塊須開始下載,但由於目前無區塊播放(c 0),此時:

u 距離下載完成的時間 距離預期播放時間

F

W k c 1 T

F W k 1 T

由於挑出預下載區塊後,仍須評估新區塊加入後是否仍穩定,故對正在下載的區塊 算 u;其中因為第一個區塊的距離預期播放時間為零無法計算 u,故計算是否下載時,

我們將其忽略。

至於初始化的播放時機,由於直到第一個區塊下載完成才檢查是否開始播放,此時 依然如偵測下載般算出下載中與欲下載的區塊的u。接著為避免未來發生播放中斷情形,

我們制定一低水線的標準(L.U.),所有計算出的 u 都必須小於 L.U.才可開始播放。若 檢查後仍未播放,則在每次檢測是否下載的同時也一起檢查是否播放,直至第一個區塊 開始播放後,系統恢復正常如前。

第二種特殊情形為下載狀況非常好時,下載區間往往沒有區塊在下載;為充份利用 下載頻寬,我們將算出下載中區塊的平均 u,若平均 u 小於 L.U.且其中最大 u 亦小於 H.U.時,則一定下載區塊,此時再另外從欲下載區塊中挑出 u 最大的開始下載(不需與 H.U.比較)。

最後我們列出完整之流程圖(不包含初始化狀況),如圖1

17

2. 取 得 評 估 範 圍 內

相關文件