本發(fā)明屬于計算資源的統(tǒng)一管理與調度方法,具體地涉及一種基于ARM架構的網(wǎng)絡集群中計算資源的統(tǒng)一管理與動態(tài)調度方法。
背景技術:
業(yè)界一直在尋找基于ARM的系統(tǒng)級新品(SoC)作為英特爾x86架構芯片數(shù)據(jù)中心中的替代品。英國的ARM公司只是負責設計低功耗芯片,然后授權像三星、高通這樣的設計制造商。如今,ARM芯片已經(jīng)入駐了移動設備市場,啟動大部分芯片被應用到智能手機和平板電腦中。現(xiàn)在,ARM公司正在開發(fā)64位架構的芯片并且正在尋找制造商將這種高效的SoC芯片設計到數(shù)據(jù)中心中,這種數(shù)據(jù)中心更有利于橫向擴展,如HPC、網(wǎng)格計算和數(shù)據(jù)分析所使用的服務器,刺激已經(jīng)吸引了很多的芯片制造商加入,如高通、超微、Broadcom和Cavium等。
隨著云計算、大數(shù)據(jù)等行業(yè)的發(fā)展,越來越多的數(shù)據(jù)中心被建立起來,他們需要更有效的方式來為數(shù)據(jù)中心節(jié)省成本,像Facebook、谷歌和亞馬遜公司的數(shù)據(jù)中心都快速的征兆,他們也在尋找技術,幫助他們降低運營和子產(chǎn)品成本。通過與ARM架構的合作,提升每美元在數(shù)據(jù)中心的價值。
相對于英特爾主導的X86架構,ARM架構的最大優(yōu)勢在于兩點:低功耗與低成本。也就是說ARM架構在價格和性能之比與能耗和性能之比這兩方面非常出眾,而且價格和能耗也是構建一個云計算中心非常重要的兩個因素,因為在一個云計算中心中會有海量的服務器,由于其巨大的規(guī)模,使其不論在服務器的購置成本,還是在能耗方面,都開支很大。
由于數(shù)據(jù)中心里有1/3的支出都用于電費開支,企業(yè)對低功耗服務器的需求比較迫切,這也使得近年來英特爾和AMD開始關注低功耗服務器芯片的研發(fā),甚至與一些企業(yè)用戶聯(lián)合研制基于移動芯片如Atom的服務器。ARM在這方面的優(yōu)勢極為明顯,一般是x86芯片的五分之一。
在過去的十幾年內,無論是高端科學計算、還是信息服務,集群系統(tǒng)已經(jīng)成為主流計算平臺。在集群之上產(chǎn)生了許多通用型分布式計算框架(比如Hadoop)和專用的科學計算分布式計算框架(比如BONIC)。
X86架構和ARM架構最根本的區(qū)別在于處理器指令集的不同,X86架構基于所謂的復雜指令集(CISC)系統(tǒng),而ARM架構基于精簡指令集(RISC)系統(tǒng)。在同樣的指令執(zhí)行密度下,結合緩存和總線設計優(yōu)化,X86架構下實際指令執(zhí)行能力可以達到ARM架構的3~5倍。因此,簡單采用1對1 的方式用ARM處理器代替X86處理器(比如同樣都是4核,主頻均為2.4GHz),在減少功耗的同時也帶來了性能的下降。
現(xiàn)有的集群計算框架包括了通用型分布式計算框架(比如Hadoop)和專用的科學計算分布式計算框架(比如BONIC),這些框架需要重新開發(fā)計算模式(比如Hadoop的MapReduce),或者重新使用MPI等底層技術開發(fā)專用集群分布式計算系統(tǒng)(比如BONIC)?,F(xiàn)有的單節(jié)點應用無法直接利用這些分布式計算框架帶來的便利,比如高可用性(High Availability)和可擴展性(Scalability)。
技術實現(xiàn)要素:
針對上述技術問題,本發(fā)明旨在提供一種基于ARM架構的網(wǎng)絡集群中計算資源的統(tǒng)一管理與動態(tài)調度方法,利用單一系統(tǒng)鏡像的方法,使得現(xiàn)有應用無需修改,就可以通過現(xiàn)有Linux操作系統(tǒng)對SMP架構的支持,充分利用多個ARM服務器上的計算資源,提高應用在ARM服務器網(wǎng)絡集群上的運行性能,可用性和可擴展性。
為達到上述目的,本發(fā)明的技術方案是:
一種ARM架構網(wǎng)絡集群中計算資源的統(tǒng)一管理調度方法,其特征在于,包括以下步驟:
S01:在虛擬層和物理層之間設置有一個全局容器層,所述全局容器層用于攔截虛擬層與物理層之間的系統(tǒng)事件,并重定向到本地或者遠程節(jié)點的物理層;
S02:通過一個可配置的全局調度器,在集群層面把應用對應的進程加入到某個節(jié)點上的操作系統(tǒng)內核調度隊列中,或者從隊列中刪除該進程,所述可配置的全局調度器不改變操作系統(tǒng)內核中已有的對本地的資源調度。
優(yōu)選的,所述步驟S01包括將每個節(jié)點上的全局容器層關聯(lián)到一個映射接口鏈接器和一個輸入/輸出鏈接器,虛擬層通過映射接口鏈接器把相應的系統(tǒng)調用請求發(fā)送到全局容器層,全局容器層根據(jù)相應的調度管理把請求重定向到本地或者遠程的輸入/輸出鏈接器,每個節(jié)點上的輸入/輸出鏈接器把請求發(fā)送到相應的物理驅動。
優(yōu)選的,所述物理驅動包括磁盤、物理內存和網(wǎng)絡設備。
優(yōu)選的,所述全局調度器包括本地探測模塊、本地分析模塊和全局調度管理器;所述本地探測模塊:負責調用操作系統(tǒng)內核API收集系統(tǒng)信息;
所述本地分析模塊:負責收集來自本地探測模塊的數(shù)據(jù),對本地資源使用情況進行分析,并評估當前本地系統(tǒng)資源使用情況,將異常資源狀態(tài)匯報到全局調度管理器;
所述全局調度管理器:運行在集群的所有節(jié)點上,擁有集群資源狀態(tài)的全局視圖,與節(jié)點之間交換狀態(tài)信息,同時負責節(jié)點之間進程的分配和集群層面的資源負載均衡,當本地分析模塊報告資源使用情況超出閾值時,全局調度管理器根據(jù)調度策略和集群全局資源使用情況,決定新的計算任務的分配和計算任務的遷移,同時設置檢查點。
優(yōu)選的,所述全局調度管理器通信方式為P2P ,用json格式交換節(jié)點間的狀態(tài)信息。
與現(xiàn)有技術相比,本發(fā)明的有益效果是:
1、基于ARM計算服務器的網(wǎng)絡集群提供了一個替代X86服務器的更高能耗比的方案,本發(fā)明可以讓已有應用在不需要重新開發(fā)的情況下,充分利用操作系統(tǒng)對SMP架構的優(yōu)化支持,在ARM集群上提高應用的運行性能,并且提供了高可靠性和可擴展性。
2、該方法基于全局容器的ARM網(wǎng)絡集群單一系統(tǒng)鏡像模塊化架構,可配置的全局資源動態(tài)調度方法和架構,對所有計算資源(處理器,內存,磁盤)實行全局統(tǒng)一管理并進行高效的動態(tài)調度,從而提供一個相當于對稱多處理器(SMP)架構上的單機Linux操作系統(tǒng)的開發(fā)和運行環(huán)境,具有低成本、高性能、低耗電的特性。
附圖說明
圖1為本發(fā)明ARM架構網(wǎng)絡集群中計算資源的統(tǒng)一管理調度方法的跨操作系統(tǒng)的全局容器;
圖2為本發(fā)明ARM架構網(wǎng)絡集群中計算資源的統(tǒng)一管理調度方法的全局調度分層架構圖;
圖3為本發(fā)明ARM架構網(wǎng)絡集群中計算資源的統(tǒng)一管理調度方法的全局調度調用序列圖。
具體實施方式
為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚明了,下面結合具體實施方式以及附圖,對本發(fā)明進一步詳細說明。應該理解,這些描述只是示例性的,而并非要限制本發(fā)明的范圍。此外,在以下說明中,省略了對公知結構和技術的描述,以避免不必要地混淆本發(fā)明的概念。
實施例:
本發(fā)明的技術方案主要包括兩個方面:
1)對Linux操作系統(tǒng)內核的修改
如圖1所示,現(xiàn)代操作系統(tǒng)(以Linux為例)從邏輯上可以分為兩層:虛擬層和物理層。虛擬層提供了應用開發(fā)接口的實現(xiàn)和資源的虛擬化。物理層提供了設備的訪問(比如磁盤,網(wǎng)卡,物理內存等)。
對操作系統(tǒng)內核的修改體現(xiàn)在增加了一個全局容器層,它位于虛擬層和物理層之間。所有虛擬層和物理層之間的系統(tǒng)事件將被攔截并被重定向到本地或者遠程節(jié)點的物理層,從而實現(xiàn)了資源的分布式訪問。
在每個節(jié)點上的全局容器被關聯(lián)到兩個鏈接器:一個映射接口鏈接器和一個輸入/輸出鏈接器。
操作系統(tǒng)的虛擬層,包括文件系統(tǒng)/虛擬內存管理/進程管理等通過映射接口鏈接器把相應的系統(tǒng)調用請求發(fā)送到全局容器,全局容器根據(jù)相應的調度管理把請求重定向到本地或者遠程的輸入/輸出鏈接器,每個節(jié)點上的輸入/輸出鏈接器把請求發(fā)送到相應的物理驅動,包括了磁盤管理/物理內存管理和其他設備驅動等,從而實現(xiàn)了對本地或遠程的計算資源的透明訪問,這些資源包括了磁盤,物理內存和網(wǎng)絡設備等。
2)一個可配置的全局調度器。
可配置的全局調度器不改變Linux內核當中已有的對本地的資源調度,它在集群層面把應用對應的進程加入到某個節(jié)點上的Linux內核調度隊列中,或者從隊列中刪除該進程。
如圖2、3所示,全局調度器分為三個邏輯模塊,分別是本地探測模塊,本地分析模塊和全局調度管理器。
本地探測模塊:負責調用操作系統(tǒng)內核API收集系統(tǒng)信息,一個節(jié)點上可能運行有多個探查模塊,分別對應不同的計算資源,比如CPU,內存,網(wǎng)絡,磁盤等。
本地分析模塊:負責收集來自探測模塊的數(shù)據(jù),對本地資源使用情況進行分析,并評估當前本地系統(tǒng)資源使用情況以發(fā)現(xiàn)異常資源狀態(tài)并匯報到全局調度管理器。一個節(jié)點上可以運行多個分析模塊,每個分析模塊關聯(lián)到一組探測模塊,比如一個磁盤分析器可以關聯(lián)到兩個磁盤探測模塊,分別探測磁盤的使用容量情況和當前磁盤讀寫速度。
全局調度管理器:擁有集群資源狀態(tài)的全局視圖,運行在集群的所有節(jié)點上,以P2P的方式進行通信,用json格式交換節(jié)點之間的狀態(tài)信息。同時負責節(jié)點之間進程的分配和集群層面的資源負載均衡。每個全局調度器關聯(lián)到多個本地的分析模塊,當分析模塊報告資源使用情況超出閾值時,全局調度器根據(jù)調度策略和集群全局資源使用情況,決定新的計算任務的分配和計算任務的遷移,同時根據(jù)需要設置檢查點。
集群內部資源調度節(jié)點之間交換信息基于標準JSON格式,示例如下:
{
"schedulers": {
"scheduler": {
"nodes":"node1,node2",
"name":"cluster_global_scheduler1",
"profile":"default_scheduling_manager",
"analyzers":[
{" analyzer":{
"profile":"disk_local_analyzer",
"name":"disk_analyzer1",
"monitors":[
{"profile":"disk_usage_probe", "name":"probe1", "timer":"5"},
{"profile":"disk_iospeed_probe", "name":"probe2", "timer":"1"},
]
},
{" analyzer":{
"profile":"memory_local_analyzer",
"name":"mem_analyzer1",
"monitors":[
{"profile":"phy_mem_usage_probe", "name":"probe3", "timer":"5"},
{"profile":"vir_mem_usage_probe", "name":"probe4", "timer":"1"},
]
}
]
}
}
}
}
本發(fā)明基于ARM計算服務器的網(wǎng)絡集群提供了一個替代X86服務器的更高能耗比的方案,本發(fā)明可以讓已有應用在不需要重新開發(fā)的情況下,充分利用操作系統(tǒng)對SMP架構的優(yōu)化支持,在ARM集群上提高應用的運行性能,并且提供了高可靠性和可擴展性。
應當理解的是,本發(fā)明的上述具體實施方式僅僅用于示例性說明或解釋本發(fā)明的原理,而不構成對本發(fā)明的限制。因此,在不偏離本發(fā)明的精神和范圍的情況下所做的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。此外,本發(fā)明所附權利要求旨在涵蓋落入所附權利要求范圍和邊界、或者這種范圍和邊界的等同形式內的全部變化和修改例。