用于动态稳定流处理系统的方法和上游处理节点的制作方法

文档序号:7650728阅读:144来源:国知局

专利名称::用于动态稳定流处理系统的方法和上游处理节点的制作方法
技术领域
:一般而言,本发明涉及分布式流处理系统的领域,具体来说,涉及分布式流处理系统的调度技术。
背景技术
:流处理范例在时间关键的系统中总是扮演着关键的角色。传统的示例包括数字信号处理系统、大规模的模拟平台、多媒体客户端和服务器,以及高清晰度呈现场,如下列各项所描述的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.·西尔伯,奥利维尔·沃斯彻申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1