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