資源任務調度算法實現(大數據雲計算做業來的)

實驗目的

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

實驗思路

  • 實驗主要分爲兩大部分,虛擬服務器模擬處理任務和主服務器(主線程)模擬分發任務到各個服務器,從而實現任務調度。虛擬服務器怎麼模擬處理任務,爲此,咱們本次實驗採起虛擬服務器資源和虛擬服務器處理任務的多線程來實現任務分配。
    任務調度:任務生成是經過隨機數生成的任務大小和執行時間。任務大小和執行時間會影響到虛擬服務單任務執行時間和資源消耗。好比:任務過大,超出任何一臺服務器的最大的執行的能力,就會出現任務過載,本次實驗,在任務分配前須要檢測。一旦發現,強行做廢,並打印告知管理員。其二,極端任務,本次實驗對極端任務的定義是:極端任務是這個任務執行須要的資源(內存)在全部的虛擬服務器僅此有一臺服務器最大空閒時能知足此要求,這就是極端任務,極端任務須要特殊處理,不須要參與到一致性hash算法的分配算法中,由於此物僅此只能一臺服務器處理。爲此,咱們在定義每臺的虛擬服務器資源,定義了每臺服務器都有本身的任務隊列,都在初始化(new Object())產生本身的內部 獨立的任務分配線程,此任務分配線程只負責處理本身內部的任務隊列,一旦有新的任務,就只鎖上本身(經過內部標誌位),直到爲空時,恢復標誌位。任務隊列任務的添加靠主線程,一旦發現有極端任務,就會添加到對應的虛擬服務器的任務隊列中。從而解決了由於單個極端任務,致使其餘服務器空閒的狀況( 這種極端任務處理機制大大下降的服務器空閒機率)。

實驗算法

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

實驗結果

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


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

  • 下面是極端任務生成的機率低的狀況:算法


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

最後附上java源代碼

資源調度java實現代碼服務器

相關文章
相關標籤/搜索