專利名稱::用于動態穩定流處理系統的方法和上游處理節點的制作方法
技術領域:
:一般而言,本發明涉及分布式流處理系統的領域,具體來說,涉及分布式流處理系統的調度技術。
背景技術:
:流處理范例在時間關鍵的系統中總是扮演著關鍵的角色。傳統的示例包括數字信號處理系統、大規模的模擬平臺、多媒體客戶端和服務器,以及高清晰度呈現場,如下列各項所描述的MicrosoftDirectXversion9.0softwaredevelopmenttoolkit.http://msdn.microsoft.com/directx/directxSDK/default.aspx;AravindArasu,BrianBabcock,MayurDatar,KeithIto,ItaruNishizawa,JustinRosenstein,andJenniferWidom.STREAMTheStanfordstreamdatamanager(演示),InProceedingsofthe2003ACMInternationalConferenceonManagementData(SIGMOD2003),SanDiego,CA,June2003;J.T.Buck,S.Ha,EA.Lee,andD.G.Messerschmitt.Ptolemyaplatformforheterogeneoussimulationandprototyping.InProceedingsofthe1991EuropeanSimulationConference,Copenhagen,Denmark,June1991;SirishChandrasekaran,OwenCooper,AmolDeshpande,MichaelJ.Franklin,JosephM.Hellerstein,WeiHong,SaileshKrishnamurthy,SamMadden,VijayshankarRaman,FredReiss,andMehulShah.TelegraphCQContinuousdataflowprocessingforanuncertainworld.InProceedingsorthe2003ConferenceonInnovativeDataSystemsResearch(CIDR2003),Asilomar,CA,2003;P.D.HoangandJ.M.Rabaey.SchedulingofDSPprogramsontomultiprocessorsformaximumthroughput.IEEETransactionsonSignalProcessing,41(6)2225-2235,June1993;GregHumphreys,MikeHouston,RenNg,RandallFrank,SeanAhern,PeterD.Kirchner,andJamesT.Klosowski.ChromiumAsteam-processingframeworkforinteractiverenderingonclusters.2002;RainerKoster,AndrewBlack,JieHuang,JonathanWalpole,andCaltonPu.Infopipesforcomposingdistributedinformationflows.InProceedingsofthe2001ACMMultimediaWorkshoponMultimediaMiddleware,Ottawa,Canada,October2001;StanZdonik,MichaelStonebraker,MitchCherniak,UgurCetintemel,MagdalenaBalazinska,andHariBalakrishnan.TheAuroraandMedusaprojects.BulletinoftheIEEETechnicalCommitteeanDataEngineering,March2003,這里引用了這些文件作為參考。最近,正在開發分布式流處理系統,以便進行高性能的事務處理、對傳感器數據進行連續的查詢以及企業范圍內的復雜的事件處理。在當今的分布式流數據處理系統中,大量的實時流通過處理節點的子集進入系統。處理節點可以共同位于例如單一群集內,或在地理位置上分布于廣闊的區域。如圖1所描述的,應用部署在作為操作員的網絡的處理節點上,或處理單元上。每一個數據流都包括流數據對象(SDO)(這是數據流的基本信息單位)的序列。每一個處理單元都對從其輸入數據流接收到的SDO執行某種計算,例如,過濾、聚合、關聯、分類或變換。此計算的輸出可以改變處理單元的狀態,和/或產生輸出SDO,具有從輸入SDO(可能有多個)導出的相關信息的摘要和處理單元的當前狀態。為了執行計算,處理單元使用它駐留在其上面的處理節點的計算資源。節點上的可用的計算資源是有限的,并通過處理器的分時,或者并行處理機制,在駐留在節點上的處理單元(可能有多個)之間分配。在分布式流處理系統中,網絡和處理器資源兩者都受到約束。如此,資源的有效利用、低遲延,以及穩定的系統操作是重要的資源管理挑戰。盡管這些目標對于資源調度器是典型的,但是,分布式流處理系統的屬性使情況復雜化。例如,每一個處理單元的資源利用率受到處理圖中的處理單元的上游和下游的處理單元的約束。此外,處理單元的資源消耗可能是狀態相關的,導致在整個系統中產生突發性的處理器和網絡利用率。甚至開發適當的有效性度量是困難的,因為工作的單元(輸入數據包)和操作(處理單元計算)被不均衡地加權,因此,只監視資源利用率是不夠的。流處理作業是相對長時間運行的,隨著新的工作被引入到系統中,各種作業的相對權重或優先級可能會變化。向作業指定權重或優先級的任務可以由人執行,也可以由“元調度器”執行。元調度器的目標一般將基于提交到系統的工作的相對重要性來指定時間平均分配目標。比較起來,資源調度器的目標是實施這些長期分配目標。在傳統的共享處理器環境中,資源調度器負責從準備隊列(正在等待的進程的隊列)中選擇等待進程并向它分配資源(CPU)。基于優先級的或成比例的共享調度器允許系統管理員來配置系統,以便當提交作業時,可以指定權重或優先級。然后,調度器可以在確定過程中使用此權重或優先級信息來從準備隊列中選擇等待進程。當前調度/元調度技術并沒有充分地針對流處理環境。在標題為“Dataflowprocessingelement,multiprocessor,andprocesses”的美國專利No.4,814,978,標題為“Multiprocessorsystemandamethodofloadbalancingthereof”的美國專利No.5,241,677,標題為“Multiprocessorschedulingandexecution”的美國專利No.5,742,821,標題為“Systemandmethodforintegrateddataflowcontrol”的美國專利No.6,167,029,標題為“Sliding-windowdataflowcontrolusinganadjustablewindowsize”的美國專利No.6,415,410,標題為“Methodandapparatusforcontrollingdatamessagesacrossafastpacketnetwork”的美國專利No.6,426,944,標題為“Externaljobschedulingwithinadistributedprocessingsystemhavingalocaljobcontrolsystem”的美國專利No.6,694,345,標題為“Methodandsystemfornetworkprocessorscheduler”的美國專利No.6,795,870,以及標題為“Systemandmethodforschedulingmessagetransmissionandprocessinginadigitalnetwork”的美國專利No.6,795,442中描述了調度/元調度技術的示例,這里引用了這些文件作為參考。在此環境中,要被調度的實體(處理單元)是互連的,以便一個處理單元的輸入(例如,數據包)是一個或多個處理單元的某些或所有輸出。當到達處理單元的數據包的速率是突發性的,或者處理數據包所需的資源是突發性時,會產生問題。當今的資源調度器通常采用三種方法之一嚴格的實施、保證限制實施和速度實施。嚴格的實施所存在的一個問題是,如果資源調度器試圖嚴格地實施由元調度器提供的長期分配目標,那么,當突然有很多數據到達時,處理單元的輸入緩沖區可能會溢出。另外,考慮當兩個處理單元(PEA和PEB)在單一處理節點中執行的情況。在某些時間間隔內,PEA的輸入速率可能臨時要求小于其長期分配,而PEB的輸入速率可能臨時要求大于其長期分配。如果資源調度器嚴格地遵循元調度器的分配,則PEB的緩沖器會溢出,盡管資源沒有被完全利用。在SaowaneeSaewong和Ragunathan(Raj)Rajkumar的Cooperativeschedulingofmultipleresources,在RTSS′99Proceedingsofthe20thIEEEReal-TimeSystemsSymposium,page90,Washington,DC,USA,1999.IEEEComputerSociety中進一步描述了嚴格的實施,這里引用了這些文件作為參考。在保證限制實施下,對資源調度器的輸入是最小保證的分配和對每一個作業的最大分配限制。此解決方案將允許PEB(從前一示例)在PEA的低活動的時間段內利用額外的資源。然而,由于調度器不考慮處理單元的瞬時緩沖器占用率和輸入數據速率,因此,在輸入數據突然增多的情況下,它不增大處理單元的短期處理分配,從而增大處理單元中的緩沖器溢出的可能性。在ShailabhNagar,RikvanRiel,HubertusFranke,ChandraSeetharaman,VivekKashyap,andHaoqiangZheng.ImprovingLinuxresourcecontrolusingCKRM.InProceedingsofthe2004OttawaLinuxSymposium,Ottowa,Canada,July2004;DionisiodeNiz,LucaAbeni,SaowaneeSaewong,andRagunathan(Raj)Rajkumar.Resourcesharinginreservation-basedsystems.InRTSS′01Proceedingsofthe22ndIEEEReal-TimeSystemsSymposium(RTSS″01),page171,Washington,DC,USA,2001.ComputerSociety;AbhishekChandra,MicahAdler,PawanGoyal,andPrashantShenoy.SurplusfairschedulingAProportional-ShareCPUschedulingalgorithmforsymmetricmultiprocessors.Pages45-58,中進一步描述了保證限制實施,在此引用了這些文件作為參考。在速度實施下,給每一個處理單元分配一個權重,權重越大,當被從準備隊列中選擇時,處理單元必須等待資源的時間就越短。如此,資源調度器根據分配給處理單元的權重(速度),以及處理單元在當前時期必須等待資源的時間量,進行從準備隊列的選擇。考慮到PE的輸入數據速率是突發性的情況。在給定瞬間,PE的輸入緩沖區是空的,即,PE是空閑的。隨后,PE接收很多數據。基于速度的調度器將處理PE的輸入緩沖區中的一個SDO,然后等到PE的等待時間超過處理隨后的SDO之前的PE的速度值。由于突發性,處理單元的輸入緩沖區在它處于等待狀態時有可能被數據溢出。在P.bari,C.Covill,K.Majewski,C.Perzel,M.Radford,K.Satoh,D.Tonelli,andLWinkelbauer.IBMenterpriseworkloadmanager中進一步描述了速度實施,在此引用了該文件作為參考。如此,傳統的調度方法不直接適用于流處理系統。這主要是因為,這樣的系統的要求超出了傳統的處理器共享,例如,流處理系統向實踐中的靜態地向處理單元分配優先級提出了挑戰。此外,特別針對分布式流處理系統的資源管理已經致力于處理單元的有效放置和負載管理。在動態放置技術中,基于以平均時間為基礎最大化某些目標功能,可以在執行過程中修改操作員(PE)放置以適應資源可用性的變化。在PeterPietzuch,JonathanLedlie,JeffreyShneidman,MemaRoussopoulos,MattWelsh,andMargoSeltzer.InProceedingsofthe22ndInternationalConferenceonDataEngineering(ICDE′06),April2006中進一步描述了動態放置。有人提出了“甩負載”的方式,作為基于閾值和潛在的數據包內容,從輸入隊列中智能地丟棄元組(SDO)的手段。在MagdalenaBalazinska,HariBalakrishnan,andMichaelStonebraker.Loadmanagementandhighavailabilityinthemedusadistributedstreamprocessingsystem.InSIGMOD′04Proceedingsofthe2004ACMSIGMODinternationalconferenceonManagementofdata,pages929-93,NewYork,NY,USA,2004.ACMPress中進一步描述了甩負載的方式,在此引用了該文件作為參考。動態放置和甩負載方式造就了系統必須調整到可用的基礎資源分配(通過移動操作員或者甩負荷)的目標環境。然而,這些技術最終要求過度的供應,以處理流處理的不可預測的特性。因此,需要克服如上文所討論的現有技術所存在的問題。
發明內容簡單來說,根據本發明,說明了用于動態地穩定流處理系統的方法、上游處理節點,以及計算機可讀介質。該方法包括接收至少一個計算資源分配目標。進一步包括確定至少一個上游處理單元的輸入數據流速率改變。響應所述上游處理單元的輸入速率改變,動態地分配計算資源給上游處理單元。在所述上游處理單元和至少一個下游處理單元之間動態地控制數據流。在另一個實施例中,說明了分布式流處理系統中的上游處理節點。上游處理節點包括至少一個上游處理單元。以通信方式耦接到處理單元的處理單元監視器確定上游處理單元的輸入數據流速率改變。上游處理節點進一步包括調度器。調度器包括以通信方式耦接到所述上游處理單元的元調度器,用于確定計算資源分配目標。調度器中還包括了CPU調度器。CPU調度器以通信方式耦接到所述上游處理單元和元調度器,用于響應所述上游處理單元改變,動態地向所述上游處理單元分配至少一個計算資源。CPU調度器動態地控制所述上游處理單元和至少一個下游處理單元之間的數據流。在再一個實施例中,提供了用于動態地穩定流處理系統的計算機可讀介質。該方法包括接收至少一個計算資源分配目標。進一步包括確定至少一個上游處理單元的輸入數據流速率改變。響應所述上游處理單元的輸入速率改變,動態地分配計算資源給上游處理單元。在所述上游處理單元和至少一個下游處理單元之間動態地控制數據流。本發明的一個優點是,確定和控制資源(處理器和網絡)分配(布局和部分分配),以便最大化目標功能并維護總的穩定性。此外,不是以人工方式限制配置變化(例如,操作員放置),因為這樣的變化會使系統不穩定,本發明使用控制理論方法,如此,系統可以面對變化自我穩定。這是特別重要的,因為變化可以由調度器或工作負荷本身的突發性而產生。附圖(在各個單獨的視圖中,類似的附圖標記表示相同的或功能上類似的元件),與下面的詳細描述一起,構成了說明書的一部分,用于進一步顯示各個實施例,并說明根據本發明的各種原理和優點。圖1是顯示了傳統的分布式流處理系統的方框圖;圖2是根據本發明的處理節點的比較詳細的視圖;圖3是顯示了根據本發明的如圖1所示的處理器的比較簡化的版本的方框圖;圖4是根據本發明的示范性流處理圖;圖5是顯示了一個處理單元上的慢處理速率如何影響下游處理單元的流處理圖;圖6是顯示了比接收方處理單元可以處理SDO的速度更快的(平均起來)上游處理單元上的處理SDO如何影響下游處理單元的流處理圖;圖7是顯示了到單一處理單元的資源分配如何通過圖中連接的組件傳播的處理圖;圖8是顯示了處理單元如何接收同一個流但以不同速率處理該流的處理圖;圖9是顯示了處理單元和CPU調度器之間的通信的流處理圖;圖10是顯示了根據本發明的實施例的全局性地優化加權信息獲得的示范性過程的操作流程圖;圖11是顯示了根據本發明的實施例的根據最大流傳輸策略傳輸數據包的示范性過程的操作流程圖;圖12是顯示了根據本發明的實施例的CPU控制的示范性過程的操作流程圖。具體實施例方式如本領域技術人員所知道的,本發明可以以硬件、軟件或硬件和軟件的組合來實現。然而,在一個實施例中,本發明是以軟件實現的。根據與優選實施例一起說明的本發明的原理的系統或方法,可以在單一計算機系統中實施,該單一計算機系統具有分離的用于執行所描述的或權利要求中的單個功能或步驟的元件或裝置,或組合了所說明的或權利要求中的任何功能或步驟的性能的一個或多個元件或裝置,也可以以分布式計算機系統來實施,該分布式計算機系統通過任何合適的裝置互連起來,如本領域技術人員所知道的。根據與優選實施例一起所說明的本發明的原理,本發明和本發明的原理不僅限于任何特定的計算機系統類型,而是可以與用于執行所描述的功能和所描述的步驟的任何通用計算機一起使用,如本領域技術人員所知道的。如上文所描述的,這樣的計算機的操作可以根據供計算機的操作或控制使用的介質上包含的計算機程序,如本領域技術人員所知道的。可以用來保存計算機程序產品的計算機介質,可以是計算機的固定設備,如嵌入的存儲器,也可以是便攜的介質,如磁盤,如本領域技術人員所知道的。本發明不僅限于任何特定計算機程序或邏輯或語言,或指令,而是可以利用任何如本領域技術人員所知道的合適的程序、邏輯或語言或指令來實施。在對所說明的的原理不進行限制的情況下,任何這樣的計算系統還可以特別包括至少一個允許計算機讀取數據、指令、消息或消息數據包的計算機可讀介質,及來自計算機可讀介質的其他計算機可讀信息。計算機可讀介質可以包括非易失性存儲器,如ROM、快閃存儲器、軟盤、磁盤驅動器存儲器、CD-ROM,及其他永久存儲器。另外,計算機可讀介質還可以包括,易失性存儲器,如RAM、緩存器、高速緩沖存儲器,以及網絡線路。此外,計算機可讀介質還可以包括如網絡鏈路和/或網絡接口(包括,允許計算機讀取這樣的計算機可讀信息的有線網絡或無線網絡)之類的暫時狀態介質中的計算機可讀信息。示范性分布式流處理系統根據本發明的實施例,如圖2所示,顯示了示范性分布式流處理系統200。在一個實施例中,分布式流處理系統200可以在SMP計算環境中操作。分布式流處理系統200在多個處理節點202、204上運行,這些處理節點通過多個網絡適配器206、208彼此耦接在一起。每一個處理節點202、204都是獨立的計算機,具有其自己的操作系統映像210、212,通道控制器214、216、存儲器218、220,以及系統存儲器總線226、228上的處理器222、224,系統輸入/輸出總線230、232耦接了I/O適配器234、236和網絡適配器206、208。雖然在每一個處理節點202、204中只顯示了一個處理器222、224,但是,每一個處理節點202、204都能夠具有一個以上的處理器。每一個網絡適配器都通過網絡交換機238鏈接在一起。在某些實施例中,各個處理節點102、104都能夠成為處理群集的一部分。所有這些變化都被視為權利要求書要求保護的本發明的一部分。示范性處理節點圖3是顯示了圖2的分布式計算環境200的處理節點202、204的比較詳細的視圖的方框圖。圖3顯示了一個處理節點202作為元調度器節點,另一個處理節點204作為處理單元執行節點(“PE執行節點”)。應該注意,本發明不僅限于處理單元202、204的這些特定配置。每一個處理節點202、204都基于適當地配置的用于實現本發明的示范性實施例的處理系統。任何適當地配置的處理系統都類似地能夠被本發明的實施例用作處理節點202、204,例如,個人計算機、工作站、等等。每一個處理節點202、204都包括計算機302、304。計算機302、304具有處理器222、224,它們通過系統總線230、232連接到主存儲器218、220和通道控制器214、216。計算機302、304還包括大容量存儲器接口306、308、終端接口310、312,以及網絡適配器硬件206、208。輸入/輸出總線226、228將這些組件連接起來。大容量存儲器接口306、308被用來將諸如數據存儲設備314、316之類的大容量存儲設備連接到處理節點202、204。數據存儲設備的一個特定類型是計算機可讀介質,如軟盤驅動器,可以用來向軟盤318、320或CD(未顯示)存儲數據和從其中讀取數據。另一種數據存儲設備是被配置為例如支持NTFS型文件系統操作的數據存儲設備。元調度器節點202的主存儲器218包括調度系統346。調度系統346包括元調度器328、CPU調度器334、優化器330,以及資源分配器332。元調度器328向在一個實施例中駐留在PE執行節點204中的各種處理單元342、344指定PE執行節點204資源的部分分配。元調度器節點可以控制一個或多個PE執行節點204的資源。在一個實施例中,元調度器328分析在駐留在PE執行節點204內的每一個處理單元342、344中獲得的信息。在一個實施例中,處理單元是對數據執行特定計算的應用,如處理單元PEA342和PEN344。信息在處理單元處理了數據包(SDO)之后獲得。元調度器328可以基于完全處理其輸入的平均時間資源要求,以及在一個實施例中,基于反映元調度器328處理單元342、344的任務的相對優先級的度量(即,期望的信息獲得)向特定處理單元342,344指定權重。元調度器328包含優化器組件330和資源分配器組件332。優化器330使用分配給處理單元342、344的權重來在加權的處理單元342、344之間優化CPU分配。如果對當前負載和權重,認為將所有資源分配到其他處理單元更好,則可以不給某些處理單元分配CPU資源。此優化試圖最大化所有PE執行節點204上的加權信息獲得。一旦確定了優化,元調度器節點202中的資源分配器組件332就遵循由優化器330確定的優化方案,向處理單元執行節點204中的特定目標指定資源分配。在一個實施例中,CPU分配是通過調整了權重的目標函數的優化來確定的,下面將比較詳細地描述。在一個實施例中,目標函數優先地向個別地或集體地產生最高加權信息獲得的處理單元指定CPU資源。下面將詳細描述全局優化方法。然后,元調度器328將資源分配目標傳遞到適當的PE執行節點204上的分布式資源控制器340。分布式資源控制器(“DRC”)340接受此信息作為關聯的PE342、344的時間平均的目標CPU分配。在一個實施例中,DRC340負責確定在任何給定時間的實際CPU分配,并將CPU分配傳遞到處理單元執行節點204的CPU調度器336。圖12中顯示了DRC340的此過程。在每一個處理節點202、204中實例化CPU調度器334、336。CPU調度器334、336為本地節點實施由元調度器328和DRC340作出的分配。PE執行節點204包括處理單元監視器338,在一個實施例中,該監視器駐留在主存儲器220中。處理單元監視器338監視PE執行節點204中的每一個處理單元的處理速率、輸入速率,以及緩存的數據的量。例如,處理單元監視器338監視處理單元342、344的輸入和輸出隊列。在另一個實施例中,此監視可以在DRC340內進行。如果處理監視器338確定特定處理單元342、344需要不同輸入速率,則此新的速率將傳遞到DRC340。如果處理單元342、344正在向不同的處理單元342、344發送數據,則可以說該處理單元是下游的。下游處理單元的處理單元監視器338主動地將有關所需要的輸入速率的信息通知給直接的上游處理單元的處理單元監視器。處理4顯示了根據本發明的實施例的包括處理單元PEA428、PEB434,以及PEC436的基本處理圖。“流”被定義為命名的通道,在其上輸送數據包(或,相當于流數據對象(“SDO”)。術語“源節點”可以用于標識數據包從系統200外面到達那里的節點。術語“匯節點”可以用來標識在那里發生了信息獲得的節點。轉發數據包和獲得信息獲得的處理單元可以被模型化為兩個節點(一個用于轉發,第二個用于信息獲得)。處理單元是流處理模型的基本處理單元。每一個處理單元都以零個或多個流作為輸入,以零個或多個流作為輸出。處理單元可以對到達輸入流的SDO執行任意的處理和/或轉換,并向其輸出流輸出任意SDO。然而,許多處理單元在輸入和輸出流之間表現出了強相關。例如,常見的處理單元類型是“注釋器”,它獲取輸入SDO,對其執行某種分析,將概括了分析的批注附加到SDO,并輸出經過批注的SDO。處理節點202、204是具有特定的資源池的邏輯容器,可以用來發送和接收流,并執行處理單元。實際上,處理節點202、204是處理單元駐留在其上面的網絡主機。用于運行這些處理單元的資源包括用于處理流的網絡帶寬或分配用于執行處理單元的CPU和存儲器。在一個實施例中,使用狀態機(stat-machine)模型化處理單元,并通過其輸入輸出關系將其特征化。在圖4中,處理單元PEA428從源402接收SDO。處理單元PEA428對接收到的SDO進行處理,并向流A404輸出一個或多個SDO。處理單元PEB434和PEB436預訂流A404。處理單元PE2B406接收由處理單元PEA428輸出的SDO。處理單元PEB434對這些SDO進行處理,然后向流B410輸出一個或多個SDO。處理單元PEB436還接收由處理單元PEA428輸出的SDO。處理單元PEB436對這些SDO進行處理,并向流C412輸出一個或多個SDO。系統的輸出是流B410和C412。流A404作為中間流是必需的,即,流A404對整個系統的任何生產率的度量不直接產生作用。雖然被顯示為同時駐留在主存儲器218、220中,但是,顯然,主存儲器218的相應的組件不需要始終甚至同時完全駐留主存儲器218、220中。在一個實施例中,每一個處理節點202、204利用常規虛擬尋址機制來使程序這樣操作似乎它們可以訪問大型單個存儲實體(這里稱為計算機系統存儲器),而不是訪問諸如主存儲器218、220和數據存儲設備308之類的多個較小的存儲實體。注意,這里使用了術語“計算機系統存儲器”來一般地指處理節點202、204的整個虛擬存儲器。雖然只為計算機302、304顯示了一個CPU222、224,但是,可以同樣有效地使用具有多個CPU的計算機系統。本發明的實施例進一步包括了多個接口,每一個接口都包括單獨的完全編程的微處理器,用于從CPU222、224中分攤處理的負載。終端接口310、312被用來直接將一個或多個終端322、324連接到計算機302、304以提供到計算機302、304的用戶界面。這些終端312可以是非智能的或完全可編程的工作站,用于使系統管理員和用戶與處理節點202、204進行通信。終端322、324還可以包括用戶界面和外圍設備,外圍設備連接到計算機302、304,并由終端I/F306(包括視頻適配器和鍵盤接口、指示設備等等)中包括的終端接口硬件進行控制。主存儲器218、220中包括的操作系統210、212(圖3)是諸如Linux、UNIX、WindowsXP,以及WindowsServer2003操作系統之類的合適的多重任務操作系統。本發明的實施例可以使用任何其他合適的操作系統。本發明的某些實施例利用諸如面向對象的框架機制之類的體系結構,允許操作系統(未顯示)的組件的指令在位于處理節點202、204內的任何處理器上執行。網絡適配器硬件206、208用于提供到網絡326的接口。本發明的實施例能夠用于處理任何數據通信連接,包括目前模擬和/或數字技術或通過未來的網絡機制。雖然是在完全功能化的計算機系統的上下文中描述本發明的示范性實施例,但是,本領域技術人員將認識到,實施例能夠通過軟盤,例如,軟盤318、320、CD-ROM,或其他可記錄介質的形式,或通過任何電子傳輸機制類型,作為程序產品進行分發。本發明的一個優點是,提供了用于進行自適應、分布式資源控制的雙層方法。例如,當部署新的處理單元342、344時,由元調度器328執行的此第一層選擇處理節點202、204和對于每一個處理單元的處理節點資源的部分分配。基于期望的、時間平均的輸入流速率,通過處理圖的加權的吞吐量的全局優化,確定分配。當PE被實例化或結束,以及定期允許增量式部署PE并針對資源或工作負荷中的變化進行調整時,進行第一層確定;以分布式,正在進行的方式進行第二層確定。由DRC340執行的此第二層過程,共同地優化處理單元的輸入和輸出速率和處理單元342、344的瞬時處理速率。因此,當發生諸如數據包突然增多之類的事件時,可以穩定分布式流處理系統。本發明的另一個優點是,與傳統資源不同,在向處理單元分配資源時,包括元調度器328、優化器330,以及資源分配器330的本發明的調度系統346考慮了輸入數據流速率和輸入數據流的無先驗的重要性。本發明的調度系統346也是可縮放的,因為DRC340和CPU調度器338只使用本地派生的信息來實施由元調度器328作出的分配。由本發明提供的調度系統346通過下列方式在最優化和穩定性之間取得了折衷,即首先找出不考慮數據流的隨機的,隨時間變化的特性的全局解決方案,來在處理單元342、344之間確定額定CPU分配。在運行過程中,基于對每一個處理單元可用的本地信息,改變這些額定分配,以確保穩定性。本發明的另一個優點是用于測量系統性能的度量。常規的處理器共享算法通常使用基于資源利用率的度量,例如,執行的作業越多,就越好,如Tak-WahLam,Tsuen-WanNgan,andKer-KeungTo.Onthespeedrequirementforoptimaldeadlineschedulinginoverloadedsystems.InProc15thInternationalParallelandDistributedProcessingSymposium,page202,2001,所進一步描述的,在此引用了該文件作為參考。然而,在分布式流處理上下文中,資源利用率不是好的度量。諸如圖4中的處理單元PEA428之類的中間處理單元可以利用許多系統資源,執行許多進程,并輸出大量的SDO,但是,對于系統的輸出流此工作可能不會有作用。向處理單元PEA428的大資源分配可能導致流A404上的高輸出速率,但是,如果處理單元PEB434和PEB436沒有足夠的資源處理進入系統輸出的流A404,這不是十分有效。如果三個處理單元全部都在同一個處理節點上運行,則向處理單元PEB434和/或PEB436重新分配處理單元PEA428的某些資源會提高系統吞吐量。由傳統的處理器共享算法所使用的資源利用率度量不存在這些影響。在本發明中,元調度器328代之以使用加權的吞吐量度量,該度量將正的權重附加到作為系統輸出的每一個流。通過對這些輸出流中的每一個輸出流中的加權吞吐量進行求和,形成了表示由系統完成的總的工作量的度量。處理單元之間的關聯的資源使用從圖4可以看出,處理單元PEA428和PEB434受到它們的生產商-消費者關系的約束。系統中的大多數處理單元從其他處理單元接收它們的輸入SDO,再將它們的輸出SDO發送到另外的處理單元進行進一步的處理。處理單元不能以比上游PE產生SDO的速率更快的(平均)速率來處理SDO。圖5顯示了處理單元PEA428以低速率產生SDO的示例,如此約束了處理單元PEB434的輸出速率,盡管處理單元PEB434具有足夠的CPU來以快得多的速率對SDO進行處理。例如,處理單元PEB434在利用CPU分配,如部分地帶陰影的CPU框502所顯示的。類似地,如果處理單元產生SDO的速率比接收方處理單元可以處理它們的速度更快(平均起來),則處理單元將在緩存器中排隊等候,直到緩沖器溢出,如圖6所示。圖6顯示了在處理單元PEB434的輸入端602處排隊等候的SDO602。當隊列已滿時,處理單元PEA428必須減慢其處理速率,或者允許將沒有放入處理單元PEB434的隊列604中的SDO丟棄。這些約束在處理圖中的上游和下游處理單元的資源使用之間隱含地建立關聯。除了上游和下游處理單元(即,單一連接的組件中的處理單元)之間的關聯之外,如果連接的組件共同地具有一個或多個處理節點,則分離的連接的組件中的處理單元之間的資源使用也是關聯的。在圖7中,處理單元PEB734和處理單元PEE740共同位于單一處理節點704中,但是,位于分離的連接的組件中。如果處理單元PEB734被分配的CPU資源不足,因而變成頂部連接的組件上的瓶頸(處理單元PEA728到處理單元PEB734到處理單元PEC736),則頂部處理單元圖的吞吐量變小。如果以處理單元PEE740為代價增大給處理單元PEB734的CPU分配,則頂部處理圖的吞吐量可能增大,但是,處理單元PEE740可能變成瓶頸。這會降低底部處理單元圖的吞吐量。如此,對單一處理單元的資源分配的影響可以不只是通過該處理單元的連接的組件傳播,而且也通過其他連接的組件傳播。本發明的另一個優點是,它考慮了上文所描述的各種依賴關系。本發明基于每一個處理單元的每個SDO資源要求的長期平均值,以及它們的生產商-消費者關系隱含的流約束,來執行優化。長期平均值的使用簡化了這一階段的優化,允許解算器使用流體流動方法。需要進行協調才能有效地關聯處理單元。這變成了全局優化,而不只是本地調度確定。以分布式方式進行處理圖中的所有處理單元之間的協調。下面將比較詳細地描述優化過程。不均衡的流消耗率如上文所討論的,連接到單一下游處理單元的處理單元342、344必須將其輸出速率約束到下游處理單元的輸入速率或者必須在下游輸入緩沖區溢出時經歷SDO的丟失。當產生上述情況時,將處理單元的輸出速率同步到其下游處理單元的輸入速率可以幫助克服丟失SDO的情況。然而,當一個處理單元的輸出流由多個下游處理單元讀取時,這樣的策略不一定是最好的。圖8顯示了讀取由處理單元PEA828輸出的同一個流的四個處理單元(PEB834、PEC836、PED838、PEE840)。雖然同一個流由處理單元PEB834、PEC836、PED802、PEE804讀取,但是,它們以10-30SDO/秒的范圍內的不同速率(10,20,20,以及30SDO/秒)讀取流。例如,假設處理單元PEA828的時間平均CPU分配足以按30SDO/秒的最高速率產生SDO(以大于此的速率產生SDO顯然是浪費的)。然而,使用傳統的可靠的投遞方法(例如,TCP流控制),處理單元PEA428以10SDO/秒的速率產生SDO,該速率是最慢的處理單元(處理單元PEB834)支持的速率。這種傳輸策略被稱為最小-流策略。在分布式流處理系統中,這種傳輸策略不是理想的。這是因為最小流策略將整個連接的處理單元的群集減慢到最慢的成員的速率。其中工作負荷的特征為數據融合(例如,與線性工作流相對的聚合、關聯等等)的大規模流處理環境可以具有許多互連的處理單元。以最慢的成員的速率操作它們中的全部會導致資源利用不足,從而導致對系統的輸入中的數據丟失。因此,在一個實施例中,元調度器328定義了傳輸策略(即,最大流策略),如果處理單元的下游處理單元中的至少一個在其輸入緩沖區中具有空間,則允許該處理單元轉發至少一個數據包。只有在其任何下游處理單元中沒有空間的情況下,處理單元才空閑。由于通過加權的吞吐量的最大化來確定處理單元的CPU分配,因此,由元調度器328和DRC340定義的最大流策略也要求每一個處理單元342、344以其CPU分配對數據包進行處理。相應地,DRC340通過將特定處理單元的輸出速率設置為其最快的下游處理單元的輸入速率,實施由元調度器328定義的最大流傳輸策略。將它設置為大于此將會浪費資源,因而這樣是次最佳的。將它設置得較低會降低最快的下游處理單元的吞吐量,并不必要地降低系統的加權的吞吐量。因此,元調度器328和DRC340實現了最大流傳輸策略,該策略要求,每一個處理單元342、344以其時間平均CPU分配操作,如果在其最快的下游處理單元的輸入緩沖區中有空間,將數據包轉發到其所有下游處理單元。下面將比較詳細地描述最大流策略。如上文所討論的,在一個實施例中,調度系統346利用雙層方法來進行自適應、分布式資源控制。第一層涉及元調度器328,其指定資源分配目標以最大化系統的加權的吞吐量。在一個實施例中,調度系統346采用處理的流體流動模型。第二層涉及CPU調度器334、336、DRC340調整瞬時資源分配,以在面對固有量化的和突發性的工作負荷時穩定分布式流處理系統200。第一層還涉及元調度器328全局性地優化流處理系統200的加權信息獲得。元調度器328基于全局優化將資源分配目標傳遞到CPU調度器334、336、CPU調度器334、336分布式資源控制器340。在第二層過程中,CPU調度器334、336分布式資源控制器340接受這些資源分配目標。處理單元監視器338可以獨自存在,或者駐留在CPU調度器334、336分布式資源控制器340內,監視每一個處理單元的處理速率、輸入速率和緩存的數據的量。處理單元監視器338主動地將所需要的輸入速率通知CPU調度器334、336,下游處理單元的處理單元監視器338。在一個實施例中,處理單元監視器338將CPU使用率、所需要的輸入速率,以及緩沖器占用傳遞到分布式資源控制器340。分布式資源控制器340使用來自處理單元監視器338的信息和來自元調度器328的目標分配來確定瞬時CPU分配,并將此分配傳遞到CPU調度器334、336。本發明的一個優點是,元調度器328大約幾分鐘更新平均時間資源分配,并可以考慮到任意復雜的策略約束。另一個優點是,必須處理突發性中涉及的子第二時標的分布式資源控制器和CPU調度器334、336,嵌入在系統的每一個處理節點中,并只使用本地信息和來自直接下游處理單元的所需要的速率信息。全局優化和最大流下面是當描述產生最大流策略的全局優化過程和動態地穩定流處理系統200的過程時將使用的不同表示法的簡要的描述。在一個實施例中,分布式流處理系統200包括從s0到ss-1的S個流(輸入)。系統包括P個處理單元,表示為p0,p1,...,pp-1,駐留在N個節點上,表示為n0,n1,...,nn-1。所有處理單元以及所有節點的集合分別表示為P和N。駐留在節點上的處理單元的集合表示為Nj,其中,下標j表示節點索引。處理單元的互連可以通過如圖4所示的有向非循環圖(“DAG”,)來表示。向處理單元j饋送數據的處理單元的集合為U(pj),,而處理單元j向其饋送數據的處理單元的集合為D(pj)。如此,U(pj)表示pj的“上游”處理單元,而D(pj)表示pj的“下游”處理單元。由于系統的出口處的處理單元沒有任何下游處理單元,因此,在出口處,對于pj,D(pj)=空值。此外,在系統的入口處處理單元從數據流導出它們的輸入,如此,如果處理單元pj從流sk導出其數據,U(pj)=sk。通過在Δt的時間間隔內進行采樣,時間被離散化,在采樣時間測量全部量。處理單元j的輸入和輸出速率分別表示為rinj和routj。因此,處理單元j的數據的輸入和輸出字節在時間間隔[nΔt,(n+1)Δt]內可以分別表示為rinj(n)和routj(n)。在時間間隔[nΔt,(n+1)Δt]內處理單元pj的CPU分配表示為cj(n)Δt。CPU分配可以以規范化形式表示,如此∑cjj∈Nj(n)≤1,∀n≥0]]>(公式1)rinj(n),routj(n),和cj(n)的時間平均值被定義為和如此,r‾in,j=limn→∞1NΣn=0Nrinj(n),r‾out,j=limn→∞1Nrout,j(n),c‾j=limn→∞1NΣn=0Nrin,j(n),c‾j(n)]]>(公式2)全局優化全局優化確定每一個處理單元的時間平均分配以便最大化加權吞吐量。在操作過程中,使用控制算法來改變rinj(n),routj(n),和cj(n),以實現兩個目標(1)系統的穩定性,(2)確保rinj(n),routj(n),和cj(n)變化,以便在合理長的時期內,滿足公式2。長期CPU目標被表示為而cj(n)則定義時間nΔt時的CPU分配。全局優化最大化了聚合效用函數。處理單元pi與效用函數關聯,如果其時間平均輸出速率被設置為函數是嚴格遞增,凹形,可微分的。各個處理單元的效用函數被參數化為Uj(c‾j)=wjU(c‾j),]]>其中,wj是處理單元的“權重”(權重越大,暗示效用越高),對于所有處理單元,函數U(x)是相同的。例如,在一個實施例中,變量U(x)可以設置為U(x)=1-θ-x;U(x)=log(x+1);U(x)=x。權重{wj}度量處理單元的相對重要性。然后,給出系統的總效用(表示為Us)作為處理單元的效用的總和Us(r‾out,0,r‾out,1,...,r‾out,P-1)=Σj∈PwjU(r‾out,j)]]>(公式3)公式3可以在下面的約束集合下最大化Σj∈Njc‾j≤1for0≤i≤N-1]]>(公式4)r‾in,j≤r‾out,ifori∈U(pj),0≤j≤P-1]]>(公式5)r‾in,j=hj(c‾j),]]>(公式6)其中表示當處理單元j的CPU分配是時的平均輸入速率。函數被模型化為其中,a和b是憑經驗確定的常數。常數b代表設置處理單元的數據結構涉及的開銷,函數中的開銷,等等。常數a代表可以由處理單元在每個處理周期內處理的輸入數據的字節數量。公式4確保了一個節點上的所有處理單元的CPU分配的總和小于1。公式5確保了處理單元的輸出速率不小于其下游處理單元的輸入速率(與等式相對比,公式5中的不等式源于實施了最大流策略的事實)。最后,公式6將CPU分配映射到時間平均輸入速率在一個實施例中,使用拉格朗日乘數來最大化公式3。因此,可以使用任何凹形最優化算法。總效用的凹性確保了存在最大化公式3的唯一的CPU分配的集合。動態穩定如上文所描述的,元調度器328向處理單元分配資源,以便信息獲得可以在整個流處理系統200中得到優化。在一個實施例中,這是通過根據處理單元342、344中的信息獲得優化分配來實現的。另外,如果每一個處理單元342、344在其輸出隊列中都有可用空間,則它們對到達的數據包進行處理。當在它饋送的至少一個處理單元342、344的輸入隊列中有空間時,則從此輸出隊列中發送數據包。例如,處理單元監視器338監視輸入和輸出隊列,以確定是否可以對數據包進行處理,或將其傳輸到下游。其輸入隊列已滿的處理單元342、344將不會接收數據包。另外,系統200中的每一個處理單元342、344以其下游處理單元342、344的持續的速率和其CPU分配的最大值進行操作。然而,在許多實例中,不以流動方式接收數據包。大多數處理單元342,344趨向于不以處理操作的流體(無限可分和平穩)流的方式,而是以比較大的塊的方式來工作。例如,視頻處理單元可能需要整個幀,或整個獨立地壓縮的幀的集合(“圖片組”)來執行處理步驟。更重要的是,許多處理單元342,344需要不同資源量(即,存儲器,CPU時間)來對每一組SDO進行處理。這兩種因素都會導致處理單元342,344的處理速率和資源利用率的不均勻性,例如,突發性。甚至在處理單元342,344本身從計算上來說表現很好的情況下,它們可以與其他更具突發性的處理單元342,344以及具有突發性資源使用的各種系統任務共享處理節點。對突發性問題的一個解決方案是添加緩沖器。然而,設計非常高的數據速率和為每個處理節點的處理單元的數量設計可縮放性使得緩沖越來越昂貴,因為系統存儲器變為嚴重的約束。另外,增大緩沖器的大小也會增大系統的平均端對端延遲。本發明的一個優點是,有效地使用可用的緩沖區空間來平衡數據丟失、突發性,以及延遲的影響。例如,圖9顯示了動態穩定的處理圖900。處理圖900包括處理單元PEA928、PEB934、PEC936、PED938、PEE940、PEF942、PEG944、PEH946,它們通過諸如緩存接口B902之類的緩存接口連接起來。虛線904描述了沿著路徑的處理單元之間的控制信息的流。標有雙箭頭的虛線906描述了駐留在處理節點上的處理單元和CPU調度器334,336之間的通信。實線908描述了網絡中的數據的流。調度系統346執行動態、分布式聯合的CPU調度和流量-控制,以便維護流處理系統200的穩定性。DRC340穩定其相應的處理節點內的所有處理單元的輸入、輸出,以及處理速率。DRC340根據需要,隨著時間逐漸地調整這些速率以使輸入緩沖保持在目標級附近。確保穩定的緩沖器占用率級別具有多個優點。當系統200在傳入的處理單元緩沖器902中保持足夠的數據時,許多處理單元可以通過下面的方式利用“批處理”,即陸陸續續對多個SDO進行處理(而不是讓每一個處理單元對單一SDO進行處理,然后執行下一個處理單元)。通過由同一個處理單元對多個SDO進行處理,系統可以避免上下文切換開銷、縮小高速緩存遺漏以及以較大的塊傳輸數據(例如,通過在向網絡發送之前緩沖多個輸出SDO)。此外,當系統防止緩沖器變得太大時,縮短了端對端處理延遲,本發明避免了使緩沖器完全裝滿(這可能會導致上游處理單元被要求暫停它們的處理)。流控制下面將描述由調度系統346執行的流控制。從圖9可以看出,虛線代表了處理單元之間的控制流通信。例如,一個處理單元的輸入和輸出速率可以被傳遞到另一個處理單元,以便可以避免緩沖器溢出。控制流通過處理單元之間的控制信息的本地通信調整處理單元之間的數據的流量,如圖9中的虛線所示。在一個實施例中,由調度系統346執行的流控制過程調整處理單元的輸出速率,以便它不會超過其下游處理單元的允許的輸入速率。如上文所討論的,這樣的近視的優化策略會導致分布式流處理系統的不穩定性,在所述近視的優化策略中,每一個處理單元都對與其位于一起的下游處理單元的狀態不可知的數據進行處理。在一個實施例中,聯合的流量和CPU控制算法用于實現上文標題為“動態穩定”的一節中所討論的穩定性目標。應該注意,下面的有關流量和CPU控制算法的討論是示范性的,而不對本發明作出限制。在一個實施例中,對于時間nΔt時的處理單元j,控制算法聯合地以分布式方式確定binj(n),routj(n),和cj(n),并考慮到處理單元的輸入緩沖區占有率和來自其下游和位于一起的處理單元的反饋。在一個實施例中,分配的目標是維護分布式流處理系統的穩定性,并避免由于緩沖器溢出而導致的部分地處理的數據的丟失。處理單元pj在時間間隔[nΔt.(n+1)Δt)內的處理速率被表示為pj(n)。如此,pj(n)=hj(cj(n)),其中,hj(cj(n))是從CPU分配到處理單元pj的處理速率的映射。nΔt時的處理單元j的輸入緩沖區的占有率被表示為bj(n)。系統中的所有緩沖器的大小都被固定在B。如此,bj(n)的演變遵循公式bj(n+1)=[bj(n)+r‾in,j(n)-pj(n)]0B]]>(公式7)其中[x]ah=max(a,min(x,b)).]]>處理單元j在時間間隔[nΔt,(n+1)Δt),routj(n)內的輸出速率取決于時間間隔[nΔt,(n+1)Δt),cj(n)內的其CPU分配。在一個實施例中,此映射通過函數gi(cj(n)),即,routj(n)=gj(cj(n))來表示。對于隔離中的處理單元,可以自由地選擇處理單元的輸入速率rinj(n)和CPU分配cj(n)。那么,處理速率pj(n),、緩沖器占用率bj(n+1)和輸出速率routj(n)是通過rinj(n)和cj(n)唯一地確定的依賴變量。對于串聯的處理單元,處理單元的輸入速率等于其上游處理單元的輸出速率。如此,rinj(n)也是依賴變量,依賴PEj的外部的量。在流控制過程中,對于每一個處理單元,基于其下游處理單元的緩沖器占用率bj(n),以及最大可容許的輸入速率,DRC340確定時間間隔[nΔt,(n+1)Δt)內的最大可容許的輸入速率rmaxj(n)和CPU分配cj(n)。此速率被傳遞到處理單元j的上游處理單元PEU(pj)。接著,PEU(pj)執行相同的計算。在下面的標題為“CPU控制”一節中比較詳細地討論處理單元j的確定cj(n)。相對于流控制過程,確定cj(n),以便處理單元j的輸出速率小于或等于其下游處理單元的最大可容許的輸入速率,即,routj(n)≤rmax,D(j)(n)。概述了rmaxj(n)的計算,以便系統的操作是穩定的。在一個實施例中,進行控制,以確定時間步驟n時的最大可容許的輸入rmaxj(n),以便處理單元的閉環動態遵循方程rmax,j(n)=[ρj(n)-Σk=0Kλk{bj(n-k)-b0}-Σl=1Lμt{rmax,j(n-l)-ρj(n-l)}]+]]>(公式8)其中[x]+=max(x,0)。參數b0表示控制器試圖維護的所需要的緩沖器占用率。一般而言,選擇b0以滿足兩個目標(a)最小化排隊延遲和避免緩沖器溢出,以及(b)確保處理單元的高利用率,或者,最小化緩沖器下溢的機會。因此,在一個實施例中,選擇大小b0,以便滿足這些目標。對于給定b0,如果常數b0{λk}比較大(相對于{μt}),則處理單元試圖使bj(n)等于b0。另一方面,如果{μt}相對于{λk}比較大,處理單元嘗試使輸入和處理速率相等。在一個實施例中,確定{λk}和{μt},以便在兩個極端之間取得適當的平衡。CPU控制在一個實施例中,調度系統346通過CPU分配過程和流控制過程,實現動態穩定。在一個實施例中,一前一后地執行這兩個過程,以確保系統200的穩定性。從圖9可以看出,虛線代表了處理單元以及CPU控制過程的其相應的CPU調度器之間的通信。每一個CPU調度器926都在其相應的節點上運行CPU調度過程。CPU調度過程基于處理單元的輸入緩沖區占有率,將每一個節點上可用的計算資源在運行于其上面的處理單元之間進行分割。也可以基于處理單元的長期的平均CPU目標以及來自下游處理單元的反饋,對計算資源進行分割。來自下游處理單元的反饋提供了對某一個處理單元的CPU分配的上限。在時間nΔt,處理單元j從所有其下游處理單元PEsi∈D(pj)接收rmaxj(n)的更新。處理單元j使用此信息確定其輸出速率的上限,如roj(n)≤max{rmax,i(n)i∈D(pj)}(公式21)這就限制了其CPU分配cj(n)≤gj-1(ro,j(n).,]]>因此,也就限制了其處理速率pj.。注意,公式21實現了標題為“全局優化和最大流”一節討論的最大流范例。資源分配是通過使用令牌存儲桶機制實現的,其中,在特定節點上運行的處理單元以固定速率獲得令牌。隨后每一個處理單元根據其處理要求,消耗CPU資源上的這些令牌。令牌存儲桶處理單元j的長期平均CPU分配被表示為cj(n)。處理單元j的下游處理單元被稱為Ds(j)。類似地,處理單元j的上游處理單元被表示為us(j)。在時間Δt,處理節點累積了同樣多的令牌。與它們的長期CPUcj(n)成比例地在處理節點上運行的各個處理單元之間分配它們。在處理單元一段時間內不使用令牌的情況下,它以與cj(n)成比例的速率累積令牌。通過將由處理單元可以累積的令牌的數量限制到某一個最大值,避免了令牌的無窮堆積。處理單元使用這些令牌的模式如下。每一個節點的CPU被劃分為兩個虛擬CPU,具有規范化的計算周期ρ和1-ρ.。在時間Δt.,虛擬CPU分別具有ρΔt和(1-ρ)Δt計算周期可提供。首先考慮具有規范化計算周期(1-ρ)Δt的劃分。在節點上運行的處理單元的子集之間分配(1-ρ)Δt計算周期(按照cjs的比率)。在節點上運行的處理單元有分配(1-ρ)Δt的一部分的資格,如果a.)它具有非零的輸入緩沖區占有率,因此,需要計算周期來處理數據,b.)處理單元擁有適當數量的令牌來交換計算周期。CPU的小部分ρΔt被分配給處理單元,以便避免處理單元的輸入緩沖區中的數據的迅速的堆積。在一個實施例中,這是按如下方式實現的。處理單元j有資格獲得ρΔt的一小部分,如果1.)其輸入緩沖區占有率b(t)大于預先定義的閾值b0,2.)它具有適當的令牌在計算資源上消耗。處理單元j獲得計算資源的資格用指示函數lj(t)來表示。按照規范化壓縮擴展緩沖器占用率的比率,在合格的處理單元之間分配部分ρΔt。凹形遞增函數fR→R被用作壓縮擴展器。如此,具有比較大的規范化緩沖器占用率的處理單元接收ρΔt的比較大的部分,反之亦然。注意,具有小于b0的緩沖器占用率的處理單元不從部分ρ接收CPU的任何部分。在一個實施例中,處理單元被允許與它們的輸入緩沖區占有率成比例地為CPU周期消耗它們的令牌,以便cj(n)不超過公式21的上下限。如此,一個節點上的處理單元的長期CPU分配保持在其CPU目標中,因為以等于其CPU目標的速率累積令牌。然而,處理單元的瞬時CPU分配取決于其擁塞級別(即,緩沖器占用率)和來自其下游處理單元的反饋。如此,CPU控制算法旨在降低擁塞和部分地處理過的數據的丟失,同時維護處理單元的長期CPU目標。優化信息獲得的示范性過程圖10顯示了分配CPU資源以優化整個分布式流處理系統200中的信息獲得的示范性過程。圖10的操作流程圖從步驟1002開始,并直接流向步驟1004。在步驟1004中,元調度器328向產生信息獲得的每一個處理單元分配權重。例如,信息獲得分析器318分析每一個節點中的信息獲得,并確定每一個處理單元的權重。在步驟1006中,每一個處理單元的權重值,及用于優化的其他值,如處理器規格,被傳遞到元調度器328的優化器320組件。在步驟1008中,優化器330對這些輸入進行處理,并在步驟1010中確定處理節點的優化方案。例如,運行全局優化算法,并輸出優化了信息獲得的針對各個處理單元的CPU分配。在步驟1012中,最佳CPU分配被傳輸到DRC340。然后,在步驟1014中,控制流測試系統是否正在關閉。如果系統正在關閉,則元調度器328在步驟1016中退出。如果系統沒有被關閉,元調度器返回到步驟1006,以利用更新的輸入重復優化。最大流策略的示范性過程圖11顯示了根據最大流策略傳輸數據包的示范性過程。由每一個傳輸流數據的PE的DRC340執行圖11中所顯示的過程。圖11的操作流程圖從步驟1102開始,并直接流向步驟1104。在步驟1104中,DRC340等待傳輸數據包的PE的狀態的變化。狀態的變化可以是指出新的數據已經排隊等待傳輸或PE正在結束的變化。當檢測到狀態變化時,DRC340在步驟1106中測試PE是否正在結束。如果PE正在結束,在步驟1122中也結束此PE的DRC實例。如果PE沒有正在結束,則在步驟1108中DRC340測試一個或多個數據包是否準備好進行傳輸。如果數據包不可用,則DRC返回到步驟1104,以等待下一狀態的變化。如果數據包可用于傳輸,則在步驟1110中DRC240標識數據包的下游接收者PE的列表(R)。在步驟1112中,DRC340一直等到當前時間大于數據包的第一接收者的離開時間為止。根據從下游PE的DRC340傳遞的所需要的輸入速率,設置每一個接收者PE的離開時間。在步驟1114中,DRC340將X設置為數據包的第一接收者,并在步驟1116中傳輸數據包。然后,在步驟1118中,DRC340檢查是否有其當前時間大于或等于離開時間的接收者。如果有更多接收者,則在步驟1120中DRC340將X設置為此下一接收者,并返回到步驟1116。如果沒有其當前時間大于離開時間的其他接收者,則DRC340返回到步驟1104,以等待另一個狀態變化。可以看出,圖10和11中所描述的過程設置每一個處理單元的CPU分配,以便每一個處理單元能夠以盡可能接近最快的每一個下游處理單元的輸入速率的平均速率輸出數據包。CPU分配可以小于所需,以匹配由于資源限制產生的下游處理單元的輸出速率。此外,可以聯合地使用流-控制元件,以確保當處理或帶寬爆發時不會浪費CPU周期。如此,瞬時地,本發明允許系統中的每一個處理單元都以其每一個下游處理單元的持續的速率的最大值和其CPU分配操作。為進行動態穩定的CPU控制的示范性過程圖12顯示了CPU控制的示范性過程,當與圖11中所描述的數據流控制過程一起使用時允許實現流處理系統200的動態穩定。圖12的操作流程圖從步驟1202開始,并直接流向步驟1204。在步驟1204中,DRC340從元調度器328接收CPU目標值。在步驟1206中,計算在前一階段由每一個處理單元使用的CPU。對于初始階段,此值被視為具有來自元調度器328的目標值。在步驟1208中,對于每一個處理單元,更新令牌存儲桶。在步驟1210中,DRC340以{cj}的比率分配1-ρCPU周期。在步驟1212中,DRC340均勻地在其i/p緩沖器大于B0的處理單元之間分配ρCPU周期。在步驟1214中,分配目標被傳輸到CPU調度器334,336。在步驟1216中,DRC340測試是否已經請求關閉節點,如果是,則進入步驟1222。如果沒有請求關閉,則DRC在步驟1218中等待預先定義的時間間隔,并在步驟1204中繼續。本發明的一個優點是,提供了用于進行自適應、分布式資源控制的雙層方法。當部署新的處理單元時,此第一層進程選擇處理單元和對于每一個處理單元的處理節點資源的部分分配。基于期望的、時間平均的輸入流速率,通過處理圖的加權的吞吐量的全局優化來確定分配,與基于系統的利用率或總吞吐量相反。一旦進行了初始布局確定,就可以以分布式的正在進行的方式進行第二層確定。在此第二層,CPU調度器共同地優化處理單元的輸入和輸出速率以及處理單元的瞬時處理速率。根據需要,隨著時間逐漸地調整這些速率以使輸入緩沖保持在目標級附近,并可以快速穩定系統。CPU調度器334,336采用自適應的、可縮放的、分布式優化技術。具體來說,只使用每一個處理單元的緩沖器占用率和來自其下游處理單元和位于一起的處理單元的反饋,執行每一個處理單元的CPU和流控制。本發明的另一個優點是,在向處理單元分配資源時,調度系統346考慮了輸入數據流速率和輸入數據流的無先驗的重要性。通過讓CPU調度器使用本地派生的信息來實施分配,確保了可縮放性。另一個優點是,本發明通過下列方式提供最優化和穩定性,即首先找出不考慮數據流的隨機的,隨時間變化的特性的全局解決方案,來在處理單元之間確定額定CPU分配。在運行過程中,基于對每一個處理單元可用的本地信息,改變這些額定分配,以確保穩定性。非限制性的示例本發明可以以硬件、軟件或硬件和軟件的組合實現。根據本發明的優選實施例的系統可以以集中方式在一個計算機系統中實現,或者以不同的元件跨多個互連的計算機系統的分布式方式來實現。任何類型的計算機系統-或適于執行這里描述的方法的其他設備都適合。典型的硬件和軟件的組合可以是具有這樣的計算機程序的通用計算機系統,當加載并執行該計算機程序時,控制計算機系統以便它執行這里描述的方法。一般而言,被執行以實現本發明的實施例的例程,無論是作為操作系統的一部分或特定的應用程序、組件、程序、模塊、對象,或指令序列實現的,這里都可以稱為“程序”。計算機程序通常包括將被本地計算機轉換為機器可讀的格式并因此轉換為可執行的指令的多個指令。此外,程序還包括駐留在程序本地或被發現在存儲器或者存儲設備中的變量和數據結構。此外,可以基于在本發明的特定實施例中實現的應用程序標識這里所描述的各種程序。然而,應該理解,隨后的任何特定程序術語都只是為了方便,如此,本發明不應該只限于在這樣的術語所標識和/或暗示的任何特定的應用程序中使用。雖然說明了本發明的具體實施例,但是,本領域技術人員將理解,在不偏離本發明的精神或范圍的情況下,可以對具體實施例作出更改。因此,本發明的范圍不被限制于具體實施例,所附的權利要求應該涵蓋本發明的范圍內的所有這樣的應用、修改和實施例。權利要求1.一種處理節點上的用于動態地穩定流處理系統的方法,所述方法包括接收至少一個計算資源分配目標;確定至少一個上游處理單元的輸入數據流速率改變;響應所述上游處理單元的輸入速率改變,動態地分配所述計算資源給所述上游處理單元;以及在所述上游處理單元和至少一個下游處理單元之間動態地控制數據流。2.根據權利要求1所述的方法,其中,所述動態地控制數據流的步驟是基于下列各項中的至少一個進行的所述上游處理單元的數據處理速率;所述上游處理單元的輸入緩沖區占用率;以及所述下游處理單元的最大輸入速率。3.根據權利要求1所述的方法,其中,所述下游處理單元向所述上游處理單元傳輸其最大輸入速率。4.根據權利要求1所述的方法,其中,所述動態地控制數據流的步驟動態地調整所述上游處理單元的輸入數據流速率,從而防止所述上游處理單元的輸出速率超過所述下游處理單元的最大輸入速率。5.根據權利要求1所述的方法,其中,所述計算資源的動態分配是基于下列各項中的至少一個進行的所述上游處理單元的輸入緩沖區占用率;所述上游處理單元的至少一個長期平均CPU目標;以及所述至少一個下游處理單元的最大輸入速率。6.根據權利要求5所述的方法,其中,所述動態地分配所述計算資源的步驟包括與所述上游處理單元的長期CPU目標成比例地向所述上游處理單元分配至少一個令牌,其中,所述上游處理單元為所述計算資源消耗令牌,從而允許所述上游處理單元根據所述下游處理單元的最大輸入速率對至少一個數據包進行處理。7.根據權利要求6所述的方法,其中,如果下列各項中的至少一個成立,則給所述上游處理單元分配第一計算資源集合所述上游處理單元的輸入緩沖區占用率大于零且低于預先定義的閾值;以及所述上游處理單元具有可用的令牌以在所述第一計算資源集合上消耗。8.根據權利要求5所述的方法,其中,如果下列情況成立,則給所述上游處理單元分配第二計算資源集合所述上游處理單元的輸入緩沖區占用率大于預先定義的閾值,并且所述上游處理單元具有可用令牌在所述第二計算資源集合上消耗。9.一種分布式流處理系統中的上游處理節點,所述處理節點包括至少一個上游處理單元;以通信方式耦接到所述上游處理單元的處理單元監視器,用于確定所述上游處理單元的輸入數據流速率改變;調度器,包括以通信方式耦接到所述上游處理單元的元調度器,用于確定計算資源分配目標;以及以通信方式耦接到所述上游處理單元和所述元調度器的CPU調度器,用于響應所述所述上游處理單元的輸入速率改變,動態地向所述上游處理單元分配至少一個計算資源,其中,所述CPU調度器動態地控制所述上游處理單元和至少一個下游處理單元之間的數據流。10.根據權利要求9所述的上游處理節點,其中,所述CPU調度器基于下列各項中的至少一個動態地分配所述計算資源所述上游處理單元的輸入緩沖區占用率;所述上游處理單元的至少一個長期平均CPU目標;以及所述至少一個下游處理單元的最大輸入速率。11.根據權利要求10所述的上游處理節點,其中,所述CPU調度器與所述上游處理單元的長期CPU目標成比例地向所述上游處理單元分配至少一個令牌,其中,所述上游處理單元為所述計算資源消耗令牌,從而允許所述上游處理單元根據所述下游處理單元的最大輸入速率對至少一個數據包進行處理。12.根據權利要求9所述的上游處理節點,其中,所述CPU調度器基于下列各項中的至少一個動態地控制所述數據流所述上游處理單元的數據處理速率;所述上游處理單元的輸入緩沖區占用率;以及所述下游處理單元的最大輸入速率。13.根據權利要求9所述的上游處理節點,其中,所述CPU調度器動態地調整所述上游處理單元的輸入數據流速率,從而防止所述上游處理單元的輸出速率超過所述下游處理單元的最大輸入速率。全文摘要說明了用于動態地穩定流處理系統的方法、上游處理節點以及計算機可讀介質。該方法包括接收至少一個計算資源分配目標。進一步包括確定至少一個上游處理單元的輸入數據流速率改變。響應所述上游處理單元的輸入速率改變,動態地分配計算資源給上游處理單元。在所述上游處理單元和至少一個下游處理單元之間動態地控制數據流。文檔編號H04L29/08GK101089819SQ200710089349公開日2007年12月19日申請日期2007年3月23日優先權日2006年6月13日發明者安舒爾·塞赫加爾,麗薩·阿米尼,杰雷米·I.·西爾伯,奧利維爾·沃斯徹申請人:國際商業機器公司