1. 程式人生 > >資源任務排程演算法實現(大資料雲端計算作業來的)

資源任務排程演算法實現(大資料雲端計算作業來的)

實驗目的

  • 本實驗將引導學生對雲端計算任務排程演算法的相關研究現狀進行深入分析和研究,從影響使用者任務的執行效率和系統資源的使用效率的角度出發,在現有的雲端計算任務排程演算法的基礎上,進行理論創新,從模型高效和演算法高效2個層面上設計雲端計算任務排程模型、演算法並實現。

實驗思路

  • 實驗主要分為兩大部分,虛擬伺服器模擬處理任務和主伺服器(主執行緒)模擬分發任務到各個伺服器,從而實現任務排程。虛擬伺服器怎麼模擬處理任務,為此,我們本次實驗採取虛擬伺服器資源和虛擬伺服器處理任務的多執行緒來實現任務分配。
    任務排程:任務生成是通過隨機數生成的任務大小和執行時間。任務大小和執行時間會影響到虛擬服務單任務執行時間和資源消耗。比如:任務過大,超出任何一臺伺服器的最大的執行的能力,就會出現任務過載,本次實驗,在任務分配前需要檢測。一旦發現,強行作廢,並列印告知管理員。其二,極端任務,本次實驗對極端任務的定義是:極端任務是這個任務執行需要的資源(記憶體)在所有的虛擬伺服器僅此有一臺伺服器最大空閒時能滿足此要求,這就是極端任務,極端任務需要特殊處理,不需要參與到一致性hash演算法的分配演算法中,因為此物僅此只能一臺伺服器處理。為此,我們在定義每臺的虛擬伺服器資源,定義了每臺伺服器都有自己的任務佇列,都在初始化(new Object())產生自己的內部 獨立的任務分配執行緒,此任務分配執行緒只負責處理自己內部的任務佇列,一旦有新的任務,就只鎖上自己(通過內部標誌位),直到為空時,恢復標誌位。任務佇列任務的新增靠主執行緒,一旦發現有極端任務,就會新增到對應的虛擬伺服器的任務佇列中。從而解決了因為單個極端任務,導致其他伺服器空閒的情況( 這種極端任務處理機制大大降低的伺服器空閒概率)。

實驗演算法

  • 本次實驗採用了一致性hash演算法並添加了權值,權值的改變根據虛擬伺服器最大資源量和執行時每隔一段時間的資源使用率來決定權值大小,權值大小直接影響到虛擬伺服器在h一致性環內的節點個數,個數越多,被分配到的概率就會也大,從而更好的實現了負載均衡。
    一致性Hash演算法的應用:路由分配、ip分配、任務排程、雜湊隨機數

實驗結果

  • 極端節點特別多得情況(注:相對均衡率越小越均衡):


  • ;(注:此次試驗截圖故意讓極端任務生成的概率大,因此就會有很多極端任務或過載任務,從而很大程度影響了相對均衡率,越小越均衡)

  • 下面是極端任務生成的概率低的情況:


  • 從圖中可以看出,各個虛擬伺服器的柱狀圖都很均勻,幾乎都能處於很高的資源使用率的狀況,並且最終的相對均衡率很小,出現的極端任務越小,任務處理的所需的資源越小,其相對均衡率就會越小。
    公式:相對均衡率:sum(|(伺服器A執行總的任務數/總的分配任務)-(伺服器A最大資源/所有伺服器最大資源總數)| (取絕對值))/總伺服器個數 A是指各個伺服器別民,

最後附上java原始碼

資源排程java實現程式碼