本發(fā)明涉及分布式內存管理和分布式文件系統(tǒng)技術領域,特別涉及一種分布式內存文件系統(tǒng)的實時動態(tài)管理方法及系統(tǒng)。
背景技術:
數據密集形計算正越來越成為計算機集群的重要任務。為加速數據密集形計算,現(xiàn)有的大數據分析系統(tǒng),比如apachespark或者apacheflink,在計算機集群上進行數據密集型計算的時候,有很大一部分內存被用來存儲數據,剩下的內存資源將用于其他計算工作。這樣,內存存儲就會和計算任務競爭內存空間。現(xiàn)有的分布式內存文件系統(tǒng)都是靜態(tài)配置的。當部署分布式內存文件系統(tǒng)時,計算機集群中每一個計算節(jié)點上的分布式內存文件系統(tǒng)的空間就固定了,這就導致了有的時候系統(tǒng)內存不足而有的時候系統(tǒng)內存剩余。
分布式內存文件系統(tǒng)靜態(tài)配置方法存在的弊端:如果靜態(tài)分配方案給內存文件系統(tǒng)過多的內存資源,將使得計算密集型計算的無法得到執(zhí)行所需內存;如果靜態(tài)分配方案給內存文件系統(tǒng)過少的內存資源,則無法讓數據密集型計算高效率執(zhí)行。因此靜態(tài)分配方案不能使數據密集型和計算密集型計算同時高效地運行在計算機集群上。
技術實現(xiàn)要素:
為解決靜態(tài)配置方案不能使分布式數據密集型和計算密集型計算同時高效地運行在計算機集群上的技術問題,本發(fā)明提出一種分布式內存文件系統(tǒng)的動態(tài)管理方法及系統(tǒng)。
一種分布式內存文件系統(tǒng)的實時動態(tài)管理方法,用于對分布式內存文件系統(tǒng)的內存使用量動態(tài)調整,包括以下步驟:
實時收集計算機集群上每個計算節(jié)點在控制時間點的內存使用量;
根據收集到的所述內存使用量對每個計算節(jié)點的下一個控制時間點內存文件系統(tǒng)的內存使用量進行預測;
通過預測出來的內存使用量做出判斷,判斷之后發(fā)出控制指令,控制分布式內存文件系統(tǒng)發(fā)出收回和分配指令。
作為一種可實施方式,所述根據收集到的所述內存使用量對計算節(jié)點的下一個控制時間點內存文件系統(tǒng)的內存使用量進行預測的具體操作為:
每個計算節(jié)點上在i個控制時間點的內存使用比例公式為:
因此,在第i+1個控制時間點,計算節(jié)點上內存文件系統(tǒng)所能占用的內存使用量的計算公式:
ui+1表示計算節(jié)點上內存文件系統(tǒng)在第i+1個控制時間點所能占用的內存使用量,ui表示計算節(jié)點上內存文件系統(tǒng)在第i個控制時間點占用的內存使用量,r0表示計算節(jié)點內存利用率的閾值,vi表示計算節(jié)點在i個控制時間點的內存使用容量,ri表示計算節(jié)點在第i個控制時間點的內存利用率;λ為控制參數。
作為一種可實施方式,所述通過預測出來的內存使用量做出判斷,判斷之后發(fā)出控制指令,控制分布式內存文件系統(tǒng)發(fā)出收回和分配指令的具體操作為:
當內存利用率低于閾值時,則控制分布式內存文件系統(tǒng)發(fā)出分配指令,給第i+1個控制時間點分布式內存文件系統(tǒng),給它增加分配相應的內存使用空間;
當內存利用率大于閾值時,則控制分布式內存文件系統(tǒng)發(fā)出收回指令,給第i+1個控制時間點分布式內存文件系統(tǒng),收回分布式內存文件系統(tǒng)的部分內存使用量。
一種分布式內存文件系統(tǒng)動態(tài)實時管理系統(tǒng),用于對分布式內存文件系統(tǒng)的內存使用量動態(tài)實時調整,包括:
收集計算模塊,用于實時收集計算機集群上每個計算節(jié)點在控制時間點的內存使用量;
預測模塊,用于根據收集到的所述內存使用量對每個計算節(jié)點的下一個控制時間點內存文件系統(tǒng)的內存使用量進行預測;
控制模塊,用于通過預測出來的內存使用量做出判斷,判斷之后發(fā)出控制指令,控制分布式內存文件系統(tǒng)發(fā)出收回和分配指令。
作為一種可實施方式,所述預測模塊設置為:
所述根據收集到的所述內存使用量對計算節(jié)點的下一個控制時間點內存文件系統(tǒng)的內存使用量進行預測的具體操作為,
每個計算節(jié)點上在i個控制時間點的內存使用比例公式為:
因此,在第i+1個控制時間點,計算節(jié)點上內存文件系統(tǒng)所能占用的內存使用量的計算公式:
ui+1表示計算節(jié)點上內存文件系統(tǒng)在第i+1個控制時間點所能占用的內存使用量,ui表示計算節(jié)點上內存文件系統(tǒng)在第i個控制時間點占用的內存使用量,r0表示計算節(jié)點內存利用率的閾值,vi表示計算節(jié)點在i個控制時間點的內存使用容量,ri表示計算節(jié)點在第i個控制時間點的內存利用率;λ為控制參數。
作為一種可實施方式,所述控制模塊設置為:
所述通過預測出來的內存使用量做出判斷,判斷之后發(fā)出控制指令,控制分布式內存文件系統(tǒng)發(fā)出收回和分配指令具體操作為:
當內存利用率低于閾值時,則控制分布式內存文件系統(tǒng)發(fā)出分配指令,給第i+1個控制時間點分布式內存文件系統(tǒng),給它增加分配相應的內存使用空間;
當內存利用率大于閾值時,則控制分布式內存文件系統(tǒng)發(fā)出收回指令,給第i+1個控制時間點分布式內存文件系統(tǒng),收回分布式內存文件系統(tǒng)的部分內存使用量。
一種分布式內存文件系統(tǒng)的實時動態(tài)管理系統(tǒng),包括分布式內存監(jiān)視代理模塊、分布式信息流動處理器、存儲控制器和分布式內存文件系統(tǒng),所述分布式內存監(jiān)視代理模塊連接分布式信息流動處理器,分布式信息流動處理器連接存儲控制器;
所述分布式內存監(jiān)視代理模塊用于實時收集計算機集群中每一個計算節(jié)點的內存使用量信息,將收集到的信息發(fā)送給分布式消息傳送總線;
所述分布式消息傳送總線將收集到的內存使用量從分布式內存監(jiān)視代理模塊傳送到分布式信息流處理器,并且將計算機集群中的每個計算節(jié)點的優(yōu)化好的內存文件系統(tǒng)的空間從分布式信息流處理器傳送到分布式內存控制器;
所述分布式信息流處理器用于處理收集到的計算節(jié)點內存信息并且計算每個節(jié)點的優(yōu)化的內存文件系統(tǒng)的空間;
存儲控制器用于判決、發(fā)出內存回收或分配調節(jié)指令給計算機集群中每一個計算節(jié)點上的分布式內存文件系統(tǒng)。
本發(fā)明相比于現(xiàn)有技術的有益效果在于:
本發(fā)明采用動態(tài)控制的系統(tǒng)和方法,能優(yōu)化計算機集群的內存的使用,從而提高計算機集群上數據密集型和計算密集型計算的效率。
附圖說明
圖1為本發(fā)明的方法示意圖;
圖2為本發(fā)明的系統(tǒng)結構示意圖;
圖3為本發(fā)明的實施例1的系統(tǒng)結構示意圖;
圖4為本發(fā)明的hpcc環(huán)境下的內存使用情況;
圖5為本發(fā)明的實施例1具有hpc集群和大數據加載的典型的計算節(jié)點高級內存的使用情況示意圖;
圖6為本發(fā)明的不同積分增益的數值的內存存儲器減少和分配大小。
具體實施方式
以下結合附圖,對本發(fā)明上述的和另外的技術特征和優(yōu)點進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明的部分實施例,而不是全部實施例。
請參閱以下實施例
示例性方法:
一種分布式內存文件系統(tǒng)的動態(tài)管理方法,,用于對分布式內存文件系統(tǒng)的內存使用量動態(tài)調整,如圖1所示,包括以下步驟,
s1、實時收集計算機集群上每個計算節(jié)點在控制時間點的內存使用量;
s2、根據收集到的所述內存使用量對每個計算節(jié)點的下一個控制時間點內存文件系統(tǒng)的內存使用量進行預測;
s3、通過預測出來的內存使用量做出判斷,判斷之后發(fā)出控制指令,控制分布式內存文件系統(tǒng)發(fā)出收回和分配指令。
更進步一地,所述計算機集群上每一個節(jié)點在第i個時間節(jié)點的內存使用率公式為:
因此,在第i+1個控制時間點,計算節(jié)點上內存文件系統(tǒng)所能占用的內存使用量的計算公式:
ui+1表示計算節(jié)點上內存文件系統(tǒng)在第i+1個控制時間點所能占用的內存使用量,ui表示計算節(jié)點上內存文件系統(tǒng)在第i個控制時間點占用的內存使用量,r0表示計算節(jié)點內存利用率的閾值,vi表示計算節(jié)點在i個控制時間點的內存使用容量,ri表示計算節(jié)點在第i個控制時間點的內存利用率;λ為控制參數。
當內存利用率大于閾值時,即第i+1個控制時間點所能占用的內存使用量和第i個控制時間點占用的內存使用量都已知時,所述通過預測出來的內存使用量做出判斷,判斷之后發(fā)出控制指令,控制分布式內存文件系統(tǒng)發(fā)出收回和分配指令的具體操作為:
當內存利用率低于閾值時,則控制分布式內存文件系統(tǒng)發(fā)出分配指令,給第i+1個控制時間點分布式內存文件系統(tǒng),給它增加分配相應的內存使用空間;
當內存利用率大于閾值時,則控制分布式內存文件系統(tǒng)發(fā)出收回指令,給第i+1個控制時間點分布式內存文件系統(tǒng),收回分布式內存文件系統(tǒng)的部分內存使用量。
也就是說,當預測出下一個控制時間點需要的內存使用量多時,則控制分布式內存文件系統(tǒng)分配內存給此控制時間點使用,而當預測出下一個控制時間點需要的內存使用量少時,則控制控制分布式內存文件系統(tǒng)回收多余內存給其他點使用。
示例性系統(tǒng):一種分布式內存文件系統(tǒng)的動態(tài)管理系統(tǒng),用于對分布式內存文件系統(tǒng)的內存使用量動態(tài)調整,如圖2所示,包括:
收集計算模塊1,用于實時收集計算機集群上每個計算節(jié)點在控制時間點的內存使用量;
預測模塊2,用于根據收集到的所述內存使用量對每個計算節(jié)點的下一個控制時間點內存文件系統(tǒng)的內存使用量進行預測;
控制模塊3,用于通過預測出來的內存使用量做出判斷,判斷之后發(fā)出控制指令,控制分布式內存文件系統(tǒng)發(fā)出收回和分配指令。
更進一步地,所述預測模塊2設置為:
所述計算機集群上每一個節(jié)點在第i個時間節(jié)點的內存使用率公式為:
因此,在第i+1個控制時間點,計算節(jié)點上內存文件系統(tǒng)所能占用的內存使用量的計算公式:
ui+1表示計算節(jié)點上內存文件系統(tǒng)在第i+1個控制時間點所能占用的內存使用量,ui表示計算節(jié)點上內存文件系統(tǒng)在第i個控制時間點占用的內存使用量,r0表示計算節(jié)點內存利用率的閾值,vi表示計算節(jié)點在i個控制時間點的內存使用容量,ri表示計算節(jié)點在第i個控制時間點的內存利用率;λ為控制參數。
更進一步地,控制模塊3還設置為:所述通過預測出來的內存使用量做出判斷,判斷之后發(fā)出控制指令,控制分布式內存文件系統(tǒng)發(fā)出收回和分配指令具體操作為:
當內存利用率低于閾值時,則控制分布式內存文件系統(tǒng)發(fā)出分配指令,給第i+1個控制時間點分布式內存文件系統(tǒng),給它增加分配相應的內存使用空間;
當內存利用率大于閾值時,則控制分布式內存文件系統(tǒng)發(fā)出收回指令,給第i+1個控制時間點分布式內存文件系統(tǒng),收回分布式內存文件系統(tǒng)的部分內存使用量。
實施例1
實施例1為一種實際應用的具體的分布式內存文件系統(tǒng)的實時動態(tài)管理系統(tǒng),如圖3所示,包括分布式內存監(jiān)視代理模塊02、分布式信息流動處理器04、存儲控制器05,所述分布式內存監(jiān)視代理模塊02連接分布式信息流動處理器04,分布式信息流動處理器04連接存儲控制器05;
所述內存監(jiān)視代理模塊02用于實時收集計算機集群中每一個計算節(jié)點的內存使用量信息,將收集到的信息發(fā)送給分布式消息傳送總線01;
所述分布式消息傳送總線01將收集到的每個計算節(jié)點的內存使用量從分布式內存監(jiān)視代理模塊02傳送到分布式信息流處理器04,并且將計算機集群中的每個計算節(jié)點的優(yōu)化分布式內存文件系統(tǒng)01的內存空間從分布式信息流處理器04傳送到分布式內存控制器05;
所述分布式信息流處理器04用于處理收集到的計算節(jié)點內存信息并且計算每個節(jié)點的優(yōu)化的分布式內存文件系統(tǒng)01的空間;
存儲控制器05用于判決、發(fā)出內存回收或分配調節(jié)指令給計算機集群中分布式內存文件系統(tǒng)01的每一個計算節(jié)點。
結合實際系統(tǒng)來闡述本發(fā)明。
如圖5所示,一般情況下,如果我們在給大數據框架的靜態(tài)配置120gb的可用內存,運行hpcc基準計算節(jié)點,我們只能有25gb的內存空間為20gb的內存空間和其他大數據的運行庫和應用程序的執(zhí)行。在大部分的運行時間內至少要分配給hpcc40gb的內存。傳統(tǒng)的靜態(tài)配置不能進行動態(tài)調節(jié),導致了分配給hpcc內存可能在某一控制時間點會產生多余內存,最終無法讓數據密集型計算高效率執(zhí)行。本發(fā)明就是內存存儲進行動態(tài)調整,進而更佳優(yōu)化分布式內存文件系統(tǒng)。
如圖5所示,是一個具有hpc集群上的計算節(jié)點同時運行數據密集形和計算密集形計算的時候的內存的使用情況,根據此使用情況來詳細說明本發(fā)明的方法。
可用的內存空間(除了保留為操作系統(tǒng)運行和緩存保留的內存空間)被分配給hpc應用程序的內存空間n、內存存儲器的內存空間s和大數據應用程序的內存空間e。如果靜態(tài)配置,每個數值都需要從技術人員的經驗中得到:在這里內存空間n常常由hpc應用的峰值存儲量得到,內存空間s和內存空間e由同一節(jié)點的剩余可用的存儲量導出。如果計算機集群生活運行不同的任務,存儲需求也是隨時間變化的,靜態(tài)的結構只能提供一個次優(yōu)的性能。因為,1)在hpc集群中,hpc應用要求的存儲資源常常被過高估計;為了達到實際存儲峰值的要求,用戶不得不對每一個有不同計算參數的應用做詳細的性能分析,這會導致產生很多額外的工作,變得不切實際、難于處理;2)在大數據應用中,選擇優(yōu)化用于任務執(zhí)行和數據存儲的比例也是困難的。
內存空間n、s和e的大小隨著計算節(jié)點上不同任務的運行可以做動態(tài)調整。如果內存的使用率低于閾值,內存存儲s可以占用整個更多的空閑空間。另一方面,當hpc或大數據應用程序運行需要內存時,則內存空間s就需要釋放數據所占用的內存來滿足內存空間n計算所需的內存需求。
內存的使用率對應用程序的性能和系統(tǒng)穩(wěn)定性有密切的關系。內存的使用率必須維持低于一定的臨界閾值。我們提出了一種閉環(huán)反饋控制模式來動態(tài)調整內存存儲器的所用的內存空間,從而保持內存的使用率低于閾值。每個計算節(jié)點上在i個控制時間點的內存使用比例公式為:
因此,在第i+1個控制時間點,計算節(jié)點上內存文件系統(tǒng)所能占用的內存使用量的計算公式:
上述公式中,λ是一個常數,它決定了內存存儲容量的可擴展性。當ri-r0是負數時,ui+1將大于ui,在下一個時間間隔會分配更多的空間給內存存儲器,當ri-r0是正數時,內存控制器會請求去減少ui,從而達到滿足內存利用率的目標。
需要尋找一個合適的λ,這樣分布式內存文件系統(tǒng)的動態(tài)管理系統(tǒng)才是穩(wěn)定的,測量的存儲比例可以盡快地接近參考值r0,如圖6所示,經過驗證對比,λ=0.5時可以實現(xiàn)最好的平衡。
以上所述的具體實施例,對本發(fā)明的目的、技術方案和有益效果進行了進一步的詳細說明,應當理解,以上所述僅為本發(fā)明的具體實施例而已,并不用于限定本發(fā)明的保護范圍。特別指出,對于本領域技術人員來說,凡在本發(fā)明的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。