用以降低事件驱动系统中的功率和/或冷却成本的分散式负荷分配的制作方法

文档序号:6350169阅读:174来源:国知局
专利名称:用以降低事件驱动系统中的功率和/或冷却成本的分散式负荷分配的制作方法
技术领域
本发明总体地涉及借助多个软件实现的任务,利用多个节点的数据流处理,更具体地说,涉及通过把任务集中到满足负荷分配质量方面的预定标准(比如预期的端到端吞吐时间)的称为目标节点的可能节点的子集,从而作为一种经济措施,允许无任务的其它节点处于静态,目的在于降低能量消耗的负荷分配。
背景技术
随着因特网连接和网络连接的传感器设备的激增,可从大量的在线来源获得的数字信息的速率不断增大。这些在线来源以数据流的形式连续地生成数据(例如,新闻项目, 金融数据,传感器读数,因特网交易记录等)并把该数据提供给网络。通常在网络中实现数据流处理单元,以接收或监视这些数据流并处理它们,从而产生可用格式的结果。例如,可以实现数据流处理单元,以进行其中挑选并随后集合或评估来自两个以上数据流(即,来自两个以上的新闻来源)的相关数据项的结合操作,以产生结果的列表,或者相互确证。不过,典型数据流的输入速率提出了挑战。由于数据流处理单元不能控制有时偶发的且不可预测的数据流输入的速率,因此数据流处理单元的负荷变得越过其容量的情况并不少见,尤其是在速率峰值期间。典型的数据流处理单元通过任意地丢弃数据流(例如, 拒绝接收数据流)来处理这种负荷问题。虽然这降低了负荷,不过,这种策略的随意性往往会导致不可预知的且次最佳的数据处理结果,因为在保持和处理包含无关数据的数据流的时候,可能会不知不觉地丢弃包含有用数据的数据流。大多数已知的事件驱动系统中的负荷分配解决方案假定事件处理组件是没有状态的。极少的解决方案把有状态的算子(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·拉宾奥维奇 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1