專利名稱:用以降低事件驅動系統中的功率和/或冷卻成本的分散式負荷分配的制作方法
技術領域:
本發明總體地涉及借助多個軟件實現的任務,利用多個節點的數據流處理,更具體地說,涉及通過把任務集中到滿足負荷分配質量方面的預定標準(比如預期的端到端吞吐時間)的稱為目標節點的可能節點的子集,從而作為一種經濟措施,允許無任務的其它節點處于靜態,目的在于降低能量消耗的負荷分配。
背景技術:
隨著因特網連接和網絡連接的傳感器設備的激增,可從大量的在線來源獲得的數字信息的速率不斷增大。這些在線來源以數據流的形式連續地生成數據(例如,新聞項目, 金融數據,傳感器讀數,因特網交易記錄等)并把該數據提供給網絡。通常在網絡中實現數據流處理單元,以接收或監視這些數據流并處理它們,從而產生可用格式的結果。例如,可以實現數據流處理單元,以進行其中挑選并隨后集合或評估來自兩個以上數據流(即,來自兩個以上的新聞來源)的相關數據項的結合操作,以產生結果的列表,或者相互確證。不過,典型數據流的輸入速率提出了挑戰。由于數據流處理單元不能控制有時偶發的且不可預測的數據流輸入的速率,因此數據流處理單元的負荷變得越過其容量的情況并不少見,尤其是在速率峰值期間。典型的數據流處理單元通過任意地丟棄數據流(例如, 拒絕接收數據流)來處理這種負荷問題。雖然這降低了負荷,不過,這種策略的隨意性往往會導致不可預知的且次最佳的數據處理結果,因為在保持和處理包含無關數據的數據流的時候,可能會不知不覺地丟棄包含有用數據的數據流。大多數已知的事件驅動系統中的負荷分配解決方案假定事件處理組件是沒有狀態的。極少的解決方案把有狀態的算子(operator)作為目標,因為為負荷分配的目的而遷移有狀態的算子是困難的且昂貴的。為了遷移有狀態的算子,必須停止所有數據流處理,必須遷移所有必要的狀態,并且應相應地更新所有事件路由路徑。此外,這些解決方案的大部分都是集中式的。
發明內容
考慮到機器群集能夠分配工作負荷,本發明人提出的不同策略是試圖利用多個節點處理工作負荷。如果在數據流容量降低的時段期間使用這樣的策略,那么把任務移回較少的節點并使一些節點完全處于靜態的策略能夠降低功率成本和冷卻成本。按照本發明的第一方面,通過提供一種事件驅動系統中的分散式負荷分配方法, 實現如上文和后文所述的本發明的各種優點和目的,所述方法包括下述步驟接收將由在事件驅動系統中的多個節點處的多個任務處理的數據流,所述事件驅動系統具有有狀態的事件處理組件和無狀態的事件處理組件,其中所述多個任務選自由分層任務、非分層任務和它們的混合物構成的組中,其中分層任務是取決于另一個任務的輸出的任務,其中非分層任務是不取決于另一個任務的輸出的任務;收集與容宿(host)于每個節點處的每個任
7務和所述節點的特性相關的統計信息,所述節點的特性包括其熱特性;利用收集的統計信息,創建任務能夠部分地或全部地轉移到的相鄰節點的列表;選擇在節點處的考慮遷移到相鄰節點列表中的稱為目標節點的相鄰節點的具有第一溫度的稱為目標任務的至少一個任務,以分配處理所述至少一個任務的系統負荷并降低冷卻成本;選擇至少一個目標任務能夠被遷移到的目標節點,其中目標節點具有第二溫度;在遷移會降低第一溫度并且第二溫度低于預定的可接受的熱閾值的條件下,把目標任務遷移到目標節點;和在每個節點處建立負荷交換協議以便管理目標任務的遷移的數目,其中分散式負荷遷移導致事件驅動系統中的總系統負荷分配,并降低冷卻成本。按照本發明的第二方面,提供一種計算機程序產品,其包括計算機可讀存儲介質, 所述計算機可讀存儲介質具有用于事件驅動系統中的分散式負荷分配的計算機可讀程序代碼,該計算機可讀程序代碼包括被配置為用于接收將由在事件驅動系統中的多個節點處的多個任務處理的數據流的計算機可讀程序代碼,所述事件驅動系統具有有狀態的事件處理組件和無狀態的事件處理組件,其中所述多個任務選自由分層任務、非分層任務和它們的混合物構成的組中,其中分層任務是取決于另一個任務的輸出的任務,其中非分層任務是不取決于另一個任務的輸出的任務;被配置為用于收集與容宿于每個節點處的每個任務和所述節點的特性相關的統計信息的計算機可讀程序代碼,所述節點的特性包括其熱特性;被配置為用于利用收集的統計信息來創建任務能夠部分地或全部地轉移到的相鄰節點的列表的計算機可讀程序代碼;被配置為用于選擇在節點處的考慮遷移到相鄰節點列表中的稱為目標節點的相鄰節點的具有第一溫度的稱為目標任務的至少一個任務,以分配處理所述至少一個任務的系統負荷并降低冷卻成本的計算機可讀程序代碼;被配置為用于選擇至少一個目標任務能夠被遷移到的目標節點的計算機可讀程序代碼,其中目標節點具有第二溫度;被配置為用于在遷移會降低第一溫度并且第二溫度低于預定的可接受的熱閾值的條件下把目標任務遷移到目標節點的計算機可讀程序代碼;和被配置為用于在每個節點處建立負荷交換協議以便管理目標任務的遷移的數目的計算機可讀程序代碼,其中分散式負荷遷移導致事件驅動系統中的總系統負荷分配,并降低冷卻成本。按照本發明的第三方面,提供一種事件驅動系統中的分散式負荷分配方法,所述方法包括下述步驟接收將由在事件驅動系統中的多個節點處的多個任務處理的數據流, 所述事件驅動系統具有有狀態的事件處理組件和無狀態的事件處理組件,其中所述多個任務選自由分層任務、非分層任務和它們的混合物構成的組中,其中分層任務是取決于另一個任務的輸出的任務,其中非分層任務是不取決于另一個任務的輸出的任務;收集與容宿于每個節點處的每個任務相關的統計信息;利用收集的統計信息,創建任務能夠部分地或全部地轉移到的相鄰節點的列表;選擇稱為施主節點的至少一個節點以轉變成靜態模式; 選擇在施主節點處的考慮遷移到相鄰節點列表中的稱為目標節點的相鄰節點的稱為目標任務的任務;選擇目標任務能夠被遷移到的目標節點,其中該目標節點滿足負荷分配質量方面的預定標準;在每個節點處建立負荷交換協議以便管理目標任務的遷移的數目,其中分散式負荷遷移導致事件驅動系統中的總系統負荷分配;和把目標任務從施主節點遷移到目標節點,并使施主節點轉變成靜態模式。按照本發明的第四方面,提供一種計算機程序產品,其包括計算機可讀存儲介質,所述計算機可讀存儲介質具有用于事件驅動系統中的分散式負荷分配的計算機可讀程序代碼,該計算機可讀程序代碼包括被配置為用于接收將由在事件驅動系統中的多個節點處的多個任務處理的數據流的計算機可讀程序代碼,所述事件驅動系統具有有狀態的事件處理組件和無狀態的事件處理組件,其中所述多個任務選自由分層任務、非分層任務和它們的混合物構成的組中,其中分層任務是取決于另一個任務的輸出的任務,其中非分層任務是不取決于另一個任務的輸出的任務;被配置為用于收集與容宿于每個節點處的每個任務相關的統計信息的計算機可讀程序代碼;被配置為用于利用收集的統計信息來創建任務能夠部分地或全部地轉移到的相鄰節點的列表的計算機可讀程序代碼;被配置為選擇稱為施主節點的至少一個節點以轉變成靜態模式的計算機可讀程序代碼;被配置為用于選擇在施主節點處的考慮遷移到相鄰節點列表中的稱為目標節點的相鄰節點的稱為目標任務的任務的計算機可讀程序代碼;被配置為用于選擇目標任務能夠被遷移到的目標節點的計算機可讀程序代碼,其中目標節點滿足負荷分配質量方面的預定標準;被配置為用于在每個節點處建立負荷交換協議以便管理目標任務的遷移的數目的計算機可讀程序代碼,其中分散式負荷遷移導致事件驅動系統中的總系統負荷分配;和被配置為用于把目標任務從施主節點遷移到目標節點并使施主節點轉變成靜態模式的計算機可讀程序代碼。
在所附權利要求中具體地陳述了本發明的被視為新穎的特征和本發明特有的要素。附圖只是用于舉例說明,并且未按比例繪制。不過,通過參考結合附圖進行的下述詳細說明,就組織和操作方法而論,可更好地理解發明本身,附圖中圖1是圖解說明本發明的一個示例性硬件環境的框圖。圖2圖解說明包含數據生產者(data producer)、處理數據的任務和數據消費者的常規任務流。圖3圖解說明常規負荷分配問題。圖4是圖解說明按照本發明的計算機實現方法的優選實施例的流程圖。圖5圖解說明目標節點的物理連接的標準。圖6圖解說明使節點之間的物理連接最小化的概念。圖7圖解說明避免任務流中的循環的概念。圖8圖解說明拆分任務的一種方法。圖9圖解說明每次移動一個任務的概念。圖10至13圖解說明本發明的其中至少一個節點可進入靜態模式的實施例。
具體實施例方式其中示例性地執行本發明的當前實施例的程序環境包含多個連接的通用計算機或專用設備,比如手持式計算機。圖1是圖解說明本發明的一個示例性硬件環境的框圖, 其中存在兩個計算機系統22-1,22-2。不過應明白,在實踐本發明時設想到,可存在并且通常存在多于兩個的計算機系統。下面,計算機系統也可以被稱為機器或節點。本發明通常利用包含中央處理器(CPU) 10-1,10-2的計算機系統22-1,22-2實現,所述中央處理器 (CPU) 10-1,10-2由微處理器裝置、隨機存取存儲器(RAM)、只讀存儲器(ROM)和其它組件構成。計算機可以是個人計算機、大型計算機或者其它計算裝置。存在于CPU 10-1,10-2中或者在其外圍的是某種存儲裝置14-1,14-2,比如硬盤驅動器,軟盤驅動器,⑶-ROM驅動器,磁帶驅動器或其它存儲裝置。另外,存在于CPU 10-1,10-2中的是固定數量的內部存儲器,也稱為RAM,其數據單位為字節。一般來說,本發明的軟件實現,圖1中的程序12-1,12-2,確實地在計算機可讀介質(比如上面提及的存儲裝置14-1,14-2之一)中被實施。程序12-1,12-2包含當被CPU 10-1,10-2的微處理器讀取和執行時,使CPU 10-1,10-2執行運行本發明的步驟或要素所必需的步驟的指令。程序12-1,12-2可被稱為事件管理和負荷分配管理運行時間(Event Management and Load Distribution Management Runtime)。程序12-1,12-2加載、啟動、控制和步進(step) —個或多個數據流處理單元16_1, 16-2,數據流處理單元16-1,16-2處理可由子流18-1,18-2構成的輸入數據流18,以產生可由輸出子流20-1,20-2構成的輸出數據流20。計算機系統22-1,22-2還可通過物理鏈路21鏈接在一起。另外應明白,本發明的技術可以利用各種技術來實現。例如,這里說明的方法可用在計算機系統上運行的軟件實現,或者用利用微處理器的組合或者其它專門設計的專用集成電路、可編程邏輯設備或者它們的各種組合的硬件實現。特別地,這里說明的方法可用存在于適當的計算機可讀介質上的一系列計算機可執行指令實現。適當的計算機可讀介質可包括易失性(例如RAM)和/或非易失性(例如ROM,盤)存儲器、載波和傳輸介質(例如, 銅線、同軸電纜、光纖介質)。示例性的載波可采取沿著局部網絡、諸如因特網之類的可公開訪問的網絡或者某一其它通信鏈路傳送數字數據流的電信號、電磁信號或光信號的形式。此外,可在云計算環境中實現本發明。云計算是一種其中通過因特網或企業的內部網絡以服務的形式提供可動態縮放且通常虛擬化的資源的計算方式。用戶不必知道,專長于或者控制支持他們的“云中的”技術基礎結構。云計算服務通常在線提供從web瀏覽器訪問的公共商業應用,雖然軟件和數據保存在服務器上,不過也可在一些或所有節點為 “云”的一部分的情況下,執行數據流事件處理。由于云中的物理資源可在地理上如此分布, 以致不同機器的功率成本顯著不同,因此在云結構中,即使當數據流容量不大時,本發明也可具有更有效的應用。本發明涉及一種方法、計算機程序產品和機器可讀的程序存儲設備,其中,通過把滿足預定的用戶設定標準的一個或多個任務(所述預定的用戶設定標準使所述一個或多個任務具有資格作為適當的遷移任務),從作為準許負荷從它們中除去的節點的滿足預定的用戶設定標準的施主節點遷移到一個或多個目標節點,在事件驅動系統中存在分散式負荷分配,其中所述目標節點滿足使它們具有資格作為能夠接收負荷的節點的預定的用戶設定標準,并且端到端遷移優選地滿足網絡中的總負荷保持相同或者不增大的預定標準。所述預定標準由我們的方法初始化,并可由用戶配置。這里說明了使其具有資格從它自己發起任務遷移的節點、為遷移而考慮的任務、充當被遷移任務的接受者的節點和是否遷移的決定的標準。所述標準依賴于包括節點在后臺定期收集的真實世界屬性(例如,諸如使用的實際能量,或者入口溫度之類的傳感器讀數)的統計信息,同時所述負荷遷移決策處理正在進行,另外還在用戶定義的時間間隔之后定期進行,它會或者不會導致對網絡中的節點的任務分配的變化。本發明涉及一種動態的分散式計算機實現的方法,用于容宿任務流中的任務的節點之間的負荷分配,其中來自一個任務的處理的數據結果可充當任務流中的下一個任務的輸入數據。所述計算機實現的方法適用于數據中心中的節點,或者地理上分布的節點,或者單機上的多個處理器,或者云計算環境。所述計算機實現的方法的一些目的是分配負荷,以便(1)防止節點過載,(2)分配來自過載節點的負荷,(3)保持應用的一些服務質量要求,比如使端到端等待時間最小化,和降低功率/冷卻成本。一些確定的背景有助于理解本發明。“節點”指的是單獨的機器,或者多處理器機器上的單個處理器,或者進行某種處理的物理實體(不論它是在計算數字,還是產生功率并且附接有計算機的引擎)。節點可以在數據中心中,或者在地理上是分布的。在本發明中,節點或者容宿一個或多個任務,或者不容宿任何任務。任務的處理在本質上可以是分層的,以致一個任務的輸出充當另一個任務的輸入。另外,節點可能在某一時間正在進行不是數據流的一部分的任務,但是稍后進行作為數據流的一部分的任務。分層結構中的第一任務對通過某一輸入源接收的數據進行處理。任務的很多處理在本質上是分層的,不過不是必然這樣,因為給定應用的一些任務在本質上可以不是分層的。節點接收的數據被稱為輸入事件,而作為處理結果的節點產生的數據被稱為導出事件。僅舉幾個例子,可能需要分層處理的數據的例子包括金融市場中的股票交易、RFID標簽閱讀器推斷的事件、從無線傳感器傳送的溫度讀數、通過監視通信通道上的軟件而檢測的入侵者檢測事件、自動咖啡機的供應狀態。更詳細地參見附圖,圖2表示其中適用本發明的容宿任務的機器的網絡的例子。 數據生產者代表數據源。數據的例子包括股票報價、咖啡機故障報警。數據消費者代表關注對數據進行的處理的結果的實體。消費者的例子包括修理咖啡機的公司、或者關注在特定日子增長百分點最高的前10名股票的個人。任務流被定義為任務的處理序列。任務的處理可以是分層的,其中來自一個任務的處理的數據結果充當任務流中的下一個任務的輸入數據。任務不必在數據通過它們傳給另一個任務之前完成。此外,一些任務可以不是分層的,并且不需要來自另一個任務的數據。一些任務有時可能需要來自其它任務的數據,而在其它時候則不需要來自其它任務的數據。在圖2中,任務Fl,Jl和J2在公共任務流中。類似地,任務F3和J2是另一個任務流的一部分。相對于特定節點n,上游節點被定義為容宿作為在節點η上容宿的任務的父代的任務的節點。特別地,在數據流中,父代任務在子代任務之前。父代任務直接地或者通過中間物產生成為在節點η上的任務的輸入的一部分的輸出。例如,在圖2中,容宿任務Fl的節點Μ4相對于容宿任務J2的節點Μ5是上游節點。相對于特定節點η,下游節點被定義為容宿由節點η容宿的任務的子代的節點。例如,在圖2中,容宿任務J2的節點Μ5相對于容宿任務Jl的節點Μ4是下游節點。任務流中的第一個任務的功能是從生產者接收數據,所述生產者是一組消息來源。消費者對關于數據的任務的最終處理結果感興趣。圖2表示任務流中的生產者(Ρ1-Ρ5) 和消費者(C1-C4)的例子。任務可保持在執行某一事件之后的狀態,或者它們可不保持任何狀態。保持狀態的任務被稱為有狀態任務。對于新的輸入事件,不保持狀態的那些任務會在大約相同長度的時間中輸出相同的導出事件,而不管先前的輸入事件是什么,或者先前的輸入事件有多少,或者先前的輸入事件隨著時間的過去是如何到達的,或者這些任務先前的輸出事件是什么。無狀態任務與它們之前收到什么數據或者它們之前產生什么數據無關地工作。有狀態任務的例子包括用于合并金融數據流的聯接算子(join operator)用于監視地震數據的聚合算子(aggregation operator)用于軍事監視的信號處理算子檢測在事件el之后立即發生的事件e2的序列算子計數一天中個人進行的先買后賣操作的數目的計數算子不保持狀態的任務被稱為無狀態任務。無狀態任務的例子包括在測量系統之間轉換的任務-把距離從英尺轉換成米或者把溫度從華氏度轉換成攝氏度;用其它形式的標識符號替換標識符號的任務-把股票交易代碼轉換成其股票被涉及的公司的法定全名;向消息中添加只是所述消息中的其它字段的函數或者是常數的字段的任務-例如,取決于州或省縮寫是美國50個州的2字母代碼之一還是省縮寫之一,添加美國或加拿大的國家字段;用常數調整消息字段的任務-用圖書館還書日期代替圖書館借書日期(所述還書日期總是在借書日期之后三周)。任務通常被稱為算子。應明白“任務”和“算子”是可互換的術語,在本文中到處使用這兩個術語。現在參見圖3,圖中圖解說明了負荷分配問題。負荷可被遷移到未進行任何處理的節點,比如圖3中的節點M12和M13,或者負荷可被遷移到已處理其它任務的節點,比如正在處理任務F3和J2的節點M5。圖3還指示動態負荷分配問題的特性,即在運行時間期間,節點可能停機,或者可能向網絡中增加新的節點;數據速率可以任意變化;任務可以終止并從任務集中除去,或者可在任何時候增加新任務;在運行時間期間,任務可被拆分成兩個以上的部分。當考慮是否遷移負荷時,所述計算機實現的方法把一個單一任務、一組任務或者拆分的任務視為負荷。所述計算機實現的方法考慮任務是否保持狀態,所述狀態可采取保存在磁盤上或者保存在容宿任務的節點的主存儲器中的數據的形式。當決定遷移有狀態任務時,所述計算機實現的方法考慮容宿待遷移的有狀態任務(目標任務)的施主節點和接收有狀態任務的接受節點(目標節點)之間的數據傳送鏈路的速度。所述計算機實現的方法還在遷移任務之前,考慮各個任務之間的數據流,以防止循環和滿足應用的服務質量要求,比如使應用的端到端響應時間最小化。所述計算機實現的方法還在遷移任務之前,考慮各個任務預期的工作負荷,以便當節點的工作負荷按特定模式達到峰值時防止節點過熱。預期的工作負荷信息可通過節點記錄和計算的統計信息獲得。節點可進行一些統計分析,從而節點能夠計算數據到達的平均值和方差,并利用曲線擬合來建議輸入到達事件的分配。根據所述分析,節點能夠確定其輸入數據的到達速率的模式,并確定它能夠進入靜態模式的時段的持續時間。
在決策分配哪個負荷的同時,所述計算機實現的方法還考慮不同任務的負荷相關性之間的關系,其被稱為負荷相關系數。負荷相關系數確保所述計算機實現的方法從節點轉移其負荷與該節點容宿的其它任務同時達到峰值的目標任務,并把目標任務轉移到容宿其負荷不會與目標任務的負荷同時達到峰值的任務的節點。在遷移目標任務之前,所述計算機實現的方法通過在給定一些假設的條件下估計施主節點和目標節點的遷移后利用率,考慮對施主節點和目標節點來說,目標任務的遷移是否是良好的決定。除了利用率之外,本發明實施例中的所述計算機實現的方法還可以估計施主節點和接受節點的遷移后入口溫度,從而通過提倡會降低施主節點的溫度而不會把接受節點的溫度增大到高于可接受的閾值的負荷遷移,降低冷卻成本。除了遷移單個目標任務之外,所述計算機實現的方法還考慮能夠拆分目標任務的多種可能方式,從而考慮遷移目標任務的一個或多個部分。由于所述計算機實現的方法是分散式方法,因此為負荷分配定義一種所有節點都必須遵循的協議,以便確保局部負荷遷移決定不會相互沖突。在考慮遷移之前,本發明實施例中的所述計算機實現的方法還考慮網絡中的某些節點是否應轉變成靜態模式以節省能量。在節點對輸入數據進行處理的同時,以及在做出負荷分配決策之前或之后,可在運行時間期間的任何時候動態地做出何時轉變成靜態模式的決策。負荷遷移決策和停頓決策不應同時發生,因為它們會提供沖突的結果。于是,可在一個決策(停頓或負荷遷移)完成之前或之后,考慮另一個決策(負荷遷移或停頓)。不過,一旦做出使節點停頓的決策,就不向在該節點上運行的任何任務發送任何另外的輸入, 以致一旦這些任務產生其輸出,所述停頓不會“離線”獲得事件流的任何部分。任務將運行的新節點接收該任務的所有另外的輸入。對無狀態任務來說,新任務可在舊任務完成其輸入之前開始處理下一個輸入,不過對有狀態任務來說,在已完全傳送來自舊節點的任務狀態之前,新任務一定不要開始處理下一個輸入事件。這種傳送是負荷交換協議(后面說明) 的一部分。在轉變到靜態模式的處理期間,一些任務可在完成中途被遷移。這意味在所述任務被移動的時候,它們已產生一些輸出,不過未來在它們的新位置處它們會產生更多的輸
出ο所述計算機實現的方法是動態的,這意味在節點正在對輸入數據進行處理的時候,在運行時間期間的任何時候可動態地做出關于何時轉變成靜態模式的決策。節點的轉變成靜態模式的決策需要關于下述內容的一組預先決策處于靜態模式多長時間;處于靜態狀態的時段內的預期工作負荷;在靜態模式時段期間,是暫停任務和稍后處理所述任務,還是把任務遷移到能夠更高效地處理它們的更高效節點;和哪些其它相鄰節點能夠轉變成靜態模式。這些初始考慮之后是對轉變成靜態模式的益處和成本的詳細分析。這種轉變的成本包括與轉變相關的總功率成本,包括(1)節點的轉變成靜態模式的功率成本,(2)從靜態模式變回運行模式的功率成本,和C3)從該節點接收遷移的任務,并且作為接收這些任務的結果,會從靜態模式轉變成運行模式的任何其它節點的功率成本。停止任務處理并且(如果合適的話)在新的目標機器上恢復所述任務處理的時間;把與待遷移的任務相關的任何狀態遷移到目標機器的成本;和移回狀態并在處理任務的初始主機上恢復處理的時間。轉變成靜態模式的益處包括轉變成靜態模式的預計能量節約效果和在靜態模式下所花費的時間量;和由于使節點進入靜態模式和把任務遷移到適當的接受節點而產生的應用的服務質量的改進。如果轉變成靜態模式的益好超過成本,那么節點可開始所述轉變。計算機實現的關于轉變成靜態模式的方法可被實現成分散式方法。另一方面,了解整個網絡中的資源可用性的中央控制器可按照集中方式,控制靜態模式轉變處理。現在詳細討論按照本發明的計算機實現的方法。所述處理是分散式的,因為每個節點執行待討論的各個處理步驟。圖4中表示了圖解說明按照本發明的計算機實現的方法的流程圖。步驟1 接收輸入數據。計算機實現的方法的第一步驟(框30)包括接收將由在事件驅動系統中的多個節點處的多個任務處理的數據流,所述事件驅動系統具有有狀態的事件處理組件和無狀態的事件處理組件。所述多個任務可以是分層任務、非分層任務或者它們的組合。步驟2 節點收集統計信息。在計算機實現的方法的下一個步驟中,每個節點定期收集與它容宿的每個事件處理組件(也稱為任務或算子)相關的一些統計信息(框32)。 這些統計信息包括每個任務的負荷這可被定義為每個任務的CPU利用率,或者稱為每個任務評估的規則的數目,或者在系統的情形中用戶提供的無論哪種定義。任務占據的存儲器假定與任務相關的所有狀態都存在于存儲器中(而不是在盤上)。如果任務被遷移,那么該存儲器也需要被轉移。連接容宿目標任務的節點和另一個節點的鏈路的網絡使用網絡使用(U(I))是
在給定時刻通過鏈路1運送的數據量。 f \u(l)= Σ DRf(I) Lai(I)
{f-Fi J其中F是鏈路1上的一組事件流,DRf(I)是鏈路1上的流f的數據速率,Lat(I) 是鏈路1的等待時間。該度量使得人們對鏈路1的繁忙程度有所了解,并且是估計把與任務相關的狀態從一個節點遷移到另一個節點需要多長時間所必需的。在本發明的一個實施例中,統計信息包括容宿任務的節點的熱特性。在本發明的一個實施例中,統計信息包括數據流向任務的速率和輸入數據速率中的以時間或者節點容宿的任務的類型為基礎的任何復發模式。在執行任務的時候,在后臺進行關于每個任務的統計信息的收集。節點將保持數值統計信息的時間序列,并定期計算其平均值、方差和標準偏差。在每個HISTORY_NUMBER_OF_INTERVALS_TRACKED之后,節點將刪除每個時間序列的最舊的 HISTORY_INTERVAL_COUNT_CLEANUP_SIZE 條目,從而為新條目留出空間。步驟3 創津負荷交換鄰居列表。所沭處理的下一個步驟是創津仵各能夠被部分地或全部地轉移到的相鄰節點的列表(框34)。在來自其鄰居的周期性統計信息交換之后, 每個節點保持負荷均衡伙伴的列表。節點對所述列表分類,并按照總的可用負荷和存儲器的降序,對相鄰節點排序。在本發明的其中考慮冷卻成本的一個實施例中,通過除去與當前節點具有很高的互擾熱系數的伙伴,提煉(refine)相鄰節點的列表。即,每個節點可以訪問大小為nXn的互擾矩陣,其中η是數據中心中的節點的總數。所述矩形中的條目a_ij代表節點i對節點j貢獻的熱量。節點參考所述矩陣,并通過除去它與之具有很高的互擾熱系數的節點來提煉其最近鄰居的列表。當節點希望發起負荷遷移時,該節點僅僅參考所述相鄰節點的列表,以選擇潛在的負荷交換伙伴節點。考慮負荷遷移的決策可被實現成在每個節點內定期地復發的插曲事件,或者它可因違反某一閾值(比如,需要的最小能量節約,或者最大冷卻成本,或者最大節點利用率,或者最小節點利用率)而被觸發。用戶可以為每個節點,單獨配置在本發明的計算機實現的方法中,導致考慮進行步驟4的精確觸發。另一方面,如果網絡很大(例如,數千個節點),那么用戶可以初始化用于節點的子集的負荷遷移觸發設置, 并依賴于初始化節點的自動的分散式信息傳播算法(比如基本擴散或置信傳播),以把它們的初始化值傳播給其閾值適當的其它節點。擴散是一種其中信息的凈傳送由網絡中的一組節點產生的技術,在所述網絡中,擴散高度集中于具有很少信息或沒有信息的一組節點。 擴散的結果是信息的逐漸混合。在某些條件下,根據節點的純粹自我發起的局部協調,擴散處理最終會在網絡中導致信息的完全混合。在實施例中,我們把負荷遷移決策實現成在長度為LOAD_DISTRIBUTION_INTERVAL(它是設備的參數)的時間間隔之后發生的插曲事件。 諸如此類的參數可由用戶為每個節點單獨配置,或者自動配置,并通過基于擴散的協議設定(在本實施例中進一步討論)。步驟4 選擇供遷移的任務。所述處理的下一個步驟是選擇在某個節點的至少一個任務(即,目標任務),用于考慮遷移到相鄰節點(即,目標節點),以分配處理目標任務的系統負荷(框36)。如果存在有狀態任務和無狀態任務,那么優選首先遷移無狀態任務, 因為待分配的負荷較少。如果只存在容宿在某個節點上的有狀態任務,那么選擇遷移所述有狀態任務中,內存狀態的數量最少的一個任務。就有狀態任務來說,狀態可以在盤上和在存儲器中。通常優選遷移只具有在存儲器中的狀態的有狀態任務。可能發生單個任務利用多于預置STATE_MIGRATION_LIMIT的資源作為單一任務遷移。在這種情況下,所述處理的可選步驟是把目標任務拆分成兩個目標子任務以便遷移。任務的拆分將在下面更詳細地說明。通過考慮到任務的狀態量,狀態的類型(在盤上或者在存儲器中)和通過其把狀態從施主節點遷移到接受節點的鏈路的速度,本發明的計算機實現的方法處理有狀態任務和無狀態任務兩種任務,而不同于許多現有的負荷遷移技術。可按照在現有著作中描述的許多方式,優化狀態的實際遷移。步驟5 選擇目標節點。所述處理的下一個步驟是選擇目標任務能夠被遷移到的目標節點,其中所述目標節點滿足負荷分配質量方面的預定標準(框38)。節點從列表中消除不滿足充當目標任務的新容宿的最低要求(標準)的潛在負荷交換伙伴。
在本發明的其中降低冷卻成本的實施例中,如果降低冷卻成本是主要因素的話, 選擇目標節點的步驟可完全取決于降低冷卻成本,而不是目標節點是否滿足負荷分配質量方面的預定標準。此外,在一個優選實施例中,除了滿足負荷分配質量方面的預定標準的目標節點之外,選擇目標節點的該步驟還可考慮降低冷卻成本。預定標準包括目標節點的物理連接,目標節點的可用負荷和存儲器,使物理鏈路的數目最小化,消除循環,目標節點負荷相關性,以及施主節點和目標節點的遷移后利用率。為了選擇目標節點,這些標準中的至少一些標準應被滿足。在一個優選實施例中,為了選擇目標節點,所有這些標準應被滿足。下面將詳細討論這些標準中的每個標準。如圖5中所示,圖解說明關于目標節點的物理連接的標準。目標節點Mt必須物理連接到容宿在節點Mi上容宿的目標任務i的父代任務ρ的節點Mp,和容宿所述目標任務i 的子代任務c的的節點Mc。目標節點Mt還必須連接到目前容宿目標任務i的節點Mi。參考圖3,這種特定的標準變得更清楚。例如,希望把目前由節點M4容宿的任務Jl遷移到另一個節點。在這種情況下,任務Jl是目標任務。節點M2或M3可以是父節點,M4是施主節點(Mi),節點M7是容宿子代任務的節點Mc。就這種情形來說,目標任務Jl可被遷移到M5 或M13,M5和M13都(直接或間接地)連接到父節點、子節點和施主節點。下一個標準是目標節點的可用負荷和存儲器。目標節點必須具有足以容宿目標任務的可用負荷和存儲器。上面討論的統計信息的收集用于評估可用負荷和存儲器。此外, 如果目標任務是有狀態任務,并且具有內存狀態,那么目標節點和目前容宿目標任務的施主節點之間的物理機器鏈路不得具有很高的網絡使用。所述鏈路越被大量地使用,那么把狀態從施主節點轉移到目標節點所用的時間越長。希望使連接目標節點和容宿目標任務的父代任務和子代任務的節點的物理連接的數目最小化。物理鏈路增大端到端等待時間。應用的服務質量要求可以包括低的端到端等待時間。于是,對于滿足應用的服務質量要求來說,重要的是使物理連接的數目最小化。 關于目標節點保持的與待遷移的目標任務的物理連接的數目,應對目標節點的列表進行分類。圖6A圖解說明任務流的一個例子。圖6B表示增大任務流中的物理鏈路的數目并因而不希望的負荷遷移的例子。圖6C表示減少任務流中的物理鏈路的數目并因而希望的負荷遷移的例子。圖6D表示節點能夠做出的負荷遷移決策的局部集合,以及它們如何影響物理鏈路的數目。圖6D中的決策1和2改善(減少)物理鏈路的數目,而決策4增大物理鏈路的數目,至于決策3,物理鏈路的數目保持不變。下一個標準是消除循環。當從一個任務流出的消息轉到其輸出直接或間接地是所述一個任務的輸入的其它任務時,發生循環。如果目標節點容宿代表目標任務的流中的前驅的任務,那么該目標節點應被消除。圖7中表示了這種情形,其中節點Mx是目標任務i 的不希望的目標節點,因為它容宿為任務i的流中的前驅的任務。下一個標準是目標節點負荷相關性。除了考察目標節點上的平均負荷之外,還應檢查負荷穩定性。在出版的著作[Xing,I⑶E' 05, supra]中已證明在把任務遷移到目標節點之前,僅僅考慮目標節點上的平均負荷并不夠。還必須檢查目標節點上的負荷變化。特別地,如果節點上的任務之間的負荷相關系數為負,那么這應是有用的。兩個任務之間為負的負荷相關系數意味當任務之一的負荷達到峰值時,另一個任務的負荷不會達到峰值。于是,被遷移的目標任務和接受機器上的任務之間的負荷相關系數的計算被結合到負荷遷移決策處理中。i. ρ (a, N)任務a的負荷時間序列與N上除a之外的所有任務的負荷時間序列的總數(總和)之間的相關系數。ii.從施主節點m的觀點來看,有益的是移出具有較大P (a,Ni)的任務,而從接受節點N2的觀點來看,有益的是接受具有較小P (a, N2)的任務。iii.從而優選的是移動具有P (a, Nl)-P (a, N2)的較大值的任務。我們將此稱為得分。iv.計算任務a相對于所有潛在的目標節點的相關系數,并選擇具有最大得分的節點作為目標節點。給定具有k個元素的負荷時間序列S = (S1, S2, ... , sk),那么其平均值和方差被定義成如下
權利要求
1.一種事件驅動系統中的分散式負荷分配方法,所述方法包括下述步驟接收將由在事件驅動系統中的多個節點處的多個任務處理的數據流,所述事件驅動系統具有有狀態的事件處理組件和無狀態的事件處理組件,其中所述多個任務選自由分層任務、非分層任務和它們的混合物構成的組中,其中分層任務是取決于另一個任務的輸出的任務,其中非分層任務是不取決于另一個任務的輸出的任務;收集與容宿于每個節點處的每個任務和所述節點的特性相關的統計信息,所述節點的特性包括其熱特性;利用收集的統計信息,創建任務能夠部分地或全部地轉移到的相鄰節點的列表; 選擇在節點處的考慮遷移到相鄰節點列表中的稱為目標節點的相鄰節點的具有第一溫度的稱為目標任務的至少一個任務,以分配處理所述至少一個任務的系統負荷并降低冷卻成本;選擇至少一個目標任務能夠被遷移到的目標節點,其中目標節點具有第二溫度; 在遷移會降低第一溫度并且第二溫度低于預定的可接受的熱閾值的條件下,把目標任務遷移到目標節點;和在每個節點處建立負荷交換協議以便管理目標任務的遷移的數目,其中分散式負荷遷移導致事件驅動系統中的總系統負荷分配,并降低冷卻成本。
2.按照權利要求1所述的方法,還包括把所述至少一個目標任務拆分成兩個以上的目標子任務。
3.按照權利要求1所述的方法,其中負荷交換協議包括 (i)遷移目標任務的決策不應導致振蕩;( )在單個機器循環中,兩個以上的任務不應同時遷移到單個目標節點;(iii)在單個機器循環中,兩個以上的任務不應同時從一個節點遷出;和(iv)目標任務遷移的最終結果應以某種方式改善負荷分配。
4.按照權利要求1所述的方法,其中每個節點具有下述負荷交換約束(i)在第一預定時間段期間,所有目標任務向上游或者向下游遷移,并且,在第二預定時間段之后,目標任務遷移的方向能被切換;( )如果目標任務被遷移到目標節點,那么遷移之前的任何最近的相鄰下游目標任務在預定量的時間內不能被遷移;(iii)在遷移到目標節點之后,目標任務必須在所述目標節點處保持預定量的時間;禾口(iv)兩個節點不能同時向目標節點遷移目標任務。
5.按照權利要求1所述的方法,還包括下述步驟把至少一個目標任務遷移到目標節點,并在所述目標節點上執行所述至少一個目標任務;和收集與所述至少一個目標任務在所述目標節點上的執行相關的統計信息。
6.按照權利要求1所述的方法,還包括選擇至少一個節點以轉變成靜態模式的步驟。
7.一種計算機程序產品,包括計算機可讀存儲介質,所述計算機可讀存儲介質具有用于事件驅動系統中的分散式負荷分配的計算機可讀程序代碼,該計算機可讀程序代碼包括被配置為用于接收將由在事件驅動系統中的多個節點處的多個任務處理的數據流的計算機可讀程序代碼,所述事件驅動系統具有有狀態的事件處理組件和無狀態的事件處理組件,其中所述多個任務選自由分層任務、非分層任務和它們的混合物構成的組中,其中分層任務是取決于另一個任務的輸出的任務,其中非分層任務是不取決于另一個任務的輸出的任務;被配置為用于收集與容宿于每個節點處的每個任務和所述節點的特性相關的統計信息的計算機可讀程序代碼,所述節點的特性包括其熱特性;被配置為用于利用收集的統計信息來創建任務能夠部分地或全部地轉移到的相鄰節點的列表的計算機可讀程序代碼;被配置為用于選擇在節點處的考慮遷移到相鄰節點列表中的稱為目標節點的相鄰節點的、具有第一溫度的稱為目標任務的至少一個任務,以分配處理所述至少一個任務的系統負荷并降低冷卻成本的計算機可讀程序代碼;被配置為用于選擇至少一個目標任務能夠被遷移到的目標節點的計算機可讀程序代碼,其中目標節點具有第二溫度;被配置為用于在遷移會降低第一溫度并且第二溫度低于預定的可接受的熱閾值的條件下把目標任務遷移到目標節點的計算機可讀程序代碼;和被配置為用于在每個節點處建立負荷交換協議以便管理目標任務的遷移的數目的計算機可讀程序代碼,其中分散式負荷遷移導致事件驅動系統中的總系統負荷分配,并降低冷卻成本。
8.按照權利要求7所述的計算機程序產品,還包括被配置為用于把所述至少一個目標任務拆分成兩個以上的目標子任務的計算機可讀程序代碼。
9.按照權利要求7所述的計算機程序產品,其中負荷交換協議包括 (i)遷移目標任務的決策不應導致振蕩;( )在單個機器循環中,兩個以上的任務不應同時遷移到單個目標節點;(iii)在單個機器循環中,兩個以上的任務不應同時從一個節點遷出;和(iv)目標任務遷移的最終結果應以某種方式改善負荷分配。
10.按照權利要求7所述的計算機程序產品,其中每個節點具有下述負荷交換約束 (i)在第一預定時間段期間,所有目標任務向上游或者向下游遷移,并且,在第二預定時間段之后,目標任務遷移的方向能被切換;( )如果目標任務被遷移到目標節點,那么遷移之前的任何最近的相鄰下游目標任務在預定量的時間內不能被遷移;(iii)在遷移到目標節點之后,目標任務必須在所述目標節點處保持預定量的時間; (iv)兩個節點不能同時向目標節點遷移目標任務。
11.按照權利要求7所述的計算機程序產品,還包括被配置為用于把至少一個目標任務遷移到目標節點并在所述目標節點上執行所述至少一個目標任務的計算機可讀程序代碼;和被配置為用于收集與所述至少一個目標任務在所述目標節點上的執行相關的統計信息的計算機可讀程序代碼。
12.按照權利要求7所述的計算機程序產品,還包括被配置為用于選擇至少一個節點以轉變成靜態模式的計算機可讀程序代碼。
13.一種事件驅動系統中的分散式負荷分配方法,所述方法包括下述步驟接收將由在事件驅動系統中的多個節點處的多個任務處理的數據流,所述事件驅動系統具有有狀態的事件處理組件和無狀態的事件處理組件,其中所述多個任務選自由分層任務、非分層任務和它們的混合物構成的組中,其中分層任務是取決于另一個任務的輸出的任務,其中非分層任務是不取決于另一個任務的輸出的任務; 收集與容宿于每個節點處的每個任務相關的統計信息; 利用收集的統計信息,創建任務能夠部分地或全部地轉移到的相鄰節點的列表; 選擇稱為施主節點的至少一個節點以轉變成靜態模式;選擇在施主節點處的考慮遷移到相鄰節點列表中的稱為目標節點的相鄰節點的稱為目標任務的任務;選擇目標任務能夠被遷移到的目標節點,其中該目標節點滿足負荷分配質量方面的預定標準;在每個節點處建立負荷交換協議以便管理目標任務的遷移的數目,其中分散式負荷遷移導致事件驅動系統中的總系統負荷分配;和把目標任務從施主節點遷移到目標節點,并使施主節點轉變成靜態模式。
14.按照權利要求13所述的方法,其中選擇至少一個節點以轉變成靜態模式的的步驟包括分析在施主節點處的靜態模式時期的輸入通信量和預期持續時間; 評估也能夠轉變成靜態模式的其它節點;評估在施主節點處的轉變成靜態模式的等待時間和功率/冷卻成本;和評估在施主節點處的轉變成靜態模式的功率/冷卻益處;和如果轉變成靜態模式的益處超過轉變成靜態模式的成本,那么把目標任務從施主節點遷移到目標節點,并使施主節點轉變成靜態模式。
15.按照權利要求13所述的方法,還包括把目標任務拆分成兩組以上的目標子任務。
16.按照權利要求13所述的方法,其中負荷分配質量方面的預定標準包括(i)目標節點必須被物理地連接到(a)容宿目標任務的節點,(b)容宿作為目標任務的父代的任務的節點,和(c)容宿作為目標任務的子代的任務的節點; ( )目標節點必須具有足以容宿目標任務的可用負荷和存儲器;(iii)使通過目標任務的數據流中的物理鏈路的數目最小化;(iv)消除循環;(ν)目標節點應具有負的負荷相關系數;和(vi)容宿目標任務的節點和目標節點的遷移后利用率小于預定的最大閾值。
17.按照權利要求13所述的方法,其中負荷交換協議包括 (i)遷移目標任務的決策不應導致振蕩;( )在單個機器循環中,兩個以上的任務不應同時遷移到單個目標節點;(iii)在單個機器循環中,兩個以上的任務不應同時從一個節點遷出;和(iv)目標任務遷移的最終結果應以某種方式改善負荷分配。
18.按照權利要求13所述的方法,其中每個節點具有下述負荷交換約束(i)在第一預定時間段期間,所有目標任務向上游或者向下游遷移,并且,在第二預定時間段之后,目標任務遷移的方向能被切換;( )如果目標任務被遷移到目標節點,那么遷移之前的任何最近的相鄰下游目標任務在預定量的時間內不能被遷移;(iii)在遷移到目標節點之后,目標任務必須在所述目標節點處保持預定量的時間;禾口(iv)兩個節點不能同時向目標節點遷移目標任務。
19.按照權利要求13所述的方法,還包括收集與目標任務在目標節點上的執行相關的統計信息的步驟。
20.一種計算機程序產品,包括計算機可讀存儲介質,所述計算機可讀存儲介質具有用于事件驅動系統中的分散式負荷分配的計算機可讀程序代碼,該計算機可讀程序代碼包括被配置為用于接收將由在事件驅動系統中的多個節點處的多個任務處理的數據流的計算機可讀程序代碼,所述事件驅動系統具有有狀態的事件處理組件和無狀態的事件處理組件,其中所述多個任務選自由分層任務、非分層任務和它們的混合物構成的組中,其中分層任務是取決于另一個任務的輸出的任務,其中非分層任務是不取決于另一個任務的輸出的任務;被配置為用于收集與容宿于每個節點處的每個任務相關的統計信息的計算機可讀程序代碼;被配置為用于利用收集的統計信息來創建任務能夠部分地或全部地轉移到的相鄰節點的列表的計算機可讀程序代碼;被配置為選擇稱為施主節點的至少一個節點以轉變成靜態模式的計算機可讀程序代碼;被配置為用于選擇在施主節點處的考慮遷移到相鄰節點列表中的稱為目標節點的相鄰節點的稱為目標任務的任務的計算機可讀程序代碼;被配置為用于選擇目標任務能夠被遷移到的目標節點的計算機可讀程序代碼,其中目標節點滿足負荷分配質量方面的預定標準;被配置為用于在每個節點處建立負荷交換協議以便管理目標任務的遷移的數目的計算機可讀程序代碼,其中分散式負荷遷移導致事件驅動系統中的總系統負荷分配;和被配置為用于把目標任務從施主節點遷移到目標節點并使施主節點轉變成靜態模式的計算機可讀程序代碼。
21.按照權利要求20所述的計算機程序產品,其中被配置為用于選擇至少一個節點以轉變成靜態模式的計算機可讀程序代碼包括被配置為用于分析在施主節點處的靜態模式時期的輸入通信量和預期持續時間的計算機可讀程序代碼;被配置為用于評估也能夠轉變成靜態模式的其它節點的計算機可讀程序代碼; 被配置為用于評估在施主節點處的轉變成靜態模式的等待時間和功率/冷卻成本的計算機可讀程序代碼;和被配置為用于評估在施主節點處的轉變成靜態模式的功率/冷卻益處的計算機可讀程序代碼;和被配置為用于如果轉變成靜態模式的益處超過轉變成靜態模式的成本,那么把目標任務從施主節點遷移到目標節點并使施主節點轉變成靜態模式的計算機可讀程序代碼。
22.按照權利要求20所述的計算機程序產品,其中負荷分配質量方面的預定標準包括(i)目標節點必須被物理地連接到(a)容宿目標任務的節點,(b)容宿作為目標任務的父代的任務的節點,和(c)容宿作為目標任務的子代的任務的節點; ( )目標節點必須具有足以容宿目標任務的可用負荷和存儲器;(iii)使通過目標任務的數據流中的物理鏈路的數目最小化;(iv)消除循環;(ν)目標節點應具有負的負荷相關系數;和(vi)容宿目標任務的節點和目標節點的遷移后利用率小于預定的最大閾值。
23.按照權利要求20所述的計算機程序產品,其中負荷交換協議包括 (i)遷移目標任務的決策不應導致振蕩;( )在單個機器循環中,兩個以上的任務不應同時遷移到單個目標節點;(iii)在單個機器循環中,兩個以上的任務不應同時從一個節點遷出;和(iv)目標任務遷移的最終結果應以某種方式改善負荷分配。
24.按照權利要求20所述的計算機程序產品,其中每個節點具有下述負荷交換約束 (i)在第一預定時間段期間,所有目標任務向上游或者向下游遷移,并且,在第二預定時間段之后,目標任務遷移的方向能被切換;( )如果目標任務被遷移到目標節點,那么遷移之前的任何最近的相鄰下游目標任務在預定量的時間內不能被遷移;(iii)在遷移到目標節點之后,目標任務必須在所述目標節點處保持預定量的時間;和(iv)兩個節點不能同時向目標節點遷移目標任務。
25.按照權利要求20所述的計算機程序產品,還包括被配置為用于收集與目標任務在目標節點上的執行相關的統計信息的計算機可讀程序代碼。
全文摘要
一種計算機實現方法、計算機程序產品和計算機可讀存儲介質涉及事件驅動系統中的分散式負荷安置,以使與能量和冷卻相關的成本最小化。包括接收將由在事件驅動系統中的多個節點處的多個任務處理的數據流,所述事件驅動系統具有有狀態的事件處理組件和無狀態的事件處理組件,其中所述多個任務選自由分層任務(取決于另一個任務的輸出的任務)、非分層任務(不取決于另一個任務的輸出的任務)和它們的混合物構成的組中。考慮使在滿足負荷分配和能量效率參數的同時其當前任務能夠遷移到其它節點的節點停頓,預期的停頓持續時間提供與停頓及稍后重啟的成本相當的益處。另外,考慮把任務遷移到相鄰節點,以分配處理任務的系統負荷并降低冷卻成本。
文檔編號G06F15/16GK102473161SQ201080036432
公開日2012年5月23日 申請日期2010年5月4日 優先權日2009年8月18日
發明者G·拉克施曼安, R·斯庫洛斯, Y·拉賓奧維奇 申請人:國際商業機器公司