• 沒有找到結果。

Multiple PAN 的快速平衡

第三章 Controller-Assisted Distributed (CAD) load balancing scheme load balancing scheme

3.3 細節討論

3.3.4 Multiple PAN 的快速平衡

接下來我們來看兩個以上的協調器的情況下,該如何做切割調整動作。

其實多個協調器仍可以看作是兩個協調器(兩個 PAN)的延伸情形,伺服器可以 針對兩兩協調器之間作平衡的動作,這些動作都跟前面所述的一樣,至於要 切割的數量就根據所有協調器的負載的平均與各個協調器目前的負載的差距 即可得到,因此問題就在於伺服器該以什麼樣的順序在多個協調器中逐一地 挑出兩個來做平衡的動作。

最簡單也最沒效率的作法是隨機地任選兩個協調器出來做平衡,很明顯 地這樣的作法並不是個聰明的作法。我們希望伺服器能夠在一個 pass,也就 是對所有協調器檢查一次,就能夠決定出各個網路要切除多少節點(或者等著 別的網路切除節點轉換至自己的網路下)。

我們在這邊只提出一個基本且有效率的作法,然而這僅是許多作法中的 一種,因為這部分也不是本論文的重點,因此我們也不打算去探討是否有更 好的作法。

Figure 3-11 PAN Graph 示意圖

首先參考 Figure 3-11,左圖是實際整個無線感測網路的情形,總共有四 個 PAN,三角形代表協調器,中間的數字表示其所屬的網路的負載量,另外 圖中有一些節點被圈圈所圈起來的表示轉接點,注意到轉接點有成對的關 係,當兩個網路存在有一對以上的轉接點時,就表示這兩個網路能夠使用我 們的調整機制來平衡這兩個網路的負載。我們在此定義 PAN Graph,此 Graph 中的節點為無線感測網路中的協調器,而點與點之間有邊就代表實際網路中 這兩個點相對應的 PAN 之間存在有轉接點,因此 Figure 3-11 中左邊的實際網 路就可以化為右邊的 PAN Graph。

在我們的機制中,伺服器只知道各協調器的負載情形,以及轉接點的資 訊,不過有了這兩個資訊,伺服器就能夠建構出一個 PAN Graph,接下來我 們就開始說明伺服器如何藉由這個 PAN Graph 快速的決定各個 PAN 如何做切 割調整。

首先藉由一些簡單的觀察推導出我們的演算法的基本精神,第一點是對 於那些 PAN Graph 中只有一個邊連外的節點,在圖論中的術語就是所謂"out

degree 等於 1"的節點,這些節點在作切割調整動作時非常單純,一定是經由 這唯一的邊和它的相鄰節點所代表的協調器作平衡,既然我們的目標是讓每 個協調器最後的負載趨近於大家的負載平均值,因此我們可以在一開始就決 定出這些 out degree 是 1 的節點和它的唯一的鄰居節點要如何作調整,Figure 3-12為例,平均負載應該為 7,由於節點 b、節點 c 與節點 d 都只有一個邊,

因此可以馬上確定的是節點 a 需要切除兩個單位的負載到節點 c,節點 a 需要 切除一個單位的負載到節點 b,節點 d 需要切除三個單位的負載到節點 a。而 這些動作是只需要針對每一個 out degree 等於 1 的節點掃一次就能夠做出的判 斷,且是唯一的解不會再也其他的調整法。

Figure 3-12 PAN Graph 之 Example 1

如果我們一開始就先把這些 out degree 是 1 的節點做好調整,調整完成後 將他們自 PAN Graph 中移除,然後再繼續同樣的步驟,直到最後不再有這樣 的節點時,接下來 PAN Graph 中剩下的都是具有兩個以上的邊的節點,這些 節點怎麼和其他節點作平衡調整會有不止一種的調整法,我們直覺地認為應 該先選取負載最大的節點開始,切除負載量到各個相鄰節點使其負載降至平 均值,至於怎麼分配負載量到各個相鄰節點,可以完全把負載任意的切移到

隨便一個相鄰節點,或者依照各個相鄰節點的邊長度(即和各個相鄰節點所對 應的 PAN 的轉接點深度)作等比例的分配,不過底下的例子 Figure 3-13 可以 告訴我們事實上有些例子並不能任意的做切移,而需要根據 Graph 以及負載 的分佈而有策略性的作調整。

Figure 3-13 PAN Graph 之 Example 2

Figure 3-13中理想的負載平均值是 5,節點 a 的負載最大因此從他開始調 整,節點 a 總共需要移除 5 單位的負載,它總共有 3 個相鄰節點可供選擇,

假設以圖中的分配方式,藍色箭頭與數字表示移除調整的方向,即節點 a 移 除 4 單位的負載到節點 c,也就是伺服器將發送 Token 到節點 a 所代表的 PAN 中,Token 中的值為 4 並指定切換到節點 c 所代表的 PAN。可以很明顯的看 出來當節點 a 以這樣的分配方式調整結束後,之後其他點的負載平衡調整如 果不再透過節點 a 的話,將會無法達到平衡狀態(節點 b 與節點 c 負載變重,

但除了透過節點 a,沒有管道可以把多的負載移到右邊的三個節點)。

因此我們的想法是,如果能夠讓所有的情形都能夠像 out degree 等於 1 的 節點那樣的情況,就會非常的單純,於是我們想到一個資料型態能夠非常符 合這樣的需求,那就是樹。如果我們對這個 PAN Graph 求出一個生成樹 (spanning tree),接著利用同樣的規則,先從只有一個邊的節點開始作平衡,

調整完後將這些節點移除,我們將發現永遠不會出現剩下的節點邊數都大於 等於 2 的情況,這都是因為樹有一項特性:樹保證不存在迴圈。

底下我們展示的是演算法的 Pseudo-code:

相關文件