專利名稱:個人數(shù)據(jù)中心內(nèi)的調(diào)度和管理的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及作業(yè)的調(diào)度和管理,尤其是個人數(shù)據(jù)中心內(nèi)的調(diào)度和管理。
背景技術(shù):
日益常見的是,家庭擁有一個以上計算機,并且這些機器處于家庭網(wǎng)絡(luò)上。這些計算機的每一個都有大量的計算能力、內(nèi)存和存儲容量。當(dāng)前常用的操作系統(tǒng)使人們能很容易地使用本地機器的資源,但難以利用網(wǎng)絡(luò)上其他機器的資源。因此,在運行計算密集的應(yīng)用時,遠程機器的CPU—般是空閑的,它們的內(nèi)存也不可訪問。類似地,在運行I/O密集的應(yīng)用時,本地盤可以得到100 %的利用,但其他存儲設(shè)備是空閑的。家庭計算需求日益增長。例如,視頻編輯和代碼轉(zhuǎn)換日益常用,并且要花費若干小時來完成。即使對于高端家庭計算系統(tǒng),要完成任務(wù)也花費長時間。另一方面,大多數(shù)家庭具有以臺式計算機、膝上型計算機、家庭影院PC(HTPC)形式的多個計算機、以及包含諸如游戲控制臺、移動電話和嵌入式設(shè)備之類的常見計算硬件的非傳統(tǒng)計算設(shè)備(例如機頂盒、路由器和其他設(shè)備)。在數(shù)據(jù)中心設(shè)置中,分布式系統(tǒng)軟件使其能跨多個存儲設(shè)備傳播數(shù)據(jù),并且跨多個機器以并行方式運行計算。數(shù)據(jù)中心通常很同構(gòu),意味著每個機器具有類似的處理器、內(nèi)存量、網(wǎng)絡(luò)帶寬和其他資源。數(shù)據(jù)中心中使用的調(diào)度算法一般是貪婪的并且不考慮機器差異,而是考慮調(diào)度時機器的數(shù)量和可用性。各個公司提供了用于向數(shù)據(jù)中心內(nèi)的多個計算機傳播作業(yè)執(zhí)行的數(shù)據(jù)并行框架,諸如MICROSOFT TM Dryad,Google MapReduce和Yahoo ! Hadoop。這些中的一些還提供了工具集和編程語言來使并行計算更容易,諸如MICROSOFT TM DryadLINQ。類似的功能在家庭/個人設(shè)置中越來越有用,但是由于非均勻性、連接性、功率管理和軟件版本/更新管理等問題而復(fù)雜得多。數(shù)據(jù)中心中有效的假設(shè)在家庭環(huán)境中完全無效。例如,家庭計算機在用戶帶著膝上型計算機或其他移動設(shè)備進入或離開居所時進入和離開。家庭計算機可以使用各種連接類型來進行聯(lián)網(wǎng),諸如在用戶在居所范圍內(nèi)漫游時使用Wi-Fi連接、以及在用戶和膝上型計算機對接時使用有線以太網(wǎng)連接。家庭計算機也可以休眠或者沒電。最終,家庭計算機包括混雜的處理器、圖形處理能力、內(nèi)存量、磁盤空間、 磁盤速度等。這些差異導(dǎo)致分布式計算實際上不存在于家庭或其他小型群集設(shè)置中。
發(fā)明內(nèi)容
這里描述了個人數(shù)據(jù)中心系統(tǒng),該個人數(shù)據(jù)中心系統(tǒng)提供了用于在動態(tài)變化的環(huán)境中利用多個異構(gòu)計算機的框架、以及用于執(zhí)行各個任務(wù)的數(shù)據(jù)并行處理的自組織群集。 在一些實施例中,修改操作系統(tǒng)以提供分布式的文件系統(tǒng)抽象,以及允許對數(shù)據(jù)并行計算進行動態(tài)分割和遠程執(zhí)行的服務(wù)。每個系統(tǒng)的操作系統(tǒng)協(xié)作地度量和分析當(dāng)前可用處理、 通信和存儲資源的性能,并且利用該信息以最有效的方式跨多個機器分割計算。家庭環(huán)境和典型的數(shù)據(jù)中心相比更為異構(gòu)和動態(tài),典型的數(shù)據(jù)中心調(diào)度策略對于這種類型的小型群集并不能很好地工作。家庭內(nèi)的機器可能被開啟或關(guān)閉、被移動并帶到其他地方、并且通過具有有線和無線技術(shù)的混合的自組織網(wǎng)絡(luò)拓撲結(jié)構(gòu)來連接。個人數(shù)據(jù)中心系統(tǒng)提供了組件來克服這些差異。系統(tǒng)標(biāo)識一個動態(tài)可用的機器集合、表征它們的性能、發(fā)現(xiàn)網(wǎng)絡(luò)拓撲結(jié)構(gòu)、并且監(jiān)視機器間的可用通信帶寬。該信息然后用來為數(shù)據(jù)并行和/或高性能計算(HPC) 型的應(yīng)用計算有效的執(zhí)行計劃。提供本發(fā)明內(nèi)容以便以簡化的形式介紹將在以下具體實施方式
中進一步描述的一些概念。本發(fā)明內(nèi)容并不旨在標(biāo)識所要求保護主題的關(guān)鍵特征或必要特征,也不旨在用于限制所要求保護主題的范圍。
圖I是示出在一個實施例中的個人數(shù)據(jù)中心系統(tǒng)的各組件的框圖。圖2是示出在一個實施例中,個人數(shù)據(jù)中心系統(tǒng)在小型、異構(gòu)計算環(huán)境內(nèi)提供并行處理的處理的流程圖。圖3是示出一個實施例中,個人數(shù)據(jù)中心系統(tǒng)收集關(guān)于可用計算資源的處理的流程圖。圖4是示出一個實施例中,個人數(shù)據(jù)中心系統(tǒng)在可用計算資源上調(diào)度作業(yè)的處理的流程圖。
具體實施例方式這里描述了個人數(shù)據(jù)中心系統(tǒng),該個人數(shù)據(jù)中心系統(tǒng)提供了用于在動態(tài)變化的環(huán)境中利用多個異構(gòu)計算機的框架、以及用于執(zhí)行各個任務(wù)的數(shù)據(jù)并行處理的自組織群集。 在一些實施例中,修改操作系統(tǒng)以提供分布式的文件系統(tǒng)抽象,以及允許對數(shù)據(jù)并行計算進行動態(tài)分割和遠程執(zhí)行的服務(wù)。每個系統(tǒng)的操作系統(tǒng)協(xié)作地度量和分析當(dāng)前可用處理、 通信和存儲資源的性能,并且利用該信息以最有效的方式跨多個機器傳播計算。分布式文件系統(tǒng)和群集計算服務(wù)一般部署在具有上千的相同機器、管理良好的基礎(chǔ)設(shè)施、以及足夠的通信帶寬的數(shù)據(jù)中心中。機器確實偶爾會失敗,但通常會連續(xù)地運行。由于全部機器被同一個人信任和擁有,因此安全不是大問題。相反,家庭環(huán)境就更為異構(gòu)和動態(tài)得多。家庭內(nèi)的機器可能被開啟或關(guān)閉、被移動并帶到其他地方、并且通過具有有線和無線技術(shù)的混合的自組織網(wǎng)絡(luò)拓撲結(jié)構(gòu)來連接。個人數(shù)據(jù)中心系統(tǒng)提供了組件來克服這些差異。系統(tǒng)標(biāo)識一個動態(tài)可用的機器集合(處理器、存儲器和存儲)、(通過測量結(jié)果或通過查找數(shù)據(jù)庫中的該信息)表征它們的性能、發(fā)現(xiàn)網(wǎng)絡(luò)拓撲結(jié)構(gòu)、并且監(jiān)視機器間的可用通信帶寬。該信息然后用來為數(shù)據(jù)并行和/或高性能計算(HPC)型的應(yīng)用計算有效的執(zhí)行計劃。多個用戶可擁有機器,并且因此安全性可能比在(全部機器在單一授權(quán)級別下運行)數(shù)據(jù)中心中更加相關(guān),因為是資源的受控共享以提供差別服務(wù)質(zhì)量(例如,坐在機器邊的用戶擁有比遠程地訪問機器資源的用戶更高的優(yōu)先權(quán))。在某些實施例中,個人數(shù)據(jù)中心系統(tǒng)利用來自集群計算的現(xiàn)成軟件和數(shù)據(jù)中心設(shè)置,諸如Dryad、DryadLINQjP TidyFS。 家中的每個機器運行提供遠程進程執(zhí)行和共享文件系統(tǒng)命名空間的服務(wù)進程。數(shù)據(jù)在多個機器上被復(fù)制,使得可以從最接近的副本對其訪問,并且使得即時某些機器被斷電它仍然是可用的。上面的軟件可以用安全性來擴展以保護用戶的數(shù)據(jù)免予其他人的訪問、本地資源劃分以及調(diào)度機制來實施QoS。另外,每個機器的OS運行對本地資源進行標(biāo)識并制定基準、 并向中央數(shù)據(jù)庫注冊這些資源的服務(wù)。操作系統(tǒng)協(xié)作地發(fā)現(xiàn)相關(guān)的網(wǎng)絡(luò)拓撲結(jié)構(gòu)并測量可用的帶寬。在某些實施例中,操作系統(tǒng)根據(jù)全局QoS考慮協(xié)作式地調(diào)度網(wǎng)絡(luò)通信量。中央全局作業(yè)調(diào)度器接受來自任何參與的機器的作業(yè),并且在給定當(dāng)前可用資源集、當(dāng)前作業(yè)集、 及其相關(guān)聯(lián)的QoS參數(shù)的情況下標(biāo)識劃分計算的高效的方式。圖I是示出在一個實施例中的個人數(shù)據(jù)中心系統(tǒng)的各組件的框圖。系統(tǒng)100包括命名空間組件110、進程執(zhí)行組件120、集群資源管理器130、資源標(biāo)識組件140、基準組件 150、作業(yè)調(diào)度組件160、以及作業(yè)管理組件170。這些組件中的每一個都在此處進一步詳細討論。命名空間組件110管理多個計算機之間的共享文件系統(tǒng)命名空間。由于系統(tǒng)100 所處理的數(shù)據(jù)可被存儲在個人數(shù)據(jù)中心中的多個計算機上,因此計算機使用共同的命名空間來引用可標(biāo)識數(shù)據(jù)中心內(nèi)任何位置的文件。命名空間可以像將計算機名追加到每個機器的文件系統(tǒng)命名空間那樣簡單(例如,\\laptop l\c\file. txt,用于訪問名為“l(fā)aptop I” 的機器上標(biāo)記為“C”的驅(qū)動器的根的名為“file, txt”的文件),或者更復(fù)雜以處理問題,諸如相似的機器名、機器名重用、非傳統(tǒng)的文件系統(tǒng)等。例如,命名空間組件110可向每個機器以及機器上的位置分配全局唯一標(biāo)識符用于存儲文件和其他數(shù)據(jù)。進程執(zhí)行組件120管理每個機器上的每個表示系統(tǒng)100所管理的較大作業(yè)的細分的進程的執(zhí)行。進程執(zhí)行組件120可包括在個人數(shù)據(jù)中心中每個計算機上運行的服務(wù)或端口監(jiān)控程序,該服務(wù)或端口監(jiān)控程序從作業(yè)調(diào)度組件160接收指令以在服務(wù)正運行的機器上執(zhí)行作業(yè)的一部分。進程執(zhí)行組件120調(diào)用一個進程,監(jiān)視該進程的進度,并且在該進程的退出處收集執(zhí)行結(jié)果。進程可以執(zhí)行各種任務(wù),諸如對視頻幀進行編碼、搜索盤以查找包括特定文本的文件、或任何其他任務(wù)。集群資源管理器130存儲描述可用的計算資源以及在可用的計算資源上執(zhí)行的正在進行的分布式作業(yè)的信息。集群資源管理器130可包括一個或多個文件、文件系統(tǒng)、 數(shù)據(jù)庫、存儲區(qū)域網(wǎng)絡(luò)(SAN)、外部存儲設(shè)備、基于云的存儲服務(wù)、或用于存儲數(shù)據(jù)的其他設(shè)施。系統(tǒng)100可以選擇即使在數(shù)據(jù)中心環(huán)境改變時有可能保持可用的用于集群資源管理器130的存儲位置。例如,系統(tǒng)可將數(shù)據(jù)存儲在未被配置為睡眠的家庭服務(wù)器或臺式計算機上。另選地或另外地,系統(tǒng)100可以利用通過高可用性、已知的服務(wù)器復(fù)制協(xié)議(諸如 Paxos)或像分布式散列表(DHT)等技術(shù)可以訪問的遠程存儲位置,諸如基于云的存儲。資源標(biāo)識組件140標(biāo)識個人數(shù)據(jù)中心環(huán)境中可用于執(zhí)行分布式、并行計算任務(wù)的計算資源。資源可包括一個或多個設(shè)備,該設(shè)備具有中央處理單元(CPU)、圖形處理單元 (GPU)、存儲器、存儲空間、或可用來執(zhí)行計算任務(wù)或存儲用于執(zhí)行計算任務(wù)的數(shù)據(jù)的其他資源中的任一個。資源標(biāo)識組件140可以通過各種方式來標(biāo)識計算資源。例如,每個可用的計算資源可以運行對個人數(shù)據(jù)中心中的計算資源進行登記的服務(wù),使得主動地向中央?yún)f(xié)調(diào)服務(wù)通知該計算資源。另選地或另外地,組件140可以發(fā)送邀請可用的計算資源進行響應(yīng)的查詢消息,諸如廣播。基準組件150確定每個所標(biāo)識的計算資源的一個或多個能力。制定基準可以從每個計算資源收集靜態(tài)信息和動態(tài)信息。靜態(tài)信息可包括從操作系統(tǒng)查詢的信息,諸如處理器速度、計算核的數(shù)量、存儲器大小、盤大小、網(wǎng)絡(luò)速度等。動態(tài)信息可包括以下信息,諸如計算資源目前有多忙,計算資源與其他計算資源之間的所測量的帶寬、目前可用的存儲器等?;鶞式M件150可以周期性地運行以基于改變的情況重新確定可用的容量。組件150還可以基于計算資源的歷史性能來確定調(diào)度。例如,組件150可以觀察到在臺式系統(tǒng)在特定的時段期間通常是空閑的,而在其他時間期間通常是忙的?;鶞式M件150還可確定計算資源是否正在托管當(dāng)前交互式用戶,因為系統(tǒng)100可以偏好避免使正被積極使用的計算機過載。作業(yè)調(diào)度組件160通過分析所標(biāo)識的計算資源、每個計算資源已確定的能力、以及計算作業(yè)的一個或多個需求來確定用于完成計算作業(yè)的調(diào)度。計算作業(yè)的需求可包括從標(biāo)識作業(yè)可能的處理需求、盤使用、存儲器使用等元數(shù)據(jù)或?qū)ψ鳂I(yè)的其他分析獲取的信息。 作業(yè)的某些部分可以是受CPU限制的,而其他部分可以是受I/O限制或存儲器限制的。同樣,某些計算資源可以很好地適于處理密集的任務(wù),但具有很少的存儲空間用于受I/o限制的作業(yè)。作業(yè)調(diào)度組件160將作業(yè)劃分為可由可用的計算資源執(zhí)行的一個或多個任務(wù)。任務(wù)可包括獨立任務(wù)以及從屬任務(wù),獨立任務(wù)可被并行地執(zhí)行和完成,從屬任務(wù)的輸出擔(dān)當(dāng)對另一個任務(wù)的輸入。調(diào)度考慮了各種需求和依賴性以試圖尋找將以滿足性能標(biāo)準的方式來完成作業(yè)的調(diào)度。例如,在某些情形中,性能標(biāo)準可以尋求縮短完成時間,使得組件160 找到最佳利用每個資源的調(diào)度。在其他情形中,性能標(biāo)準可以尋求避免在公共使用時間期間占用資源,并且組件160找到在空閑時段期間或使用較少的計算資源上運行作業(yè)的調(diào)度。作業(yè)管理組件170管理一個或多個任務(wù)的執(zhí)行,該一個或多個任務(wù)構(gòu)成已確定的調(diào)度所指定的計算資源上的作業(yè)。對于直接任務(wù),管理執(zhí)行可包括收集輸入數(shù)據(jù),在計算資源上執(zhí)行進程,并且收集結(jié)果。對于其他更復(fù)雜的任務(wù),組件170可以監(jiān)視并報告進度、管理對依賴輸入的收集等。作業(yè)管理組件170可以調(diào)用在每個計算資源上運行的進程執(zhí)行組件120的實例以運行任務(wù),以及調(diào)用命名空間組件110的實例以訪問輸入數(shù)據(jù)并收集輸出數(shù)據(jù)。任務(wù)完成時,作業(yè)管理組件170收集任何結(jié)果并在需要提供作業(yè)的輸出的場合對其進行組合。作業(yè)管理組件170還可處理所選計算資源的突然的不可用。例如,用戶可以簡單地帶著膝上型計算機離開,使得連通性不再可用,或者僅在慢得多的網(wǎng)絡(luò)連接上可用。在這種情形中,作業(yè)管理組件170可以調(diào)用作業(yè)調(diào)度組件160以確定新的調(diào)度,使任務(wù)完全失敗,標(biāo)識執(zhí)行任務(wù)的另一個計算資源,或者等待計算資源返回以完成任務(wù)。所選的補救可以依賴于作業(yè)作者或計算資源的用戶所配置的參數(shù)。其上實現(xiàn)個人數(shù)據(jù)中心系統(tǒng)的計算設(shè)備可包括一個或多個中央處理單元、存儲器、輸入設(shè)備(例如,鍵盤和指向設(shè)備)、輸出設(shè)備(例如,顯示設(shè)備)和存儲設(shè)備(例如,盤驅(qū)動器或其他非易失性存儲介質(zhì))。存儲器和存儲設(shè)備是可以用實現(xiàn)或啟用該系統(tǒng)的計算機可執(zhí)行指令(例如,軟件)來編碼的計算機可讀存儲介質(zhì)。此外,數(shù)據(jù)結(jié)構(gòu)和消息結(jié)構(gòu)可被存儲或經(jīng)由諸如通信鏈路上的信號等數(shù)據(jù)傳送介質(zhì)發(fā)送。可以使用各種通信鏈路,諸如因特網(wǎng)、局域網(wǎng)、廣域網(wǎng)、點對點撥號連接、蜂窩電話網(wǎng)絡(luò)等。
該系統(tǒng)的實施例可以在各種操作環(huán)境中實現(xiàn),這些操作環(huán)境包括個人計算機、服務(wù)器計算機、手持式或膝上型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、可編程消費電子產(chǎn)品、數(shù)碼照相機、網(wǎng)絡(luò)PC、小型計算機、大型計算機、包括任何上述系統(tǒng)或設(shè)備、機頂盒、片上系統(tǒng)(SOC)等中任一種的分布式計算環(huán)境等。計算機系統(tǒng)可以是蜂窩電話、個人數(shù)字助理、智能電話、個人計算機、可編程消費電子設(shè)備、數(shù)碼相機等。該系統(tǒng)可以在由一個或多個計算機或其他設(shè)備執(zhí)行的諸如程序模塊等計算機可執(zhí)行指令的通用上下文中描述。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等。通常,程序模塊的功能可在各個實施例中按需進行組合或分布。圖2是示出在一個實施例中,個人數(shù)據(jù)中心系統(tǒng)在小型、異構(gòu)計算環(huán)境內(nèi)提供并行處理的處理的流程圖。在框210中開始,系統(tǒng)確定計算環(huán)境中可用的計算資源??捎玫挠嬎阗Y源可包括一個或多個臺式計算機、膝上型計算機、平板計算機、移動電話、媒體計算機、 家庭服務(wù)器、游戲控制臺、或家庭或其他小型網(wǎng)絡(luò)環(huán)境中的其他計算設(shè)備。系統(tǒng)可以通過各種方式來確定可用的計算資源,如參考圖3進一步詳細說明。系統(tǒng)可以根據(jù)存在于環(huán)境中的資源以及每個資源的當(dāng)前狀態(tài)來確定可用的資源。例如,系統(tǒng)可以基于歷史或其他信息 (例如,指示用戶計劃離開的設(shè)備的日歷),不選擇使用當(dāng)前被用戶使用的或不久可能離開該環(huán)境(例如,移動電話)的資源。在框220中繼續(xù),系統(tǒng)在已確定的可用計算資源上運行一個或多個基準,以確定可用于分布式計算的可用能力。例如,系統(tǒng)可查詢每個計算資源上的操作系統(tǒng)以標(biāo)識靜態(tài)屬性,諸如CPU速度、已安裝的存儲器和盤大小,以及動態(tài)屬性,諸如CPU可用百分比、存儲器使用、盤使用等。系統(tǒng)可以周期性地重新運行基準以使用用于調(diào)度資源以執(zhí)行任務(wù)的關(guān)于每個計算資源的信息來更新中央數(shù)據(jù)存儲。在框230中繼續(xù),系統(tǒng)從始發(fā)計算資源接收作業(yè)用于在一個或多個其他計算資源上執(zhí)行。該作業(yè)可包括對于始發(fā)計算資源過大的作業(yè)或通過利用多個計算資源將更快地完成的作業(yè)?;谝汛_定的調(diào)度,始發(fā)計算資源可以參與或者可以不參與作業(yè)的執(zhí)行。作業(yè)可包括標(biāo)識了作業(yè)的一個或多個需求或要求的元數(shù)據(jù)或其他信息,諸如所涉及的輸入數(shù)據(jù)、作業(yè)的邏輯子任務(wù)、作業(yè)的各部分所消費的資源等。在框240中繼續(xù),系統(tǒng)確定對完成作業(yè)的一個或多個任務(wù)的調(diào)度,其中該任務(wù)可被分發(fā)到計算環(huán)境中的多個可用的計算資源,并且已確定的調(diào)度為每個任務(wù)選擇滿足一個或多個性能標(biāo)準的資源。性能標(biāo)準可包括對作業(yè)進行優(yōu)化以快速地完成,將計算資源保持在特定的可用性級別,或其它目標(biāo)。系統(tǒng)以將任務(wù)的需求與計算資源的計算能力進行配對的方式來調(diào)度任務(wù)。例如,系統(tǒng)將嘗試將處理器密集的任務(wù)調(diào)度到具有快速處理器的計算資源。在框250中繼續(xù),系統(tǒng)將描述每個任務(wù)的信息發(fā)送到可用的計算資源以執(zhí)行該任務(wù)。系統(tǒng)可為每個計算資源提供要執(zhí)行的進程或者為計算資源上已經(jīng)可用的進程提供要執(zhí)行的指令(例如,在虛擬機或可執(zhí)行腳本執(zhí)行引擎的情形中)。系統(tǒng)還可提供標(biāo)識了命名空間中在哪里尋找輸入數(shù)據(jù)和/或放置輸出數(shù)據(jù)的信息。在框260中繼續(xù),系統(tǒng)管理每個任務(wù)直到完成,并且為作業(yè)收集各個任務(wù)結(jié)果。管理每個任務(wù)可包括處理失敗的任務(wù)。任務(wù)可出于各種原因而失敗,諸如計算資源突然變?yōu)椴豢捎?例如,由于用戶登錄或?qū)①Y源帶離環(huán)境)。系統(tǒng)可以通過將失敗的任務(wù)分配給另一個計算資源來嘗試在任務(wù)失敗后完成該作業(yè)。每個任務(wù)完成時,系統(tǒng)收集結(jié)果并按作業(yè)所指示的組合該結(jié)果。例如,如果作業(yè)是可被劃分的一個作業(yè)使得每個任務(wù)朝一個聚集的結(jié)果(例如,對大視頻進行編碼)執(zhí)行小的工作量,則系統(tǒng)可以接收每個任務(wù)的單獨結(jié)果并對其進行組合以形成聚集的結(jié)果。在框270中繼續(xù),系統(tǒng)向始發(fā)計算資源報告作業(yè)結(jié)果。結(jié)果可包括一個或多個結(jié)果代碼、存儲在命名空間中的輸出文件、電子郵件消息等。在框270之后,這些步驟結(jié)束。圖3是示出一個實施例中,個人數(shù)據(jù)中心系統(tǒng)收集關(guān)于可用計算資源的處理的流程圖。系統(tǒng)可在初始建立過程期間執(zhí)行這些步驟,以及不斷地監(jiān)聽新的計算資源。在某些實施例中,系統(tǒng)與諸如提供域名系統(tǒng)(DNS)服務(wù)器的路由器或其他設(shè)備等外部組件進行交互以發(fā)現(xiàn)新的計算資源。很多家庭環(huán)境包括每個計算資源連接到的Wi-Fi和/或以太網(wǎng)路由器。MICROSOFT 具有用于網(wǎng)絡(luò)上的可伸縮節(jié)點發(fā)現(xiàn)的稱為BAND的一個協(xié)議,并且還存在用于確定網(wǎng)絡(luò)交換機和集線器的配置以及測量帶寬的鏈接層拓撲結(jié)構(gòu)發(fā)現(xiàn)(Link Layer Topology Discovery)協(xié)議。在框310中開始,系統(tǒng)在集群資源管理器中創(chuàng)建集群信息記錄。該記錄可包括在數(shù)據(jù)中心環(huán)境中計算資源之一上存儲的文件、商業(yè)數(shù)據(jù)中心中遠程存儲的記錄、或者用于持久地跟蹤環(huán)境中可用的計算資源的某些其它存儲設(shè)施。在框320中繼續(xù),系統(tǒng)發(fā)送網(wǎng)絡(luò)查詢以標(biāo)識個人數(shù)據(jù)中心中的計算資源。例如,網(wǎng)絡(luò)查詢可包括經(jīng)由在個人數(shù)據(jù)中心中發(fā)現(xiàn)的每個連接傳輸而發(fā)送的廣播消息。普通的家庭可包括Wi-Fi網(wǎng)絡(luò)和有線以太網(wǎng)網(wǎng)絡(luò)。系統(tǒng)可在每個網(wǎng)絡(luò)上發(fā)送廣播消息,或者可以將公知的消息定向到每個計算機的已知端口,通過外部信息源來標(biāo)識個人數(shù)據(jù)中心中的該每個計算機。諸如MICROSOFT WINDOWS 等某些操作系統(tǒng)維護已發(fā)現(xiàn)的計算系統(tǒng)的高速緩存, 諸如經(jīng)由服務(wù)器消息塊(SMB)協(xié)議或網(wǎng)絡(luò)文件系統(tǒng)(NFS)協(xié)議來標(biāo)識的那些高速緩存。系統(tǒng)還可使用BAND或此處描述的其他協(xié)議來捕捉該信息。路由器可包括標(biāo)識了已經(jīng)連接到該路由器的每個計算資源的DNS租用表。這些和其他源可以幫助系統(tǒng)來標(biāo)識計算資源。在框330中繼續(xù),系統(tǒng)從可用的計算資源接收一個或多個響應(yīng)。對網(wǎng)絡(luò)查詢的響應(yīng)指示了計算資源可用于分布式計算并且可包括指定關(guān)于計算資源的限制、能力、或其他有用信息的元數(shù)據(jù)。限制可包括關(guān)于在計算資源上調(diào)度的不能被中斷的任務(wù)的信息(例如,在媒體計算機上錄制電視)等。能力可包括制定基準信息、可用的網(wǎng)絡(luò)連接類型等。響應(yīng)還可以指示計算資源一般位于個人數(shù)據(jù)中心以外的時間,諸如指示用戶通常何時在工作的膝上型計算機。在框340中繼續(xù),系統(tǒng)將可用的計算資源添加到集群信息記錄。系統(tǒng)可存儲任何已接收的元數(shù)據(jù)以及用于獲得計算資源的信息,諸如與計算資源相關(guān)聯(lián)的網(wǎng)絡(luò)傳輸和地址。在某些實施例中,系統(tǒng)繼續(xù)監(jiān)聽附加的計算資源以在它們變?yōu)榭捎脮r宣布它們的存在, 如在以下步驟中進一步描述的。在框350中繼續(xù),系統(tǒng)監(jiān)聽附加的計算資源以在個人數(shù)據(jù)中心中宣布它們的可用性。這可以包括在更早的查詢期間被斷開連接的資源,或者對于分布式計算不可用的資源。 系統(tǒng)可以定義(諸如當(dāng)被結(jié)合到操作系統(tǒng)中時)用于宣布計算資源的可用性的協(xié)議,而資源可以在連接到新網(wǎng)絡(luò)后或在其他情況下宣布其自身。在某些實施例中,以前所標(biāo)識的資源可以在某種很短的時間內(nèi)繼續(xù)向服務(wù)器宣布它們的可用性,通知服務(wù)器該資源尚未被斷開連接。在判定框360中繼續(xù),如果系統(tǒng)接收宣布消息,則系統(tǒng)在框370繼續(xù),否則系統(tǒng)循環(huán)到框350以繼續(xù)監(jiān)聽可用的計算資源。只要任何技術(shù)資源被連接到數(shù)據(jù)中心,系統(tǒng)就可以監(jiān)聽,或者系統(tǒng)可在預(yù)定義的建立階段完成后退出該過程。在框370中繼續(xù),系統(tǒng)將已宣布的資源添加到集群信息記錄。系統(tǒng)存儲關(guān)于資源的對調(diào)度任務(wù)以在該資源上執(zhí)行有用的信息。另外,對于任何所標(biāo)識的計算資源,系統(tǒng)可以指導(dǎo)資源安裝用于參與到個人數(shù)據(jù)中心的一個或多個進程或服務(wù),諸如進程執(zhí)行組件和制定基準組件。經(jīng)安裝的進程收集信息并處理難于遠程執(zhí)行的任務(wù)。在框370之后,這些步驟結(jié)束。圖4是示出一個實施例中,個人數(shù)據(jù)中心系統(tǒng)在可用計算資源上調(diào)度作業(yè)的處理的流程圖。在框410中開始,系統(tǒng)確定被提交用于由個人數(shù)據(jù)中心中一個或多個可用的計算資源處理的作業(yè)的一個或多個需求。作業(yè)需求可包括CPU、存儲器、盤、或影響該作業(yè)的執(zhí)行的其他要求。作業(yè)可包括描述該作業(yè)的需求的元數(shù)據(jù),或者系統(tǒng)可通過檢查該作業(yè)(例如,基于編程語言所提供的信息、對可執(zhí)行代碼的靜態(tài)分析、或其他方法)來自動地確定作業(yè)的需求。在框420中繼續(xù),系統(tǒng)將作業(yè)劃分為一個或多個任務(wù),其中每個任務(wù)適于在可用的計算資源之一上執(zhí)行。任務(wù)可由作業(yè)本身來標(biāo)識,或者系統(tǒng)可以自動地標(biāo)識并創(chuàng)建任務(wù)以實現(xiàn)作業(yè)。很多類型的計算問題可被劃分為獨立任務(wù),該獨立任務(wù)可被執(zhí)行并隨后被組合以生成結(jié)果。系統(tǒng)可以基于可用的計算資源的量、基于與每個任務(wù)相關(guān)聯(lián)的需求、或關(guān)于每個任務(wù)將有多高效地在可用的計算資源上執(zhí)行的其他標(biāo)準來劃分作業(yè)。存在將程序細分為任務(wù)的多種方式-這可能導(dǎo)致任務(wù)間的不同的定序約束、和在子任務(wù)間通信的不同的數(shù)據(jù)量。系統(tǒng)可從程序中提取該信息并以任務(wù)依賴圖的形式對其進行存儲,該任務(wù)依賴圖的節(jié)點記錄任務(wù)計算需求的記錄屬性并且任務(wù)依賴圖的邊記錄數(shù)據(jù)/通信需求。另外,系統(tǒng)可包括給定系統(tǒng)中任何給定節(jié)點上的任務(wù)(頂點)的輸入和輸出數(shù)據(jù)的位置,可以預(yù)測其運行時間的組件。在框430中繼續(xù),該系統(tǒng)選擇作業(yè)的第一個任務(wù)。系統(tǒng)對任務(wù)進行排序以便按照特定的順序(例如,通過處理需求)來處理它們,或者可以選擇作業(yè)中所指定的第一個任務(wù)。在隨后的迭代中,該系統(tǒng)選擇下一個任務(wù)。在框440中繼續(xù),系統(tǒng)確定用于執(zhí)行所選任務(wù)的合適的計算資源。系統(tǒng)對任務(wù)的需求與每個計算資源所標(biāo)識的能力進行匹配。系統(tǒng)使用此處描述的制定基準來維護對每個計算資源的能力的最新視圖,并且隨后對制定基準結(jié)果與合適的任務(wù)進行匹配。例如,計算繁重的任務(wù)有可能適于具有快速處理器的計算機,而輸出繁重的任務(wù)可能適于具有存儲結(jié)果的大量磁盤空間的計算機。系統(tǒng)將每個任務(wù)與合適的計算資源進行配對。在某些情形中,對系統(tǒng)的調(diào)度可能不會將特定任務(wù)與最快的資源進行配對,以便提高完成作業(yè)的整體速度。所屬領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,為特定的任務(wù)確定資源可由從簡單到復(fù)雜的多個算法來執(zhí)行。例如,可存在其輸入數(shù)據(jù)已經(jīng)準備好的兩個任務(wù)(即,滿足全部依賴性)。系統(tǒng)可以決定在不同節(jié)點上運行它們,但它們的輸入數(shù)據(jù)目前可能駐留在同一磁盤上。如果兩個任務(wù)同時訪問同一磁盤,則它們會發(fā)現(xiàn)下降的性能。較有經(jīng)驗的調(diào)度器可能注意到這種效果,并且安排兩個任務(wù)的輸入數(shù)據(jù)存儲在不同的位置,或者有意選擇不同時運行兩個 “可運行的”任務(wù)。作為另一個示例,系統(tǒng)可能偏好靜態(tài)地計算調(diào)度,但由于計算時間的數(shù)據(jù)依賴性以及由于系統(tǒng)資源上的可變的負載,這可能是不實際的,使得調(diào)度包括動態(tài)地作出這種決定的運行時組件。在框450中繼續(xù),系統(tǒng)確定完成任務(wù)的順序。每個任務(wù)可以具有對其他任務(wù)的依賴性,并且存在比計算資源更多的任務(wù),使得系統(tǒng)調(diào)度每個任務(wù)以按照特定的順序來執(zhí)行。 系統(tǒng)確定將允許每個任務(wù)的輸出對消費該輸出的任務(wù)是可用的以及將生成滿足系統(tǒng)的一個或多個性能標(biāo)準的調(diào)度的順序。在框460中繼續(xù),系統(tǒng)將任務(wù)信息存儲在可由可用的計算資源執(zhí)行的調(diào)度中。系統(tǒng)可將調(diào)度存儲到磁盤或存儲器中,并且調(diào)用系統(tǒng)的其他組件來執(zhí)行該調(diào)度并操控對結(jié)果的處理。在判決框470中繼續(xù),如果存在要調(diào)度的更多個任務(wù),則系統(tǒng)循環(huán)到框430以選擇下一個任務(wù),否則系統(tǒng)完成。在每個任務(wù)已被調(diào)度之后,調(diào)度完成,并且系統(tǒng)可以根據(jù)已確定的調(diào)度開始發(fā)出和執(zhí)行任務(wù)。在框470之后,這些步驟結(jié)束。在某些實施例中,個人數(shù)據(jù)中心系統(tǒng)與個人數(shù)據(jù)中心以外的商用數(shù)據(jù)中心進行接口以執(zhí)行某些任務(wù)。例如,商用數(shù)據(jù)中心(例如,MICROSOFT WINDOWS AZURE )可以向家庭用戶提供訂閱或按使用的計劃,該計劃允許家庭用戶付費以在具有比個人數(shù)據(jù)中心中可用的更快的規(guī)格的硬件上遠程地執(zhí)行特定的計算密集的任務(wù)。用戶可以選擇付費以更快地完成作業(yè),并且由此可以選擇商用數(shù)據(jù)中心作為完成某些任務(wù)的可選計算資源。系統(tǒng)可在調(diào)度期間結(jié)合該信息以(例如,通過使用商用數(shù)據(jù)中心)提高速度、(例如,通過在個人數(shù)據(jù)中心資源足夠時避免商用數(shù)據(jù)中心)降低成本等。性能預(yù)測幫助用戶評估為附加資源所支付的成本/收益。在某些實施例中,個人數(shù)據(jù)中心系統(tǒng)存儲關(guān)于每個計算資源的歷史調(diào)度信息,并且收集其他調(diào)度提示。例如,系統(tǒng)可以訪問與特定計算設(shè)備或用戶相關(guān)聯(lián)的約會的日歷,該日歷指示何時移動計算資源可能不可用或通過更慢的網(wǎng)絡(luò)連接(例如,3G對Wi-Fi)來連接。系統(tǒng)還可存儲關(guān)于之前已經(jīng)運行過的每個程序/作業(yè)的信息。系統(tǒng)保留統(tǒng)計數(shù)據(jù)以改善未來的性能生成。系統(tǒng)可以基于歷史來確定計算資源有可能在已調(diào)度作業(yè)期間離開,并且避免將任務(wù)調(diào)度到該資源。另一方面,對于在設(shè)備將返回之后到期的作業(yè),即使在設(shè)備移入或移出對個人數(shù)據(jù)中心的可訪問性時,系統(tǒng)也可以能夠利用調(diào)度中的該設(shè)備。諸如電池壽命之類的其他問題也可以通知系統(tǒng)的調(diào)度選擇。在某些實施例中,個人數(shù)據(jù)中心系統(tǒng)使用地理位置信息來標(biāo)識計算資源的位置, 并且基于從位置推斷的信息來調(diào)度資源。例如,系統(tǒng)可以基于全球定位系統(tǒng)(GPS)信息來確定用戶正攜帶移動計算設(shè)備返回家中,并且不久將位于快速(例如,Wi-Fi)網(wǎng)絡(luò)連接的范圍內(nèi)。因此,系統(tǒng)可以調(diào)度一個或多個任務(wù)在移動設(shè)備上執(zhí)行,即使設(shè)備當(dāng)前可能具有較慢的連接。從前面的描述中可以看出,可以理解,此處描述的個人數(shù)據(jù)中心系統(tǒng)的特定實施例只是為了說明,但是,在不偏離本發(fā)明的精神和范圍的情況下,可以進行各種修改。例如, 雖然已經(jīng)描述了在家庭設(shè)置中使用該系統(tǒng),但該系統(tǒng)還可被應(yīng)用于計算資源的其他小型、異構(gòu)分組中,諸如小型辦公室、咖啡店、教室等。因此,本發(fā)明只受所附權(quán)利要求限制。
權(quán)利要求
1.一種在異構(gòu)的個人計算環(huán)境中提供并行處理的計算機實現(xiàn)的方法,所述方法包括確定所述計算環(huán)境中一個或多個可用的計算資源(210);在已確定的可用的計算資源上運行一個或多個基準,以確定可用于分布式計算的可用能力(220);從始發(fā)計算資源接收作業(yè)用于在一個或多個其他計算資源上執(zhí)行(230);確定一個或多個任務(wù)的調(diào)度(240)以完成所述作業(yè),其中所述任務(wù)可被分發(fā)到所述計算環(huán)境中的多個可用的計算資源,并且已確定的調(diào)度為每個任務(wù)選擇滿足一個或多個性能標(biāo)準的資源;將描述每個任務(wù)的信息發(fā)送到可用的計算資源以執(zhí)行所述任務(wù)(250);管理每個任務(wù)直到完成,并且為所述作業(yè)收集各個任務(wù)結(jié)果(260);以及向所述始發(fā)計算資源報告作業(yè)結(jié)果(270),其中,前面的步驟由至少一個處理器執(zhí)行。
2.如權(quán)利要求I所述的方法,其特征在于,確定一個或多個可用的計算資源包括標(biāo)識經(jīng)由家中的一個或多個網(wǎng)絡(luò)連接的一個或多個臺式計算機、膝上型計算機、平板計算機、移動電話、媒體計算機、家庭服務(wù)器、以及游戲控制臺。
3.如權(quán)利要求I所述的方法,其特征在于,確定一個或多個可用的計算資源包括不選擇使用當(dāng)前正被用戶所使用的或者不久可能離開所述環(huán)境的資源。
4.如權(quán)利要求I所述的方法,其特征在于,運行一個或多個基準包括查詢每個計算資源上的操作系統(tǒng)以標(biāo)識所述資源的靜態(tài)和動態(tài)屬性。
5.如權(quán)利要求I所述的方法,其特征在于,運行一個或多個基準包括周期性地重新運行基準以使用關(guān)于每個計算資源的可用性的信息來更新中央數(shù)據(jù)存儲,所述信息用于調(diào)度所述資源以執(zhí)行任務(wù)。
6.如權(quán)利要求I所述的方法,其特征在于,接收所述作業(yè)包括接收通過利用多個計算資源而不是單個所述始發(fā)計算資源而將更快地完成的作業(yè)。
7.如權(quán)利要求I所述的方法,其特征在于,接收所述作業(yè)包括接收標(biāo)識了所述作業(yè)的一個或多個需求的元數(shù)據(jù),所述一個或多個需求影響如何將所述作業(yè)調(diào)度到可用的計算資源。
8.如權(quán)利要求I所述的方法,其特征在于,確定所述調(diào)度包括通過對所述作業(yè)的任務(wù)的需求與可用的計算資源的能力進行匹配,對所述作業(yè)進行優(yōu)化以快速地完成。
9.如權(quán)利要求I所述的方法,其特征在于,所述性能標(biāo)準包括避免利用具有當(dāng)前交互式用戶的計算資源。
10.如權(quán)利要求I所述的方法,其特征在于,所述性能標(biāo)準包括標(biāo)識有可能在最快可能的時間內(nèi)完成的調(diào)度。
11.如權(quán)利要求I所述的方法,其特征在于,發(fā)送描述每個任務(wù)的信息包括為每個計算資源提供要執(zhí)行的進程,或者為所述計算資源上已經(jīng)可用的進程提供要執(zhí)行的指令,以執(zhí)行所述任務(wù)。
12.一種用于管理異構(gòu)的個人數(shù)據(jù)中心的計算機系統(tǒng),所述系統(tǒng)包括被配置成執(zhí)行包含在以下組件內(nèi)的軟件指令的處理器和存儲器;命名空間組件(Iio),管理所述個人數(shù)據(jù)中心中的多個計算機之間的共享文件系統(tǒng)命名空間;進程執(zhí)行組件(120),管理每個計算資源上的進程的執(zhí)行,其中每個進程表示所述系統(tǒng)所管理的較大作業(yè)的細分;集群資源管理器(130),存儲描述可用的計算資源以及在可用的計算資源上執(zhí)行的進行中的分布式作業(yè)的信息;資源標(biāo)識組件(140),標(biāo)識可用于執(zhí)行分布式、并行計算任務(wù)的個人數(shù)據(jù)中心環(huán)境中的計算資源;基準組件(150),確定每個所標(biāo)識的計算資源的一個或多個能力;任務(wù)調(diào)度組件(160),被配置為通過分析所標(biāo)識的計算資源、每個計算資源已確定的能力、以及所述計算作業(yè)的一個或多個需求來確定用于完成計算作業(yè)的調(diào)度;以及作業(yè)管理組件(170),管理一個或多個任務(wù)的執(zhí)行,所述一個或多個任務(wù)構(gòu)成已確定的調(diào)度所指定的計算資源上的作業(yè)。
13.如權(quán)利要求12所述的系統(tǒng),其特征在于,所述進程執(zhí)行組件包括在所述個人數(shù)據(jù)中心中的每個可用的計算資源上運行的服務(wù)或端口監(jiān)控程序,所述服務(wù)或端口監(jiān)控程序從所述作業(yè)調(diào)度組件接收指令以在所述服務(wù)正運行的計算資源上執(zhí)行作業(yè)的一部分。
14.如權(quán)利要求12所述的系統(tǒng),其特征在于,選擇即使在所述數(shù)據(jù)中心環(huán)境改變時也有可能保持可用的所述集群資源管理器的位置。
15.如權(quán)利要求12所述的系統(tǒng),其特征在于,所述作業(yè)調(diào)度組件將作業(yè)劃分為可由所述可用的計算資源執(zhí)行的一個或多個任務(wù),其中每個任務(wù)是可在單個計算資源上并行執(zhí)行并完成的獨立任務(wù)。
全文摘要
本發(fā)明涉及個人數(shù)據(jù)中心內(nèi)的調(diào)度和管理。這里描述了個人數(shù)據(jù)中心系統(tǒng),該個人數(shù)據(jù)中心系統(tǒng)提供了用于在動態(tài)變化的環(huán)境中利用多個異構(gòu)計算機的框架、以及用于執(zhí)行各個任務(wù)的數(shù)據(jù)并行處理的自組織群集。家庭環(huán)境和典型的數(shù)據(jù)中心相比更為異構(gòu)和動態(tài),典型的數(shù)據(jù)中心調(diào)度策略對于這種類型的小型群集并不能很好地工作。家庭內(nèi)的機器可能被開啟或關(guān)閉、被移動并帶到其他地方、并且通過具有有線和無線技術(shù)的混合的自組織網(wǎng)絡(luò)拓撲結(jié)構(gòu)來連接。個人數(shù)據(jù)中心系統(tǒng)提供了組件來克服這些差異。系統(tǒng)標(biāo)識一個動態(tài)可用的機器集合、表征它們的性能、發(fā)現(xiàn)網(wǎng)絡(luò)拓撲結(jié)構(gòu)、并且監(jiān)視機器間的可用通信帶寬。該信息然后用來為數(shù)據(jù)并行和/或高性能計算(HPC)型的應(yīng)用計算有效的執(zhí)行計劃。
文檔編號G06F17/30GK102591921SQ20111042845
公開日2012年7月18日 申請日期2011年12月19日 優(yōu)先權(quán)日2010年12月20日
發(fā)明者J·N·菲格羅亞, P·巴勒姆 申請人:微軟公司