首页> 中国专利> 用以降低事件驱动系统中的功率和/或冷却成本的分散式负荷分配

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

摘要

一种计算机实现方法、计算机程序产品和计算机可读存储介质涉及事件驱动系统中的分散式负荷安置,以使与能量和冷却相关的成本最小化。包括接收将由在事件驱动系统中的多个节点处的多个任务处理的数据流,所述事件驱动系统具有有状态的事件处理组件和无状态的事件处理组件,其中所述多个任务选自由分层任务(取决于另一个任务的输出的任务)、非分层任务(不取决于另一个任务的输出的任务)和它们的混合物构成的组中。考虑使在满足负荷分配和能量效率参数的同时其当前任务能够迁移到其它节点的节点停顿,预期的停顿持续时间提供与停顿及稍后重启的成本相当的益处。另外,考虑把任务迁移到相邻节点,以分配处理任务的系统负荷并降低冷却成本。

著录项

  • 公开/公告号CN102473161A

    专利类型发明专利

  • 公开/公告日2012-05-23

    原文格式PDF

  • 申请/专利权人 国际商业机器公司;

    申请/专利号CN201080036432.8

  • 申请日2010-05-04

  • 分类号G06F15/16(20060101);

  • 代理机构中国国际贸易促进委员会专利商标事务所;

  • 代理人陈芳

  • 地址 美国纽约州

  • 入库时间 2023-12-18 05:25:47

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-05-09

    未缴年费专利权终止 IPC(主分类):G06F15/16 专利号:ZL2010800364328 申请日:20100504 授权公告日:20140716

    专利权的终止

  • 2014-07-16

    授权

    授权

  • 2012-07-04

    实质审查的生效 IPC(主分类):G06F15/16 申请日:20100504

    实质审查的生效

  • 2012-05-23

    公开

    公开

说明书

技术领域

本发明总体地涉及借助多个软件实现的任务,利用多个节点的数据 流处理,更具体地说,涉及通过把任务集中到满足负荷分配质量方面的 预定标准(比如预期的端到端吞吐时间)的称为目标节点的可能节点的子 集,从而作为一种经济措施,允许无任务的其它节点处于静态,目的在 于降低能量消耗的负荷分配。

背景技术

随着因特网连接和网络连接的传感器设备的激增,可从大量的在线 来源获得的数字信息的速率不断增大。这些在线来源以数据流的形式连 续地生成数据(例如,新闻项目,金融数据,传感器读数,因特网交易记 录等)并把该数据提供给网络。通常在网络中实现数据流处理单元,以接 收或监视这些数据流并处理它们,从而产生可用格式的结果。例如,可 以实现数据流处理单元,以进行其中挑选并随后集合或评估来自两个以 上数据流(即,来自两个以上的新闻来源)的相关数据项的结合操作,以产 生结果的列表,或者相互确证。

不过,典型数据流的输入速率提出了挑战。由于数据流处理单元不 能控制有时偶发的且不可预测的数据流输入的速率,因此数据流处理单 元的负荷变得越过其容量的情况并不少见,尤其是在速率峰值期间。典 型的数据流处理单元通过任意地丢弃数据流(例如,拒绝接收数据流)来处 理这种负荷问题。虽然这降低了负荷,不过,这种策略的随意性往往会 导致不可预知的且次最佳的数据处理结果,因为在保持和处理包含无关 数据的数据流的时候,可能会不知不觉地丢弃包含有用数据的数据流。

大多数已知的事件驱动系统中的负荷分配解决方案假定事件处理组 件是没有状态的。极少的解决方案把有状态的算子(operator)作为目标, 因为为负荷分配的目的而迁移有状态的算子是困难的且昂贵的。为了迁 移有状态的算子,必须停止所有数据流处理,必须迁移所有必要的状态, 并且应相应地更新所有事件路由路径。此外,这些解决方案的大部分都 是集中式的。

发明内容

考虑到机器群集能够分配工作负荷,本发明人提出的不同策略是试 图利用多个节点处理工作负荷。如果在数据流容量降低的时段期间使用 这样的策略,那么把任务移回较少的节点并使一些节点完全处于静态的 策略能够降低功率成本和冷却成本。

按照本发明的第一方面,通过提供一种事件驱动系统中的分散式负 荷分配方法,实现如上文和后文所述的本发明的各种优点和目的,所述 方法包括下述步骤:接收将由在事件驱动系统中的多个节点处的多个任 务处理的数据流,所述事件驱动系统具有有状态的事件处理组件和无状 态的事件处理组件,其中所述多个任务选自由分层任务、非分层任务和 它们的混合物构成的组中,其中分层任务是取决于另一个任务的输出的 任务,其中非分层任务是不取决于另一个任务的输出的任务;收集与容 宿(host)于每个节点处的每个任务和所述节点的特性相关的统计信息, 所述节点的特性包括其热特性;利用收集的统计信息,创建任务能够部 分地或全部地转移到的相邻节点的列表;选择在节点处的考虑迁移到相 邻节点列表中的称为目标节点的相邻节点的具有第一温度的称为目标任 务的至少一个任务,以分配处理所述至少一个任务的系统负荷并降低冷 却成本;选择至少一个目标任务能够被迁移到的目标节点,其中目标节 点具有第二温度;在迁移会降低第一温度并且第二温度低于预定的可接 受的热阈值的条件下,把目标任务迁移到目标节点;和在每个节点处建 立负荷交换协议以便管理目标任务的迁移的数目,其中分散式负荷迁移 导致事件驱动系统中的总系统负荷分配,并降低冷却成本。

按照本发明的第二方面,提供一种计算机程序产品,其包括计算机 可读存储介质,所述计算机可读存储介质具有用于事件驱动系统中的分 散式负荷分配的计算机可读程序代码,该计算机可读程序代码包括:被 配置为用于接收将由在事件驱动系统中的多个节点处的多个任务处理的 数据流的计算机可读程序代码,所述事件驱动系统具有有状态的事件处 理组件和无状态的事件处理组件,其中所述多个任务选自由分层任务、 非分层任务和它们的混合物构成的组中,其中分层任务是取决于另一个 任务的输出的任务,其中非分层任务是不取决于另一个任务的输出的任 务;被配置为用于收集与容宿于每个节点处的每个任务和所述节点的特 性相关的统计信息的计算机可读程序代码,所述节点的特性包括其热特 性;被配置为用于利用收集的统计信息来创建任务能够部分地或全部地 转移到的相邻节点的列表的计算机可读程序代码;被配置为用于选择在 节点处的考虑迁移到相邻节点列表中的称为目标节点的相邻节点的具有 第一温度的称为目标任务的至少一个任务,以分配处理所述至少一个任 务的系统负荷并降低冷却成本的计算机可读程序代码;被配置为用于选 择至少一个目标任务能够被迁移到的目标节点的计算机可读程序代码, 其中目标节点具有第二温度;被配置为用于在迁移会降低第一温度并且 第二温度低于预定的可接受的热阈值的条件下把目标任务迁移到目标节 点的计算机可读程序代码;和被配置为用于在每个节点处建立负荷交换 协议以便管理目标任务的迁移的数目的计算机可读程序代码,其中分散 式负荷迁移导致事件驱动系统中的总系统负荷分配,并降低冷却成本。

按照本发明的第三方面,提供一种事件驱动系统中的分散式负荷分 配方法,所述方法包括下述步骤:接收将由在事件驱动系统中的多个节 点处的多个任务处理的数据流,所述事件驱动系统具有有状态的事件处 理组件和无状态的事件处理组件,其中所述多个任务选自由分层任务、 非分层任务和它们的混合物构成的组中,其中分层任务是取决于另一个 任务的输出的任务,其中非分层任务是不取决于另一个任务的输出的任 务;收集与容宿于每个节点处的每个任务相关的统计信息;利用收集的 统计信息,创建任务能够部分地或全部地转移到的相邻节点的列表;选 择称为施主节点的至少一个节点以转变成静态模式;选择在施主节点处 的考虑迁移到相邻节点列表中的称为目标节点的相邻节点的称为目标任 务的任务;选择目标任务能够被迁移到的目标节点,其中该目标节点满 足负荷分配质量方面的预定标准;在每个节点处建立负荷交换协议以便 管理目标任务的迁移的数目,其中分散式负荷迁移导致事件驱动系统中 的总系统负荷分配;和把目标任务从施主节点迁移到目标节点,并使施 主节点转变成静态模式。

按照本发明的第四方面,提供一种计算机程序产品,其包括:计算 机可读存储介质,所述计算机可读存储介质具有用于事件驱动系统中的 分散式负荷分配的计算机可读程序代码,该计算机可读程序代码包括: 被配置为用于接收将由在事件驱动系统中的多个节点处的多个任务处理 的数据流的计算机可读程序代码,所述事件驱动系统具有有状态的事件 处理组件和无状态的事件处理组件,其中所述多个任务选自由分层任务、 非分层任务和它们的混合物构成的组中,其中分层任务是取决于另一个 任务的输出的任务,其中非分层任务是不取决于另一个任务的输出的任 务;被配置为用于收集与容宿于每个节点处的每个任务相关的统计信息 的计算机可读程序代码;被配置为用于利用收集的统计信息来创建任务 能够部分地或全部地转移到的相邻节点的列表的计算机可读程序代码; 被配置为选择称为施主节点的至少一个节点以转变成静态模式的计算机 可读程序代码;被配置为用于选择在施主节点处的考虑迁移到相邻节点 列表中的称为目标节点的相邻节点的称为目标任务的任务的计算机可读 程序代码;被配置为用于选择目标任务能够被迁移到的目标节点的计算 机可读程序代码,其中目标节点满足负荷分配质量方面的预定标准;被 配置为用于在每个节点处建立负荷交换协议以便管理目标任务的迁移的 数目的计算机可读程序代码,其中分散式负荷迁移导致事件驱动系统中 的总系统负荷分配;和被配置为用于把目标任务从施主节点迁移到目标 节点并使施主节点转变成静态模式的计算机可读程序代码。

附图说明

在所附权利要求中具体地陈述了本发明的被视为新颖的特征和本发 明特有的要素。附图只是用于举例说明,并且未按比例绘制。不过,通 过参考结合附图进行的下述详细说明,就组织和操作方法而论,可更好 地理解发明本身,附图中:

图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,比如硬盘驱动器,软盘驱动器,CD-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)保持应用的一些 服务质量要求,比如使端到端等待时间最小化,和(4)降低功率/冷却成本。

一些确定的背景有助于理解本发明。“节点”指的是单独的机器, 或者多处理器机器上的单个处理器,或者进行某种处理的物理实体(不论 它是在计算数字,还是产生功率并且附接有计算机的引擎)。节点可以在 数据中心中,或者在地理上是分布的。在本发明中,节点或者容宿一个 或多个任务,或者不容宿任何任务。任务的处理在本质上可以是分层的, 以致一个任务的输出充当另一个任务的输入。另外,节点可能在某一时 间正在进行不是数据流的一部分的任务,但是稍后进行作为数据流的一 部分的任务。分层结构中的第一任务对通过某一输入源接收的数据进行 处理。任务的很多处理在本质上是分层的,不过不是必然这样,因为给 定应用的一些任务在本质上可以不是分层的。节点接收的数据被称为输 入事件,而作为处理结果的节点产生的数据被称为导出事件。仅举几个 例子,可能需要分层处理的数据的例子包括金融市场中的股票交易、 RFID标签阅读器推断的事件、从无线传感器传送的温度读数、通过监视 通信通道上的软件而检测的入侵者检测事件、自动咖啡机的供应状态。

更详细地参见附图,图2表示其中适用本发明的容宿任务的机器的 网络的例子。数据生产者代表数据源。数据的例子包括股票报价、咖啡 机故障报警。数据消费者代表关注对数据进行的处理的结果的实体。消 费者的例子包括修理咖啡机的公司、或者关注在特定日子增长百分点最 高的前10名股票的个人。

任务流被定义为任务的处理序列。任务的处理可以是分层的,其中 来自一个任务的处理的数据结果充当任务流中的下一个任务的输入数 据。任务不必在数据通过它们传给另一个任务之前完成。此外,一些任 务可以不是分层的,并且不需要来自另一个任务的数据。一些任务有时 可能需要来自其它任务的数据,而在其它时候则不需要来自其它任务的 数据。在图2中,任务F1,J1和J2在公共任务流中。类似地,任务F3 和J2是另一个任务流的一部分。

相对于特定节点n,上游节点被定义为容宿作为在节点n上容宿的 任务的父代的任务的节点。特别地,在数据流中,父代任务在子代任务 之前。父代任务直接地或者通过中间物产生成为在节点n上的任务的输 入的一部分的输出。例如,在图2中,容宿任务F1的节点M4相对于容 宿任务J2的节点M5是上游节点。相对于特定节点n,下游节点被定义 为容宿由节点n容宿的任务的子代的节点。例如,在图2中,容宿任务 J2的节点M5相对于容宿任务J1的节点M4是下游节点。

任务流中的第一个任务的功能是从生产者接收数据,所述生产者是 一组消息来源。消费者对关于数据的任务的最终处理结果感兴趣。图2 表示任务流中的生产者(P1-P5)和消费者(C1-C4)的例子。任务可保持在执 行某一事件之后的状态,或者它们可不保持任何状态。保持状态的任务 被称为有状态任务。对于新的输入事件,不保持状态的那些任务会在大 约相同长度的时间中输出相同的导出事件,而不管先前的输入事件是什 么,或者先前的输入事件有多少,或者先前的输入事件随着时间的过去 是如何到达的,或者这些任务先前的输出事件是什么。无状态任务与它 们之前收到什么数据或者它们之前产生什么数据无关地工作。有状态任 务的例子包括:

用于合并金融数据流的联接算子(join operator)

用于监视地震数据的聚合算子(aggregation operator)

用于军事监视的信号处理算子

检测在事件e1之后立即发生的事件e2的序列算子

计数一天中个人进行的先买后卖操作的数目的计数算子

不保持状态的任务被称为无状态任务。无状态任务的例子包括:

在测量系统之间转换的任务-把距离从英尺转换成米或者把温度从 华氏度转换成摄氏度;

用其它形式的标识符号替换标识符号的任务-把股票交易代码转换 成其股票被涉及的公司的法定全名;

向消息中添加只是所述消息中的其它字段的函数或者是常数的字段 的任务-例如,取决于州或省缩写是美国50个州的2字母代码之一还是 省缩写之一,添加美国或加拿大的国家字段;

用常数调整消息字段的任务-用图书馆还书日期代替图书馆借书日 期(所述还书日期总是在借书日期之后三周)。

任务通常被称为算子。应明白“任务”和“算子”是可互换的术语, 在本文中到处使用这两个术语。

现在参见图3,图中图解说明了负荷分配问题。负荷可被迁移到未进 行任何处理的节点,比如图3中的节点M12和M13,或者负荷可被迁移 到已处理其它任务的节点,比如正在处理任务F3和J2的节点M5。图3 还指示动态负荷分配问题的特性,即:

在运行时间期间,节点可能停机,或者可能向网络中增加新的节点;

数据速率可以任意变化;

任务可以终止并从任务集中除去,或者可在任何时候增加新任务;

在运行时间期间,任务可被拆分成两个以上的部分。

当考虑是否迁移负荷时,所述计算机实现的方法把一个单一任务、 一组任务或者拆分的任务视为负荷。

所述计算机实现的方法考虑任务是否保持状态,所述状态可采取保 存在磁盘上或者保存在容宿任务的节点的主存储器中的数据的形式。当 决定迁移有状态任务时,所述计算机实现的方法考虑容宿待迁移的有状 态任务(目标任务)的施主节点和接收有状态任务的接受节点(目标节点)之 间的数据传送链路的速度。

所述计算机实现的方法还在迁移任务之前,考虑各个任务之间的数 据流,以防止循环和满足应用的服务质量要求,比如使应用的端到端响 应时间最小化。

所述计算机实现的方法还在迁移任务之前,考虑各个任务预期的工 作负荷,以便当节点的工作负荷按特定模式达到峰值时防止节点过热。 预期的工作负荷信息可通过节点记录和计算的统计信息获得。节点可进 行一些统计分析,从而节点能够计算数据到达的平均值和方差,并利用 曲线拟合来建议输入到达事件的分配。根据所述分析,节点能够确定其 输入数据的到达速率的模式,并确定它能够进入静态模式的时段的持续 时间。

在决策分配哪个负荷的同时,所述计算机实现的方法还考虑不同任 务的负荷相关性之间的关系,其被称为负荷相关系数。负荷相关系数确 保所述计算机实现的方法从节点转移其负荷与该节点容宿的其它任务同 时达到峰值的目标任务,并把目标任务转移到容宿其负荷不会与目标任 务的负荷同时达到峰值的任务的节点。

在迁移目标任务之前,所述计算机实现的方法通过在给定一些假设 的条件下估计施主节点和目标节点的迁移后利用率,考虑对施主节点和 目标节点来说,目标任务的迁移是否是良好的决定。除了利用率之外, 本发明实施例中的所述计算机实现的方法还可以估计施主节点和接受节 点的迁移后入口温度,从而通过提倡会降低施主节点的温度而不会把接 受节点的温度增大到高于可接受的阈值的负荷迁移,降低冷却成本。

除了迁移单个目标任务之外,所述计算机实现的方法还考虑能够拆 分目标任务的多种可能方式,从而考虑迁移目标任务的一个或多个部分。

由于所述计算机实现的方法是分散式方法,因此为负荷分配定义一 种所有节点都必须遵循的协议,以便确保局部负荷迁移决定不会相互冲 突。

在考虑迁移之前,本发明实施例中的所述计算机实现的方法还考虑 网络中的某些节点是否应转变成静态模式以节省能量。在节点对输入数 据进行处理的同时,以及在做出负荷分配决策之前或之后,可在运行时 间期间的任何时候动态地做出何时转变成静态模式的决策。负荷迁移决 策和停顿决策不应同时发生,因为它们会提供冲突的结果。于是,可在 一个决策(停顿或负荷迁移)完成之前或之后,考虑另一个决策(负荷迁移 或停顿)。不过,一旦做出使节点停顿的决策,就不向在该节点上运行的 任何任务发送任何另外的输入,以致一旦这些任务产生其输出,所述停 顿不会“离线”获得事件流的任何部分。任务将运行的新节点接收该任 务的所有另外的输入。对无状态任务来说,新任务可在旧任务完成其输 入之前开始处理下一个输入,不过对有状态任务来说,在已完全传送来 自旧节点的任务状态之前,新任务一定不要开始处理下一个输入事件。 这种传送是负荷交换协议(后面说明)的一部分。

在转变到静态模式的处理期间,一些任务可在完成中途被迁移。这 意味在所述任务被移动的时候,它们已产生一些输出,不过未来在它们 的新位置处它们会产生更多的输出。

所述计算机实现的方法是动态的,这意味在节点正在对输入数据进 行处理的时候,在运行时间期间的任何时候可动态地做出关于何时转变 成静态模式的决策。节点的转变成静态模式的决策需要关于下述内容的 一组预先决策:

处于静态模式多长时间;

处于静态状态的时段内的预期工作负荷;

在静态模式时段期间,是暂停任务和稍后处理所述任务,还是把任 务迁移到能够更高效地处理它们的更高效节点;和

哪些其它相邻节点能够转变成静态模式。

这些初始考虑之后是对转变成静态模式的益处和成本的详细分析。 这种转变的成本包括:

与转变相关的总功率成本,包括(1)节点的转变成静态模式的功率成 本,(2)从静态模式变回运行模式的功率成本,和(3)从该节点接收迁移的 任务,并且作为接收这些任务的结果,会从静态模式转变成运行模式的 任何其它节点的功率成本。

停止任务处理并且(如果合适的话)在新的目标机器上恢复所述任 务处理的时间;

把与待迁移的任务相关的任何状态迁移到目标机器的成本;和

移回状态并在处理任务的初始主机上恢复处理的时间。

转变成静态模式的益处包括:

转变成静态模式的预计能量节约效果和在静态模式下所花费的时间 量;和

由于使节点进入静态模式和把任务迁移到适当的接受节点而产生的 应用的服务质量的改进。

如果转变成静态模式的益好超过成本,那么节点可开始所述转变。 计算机实现的关于转变成静态模式的方法可被实现成分散式方法。另一 方面,了解整个网络中的资源可用性的中央控制器可按照集中方式,控 制静态模式转变处理。

现在详细讨论按照本发明的计算机实现的方法。所述处理是分散式 的,因为每个节点执行待讨论的各个处理步骤。图4中表示了图解说明 按照本发明的计算机实现的方法的流程图。

步骤1:接收输入数据。计算机实现的方法的第一步骤(框30)包括接 收将由在事件驱动系统中的多个节点处的多个任务处理的数据流,所述 事件驱动系统具有有状态的事件处理组件和无状态的事件处理组件。所 述多个任务可以是分层任务、非分层任务或者它们的组合。

步骤2:节点收集统计信息。在计算机实现的方法的下一个步骤中, 每个节点定期收集与它容宿的每个事件处理组件(也称为任务或算子)相 关的一些统计信息(框32)。这些统计信息包括:

每个任务的负荷:这可被定义为每个任务的CPU利用率,或者称为 每个任务评估的规则的数目,或者在系统的情形中用户提供的无论哪种 定义。

任务占据的存储器:假定与任务相关的所有状态都存在于存储器中 (而不是在盘上)。如果任务被迁移,那么该存储器也需要被转移。

连接容宿目标任务的节点和另一个节点的链路的网络使用:网络使 用(u(l))是在给定时刻通过链路l运送的数据量。

u(l)=(ΣfFlDRf(l))Lat(l)

其中F是链路l上的一组事件流,DRf(l)是链路l上的流f的数据速率, Lat(l)是链路l的等待时间。该度量使得人们对链路l的繁忙程度有所了 解,并且是估计把与任务相关的状态从一个节点迁移到另一个节点需要 多长时间所必需的。

在本发明的一个实施例中,统计信息包括容宿任务的节点的热特性。

在本发明的一个实施例中,统计信息包括数据流向任务的速率和输 入数据速率中的以时间或者节点容宿的任务的类型为基础的任何复发模 式。

在执行任务的时候,在后台进行关于每个任务的统计信息的收集。

节点将保持数值统计信息的时间序列,并定期计算其平均值、方差 和标准偏差。在每个 HISTORY_NUMBER_OF_INTERVALS_TRACKED之后,节点将删除 每个时间序列的最旧的HISTORY_INTERVAL_COUNT_CLEANUP_ SIZE条目,从而为新条目留出空间。

步骤3:创建负荷交换邻居列表。所述处理的下一个步骤是创建任务 能够被部分地或全部地转移到的相邻节点的列表(框34)。在来自其邻居 的周期性统计信息交换之后,每个节点保持负荷均衡伙伴的列表。节点 对所述列表分类,并按照总的可用负荷和存储器的降序,对相邻节点排 序。

在本发明的其中考虑冷却成本的一个实施例中,通过除去与当前节 点具有很高的互扰热系数的伙伴,提炼(refine)相邻节点的列表。即, 每个节点可以访问大小为n×n的互扰矩阵,其中n是数据中心中的节点 的总数。所述矩形中的条目a_ij代表节点i对节点j贡献的热量。节点参 考所述矩阵,并通过除去它与之具有很高的互扰热系数的节点来提炼其 最近邻居的列表。当节点希望发起负荷迁移时,该节点仅仅参考所述相 邻节点的列表,以选择潜在的负荷交换伙伴节点。考虑负荷迁移的决策 可被实现成在每个节点内定期地复发的插曲事件,或者它可因违反某一 阈值(比如,需要的最小能量节约,或者最大冷却成本,或者最大节点 利用率,或者最小节点利用率)而被触发。用户可以为每个节点,单独 配置在本发明的计算机实现的方法中,导致考虑进行步骤4的精确触发。 另一方面,如果网络很大(例如,数千个节点),那么用户可以初始化用于 节点的子集的负荷迁移触发设置,并依赖于初始化节点的自动的分散式 信息传播算法(比如基本扩散或置信传播),以把它们的初始化值传播 给其阈值适当的其它节点。扩散是一种其中信息的净传送由网络中的一 组节点产生的技术,在所述网络中,扩散高度集中于具有很少信息或没 有信息的一组节点。扩散的结果是信息的逐渐混合。在某些条件下,根 据节点的纯粹自我发起的局部协调,扩散处理最终会在网络中导致信息 的完全混合。在实施例中,我们把负荷迁移决策实现成在长度为 LOAD_DISTRIBUTION_INTERVAL(它是设备的参数)的时间间隔之 后发生的插曲事件。诸如此类的参数可由用户为每个节点单独配置,或 者自动配置,并通过基于扩散的协议设定(在本实施例中进一步讨论)。

步骤4:选择供迁移的任务。所述处理的下一个步骤是选择在某个节 点的至少一个任务(即,目标任务),用于考虑迁移到相邻节点(即,目标 节点),以分配处理目标任务的系统负荷(框36)。如果存在有状态任务和 无状态任务,那么优选首先迁移无状态任务,因为待分配的负荷较少。 如果只存在容宿在某个节点上的有状态任务,那么选择迁移所述有状态 任务中,内存状态的数量最少的一个任务。就有状态任务来说,状态可 以在盘上和在存储器中。通常优选迁移只具有在存储器中的状态的有状 态任务。可能发生单个任务利用多于预置STATE_MIGRATION_LIMIT 的资源作为单一任务迁移。在这种情况下,所述处理的可选步骤是把目 标任务拆分成两个目标子任务以便迁移。任务的拆分将在下面更详细地 说明。通过考虑到任务的状态量,状态的类型(在盘上或者在存储器中) 和通过其把状态从施主节点迁移到接受节点的链路的速度,本发明的计 算机实现的方法处理有状态任务和无状态任务两种任务,而不同于许多 现有的负荷迁移技术。可按照在现有著作中描述的许多方式,优化状态 的实际迁移。

步骤5:选择目标节点。所述处理的下一个步骤是选择目标任务能够 被迁移到的目标节点,其中所述目标节点满足负荷分配质量方面的预定 标准(框38)。节点从列表中消除不满足充当目标任务的新容宿的最低要 求(标准)的潜在负荷交换伙伴。

在本发明的其中降低冷却成本的实施例中,如果降低冷却成本是主 要因素的话,选择目标节点的步骤可完全取决于降低冷却成本,而不是 目标节点是否满足负荷分配质量方面的预定标准。此外,在一个优选实 施例中,除了满足负荷分配质量方面的预定标准的目标节点之外,选择 目标节点的该步骤还可考虑降低冷却成本。

预定标准包括:目标节点的物理连接,目标节点的可用负荷和存储 器,使物理链路的数目最小化,消除循环,目标节点负荷相关性,以及 施主节点和目标节点的迁移后利用率。为了选择目标节点,这些标准中 的至少一些标准应被满足。在一个优选实施例中,为了选择目标节点, 所有这些标准应被满足。下面将详细讨论这些标准中的每个标准。

如图5中所示,图解说明关于目标节点的物理连接的标准。目标节 点Mt必须物理连接到容宿在节点Mi上容宿的目标任务i的父代任务p 的节点Mp,和容宿所述目标任务i的子代任务c的的节点Mc。目标节 点Mt还必须连接到目前容宿目标任务i的节点Mi。参考图3,这种特定 的标准变得更清楚。例如,希望把目前由节点M4容宿的任务J1迁移到 另一个节点。在这种情况下,任务J1是目标任务。节点M2或M3可以 是父节点,M4是施主节点(Mi),节点M7是容宿子代任务的节点Mc。 就这种情形来说,目标任务J1可被迁移到M5或M13,M5和M13都(直 接或间接地)连接到父节点、子节点和施主节点。

下一个标准是目标节点的可用负荷和存储器。目标节点必须具有足 以容宿目标任务的可用负荷和存储器。上面讨论的统计信息的收集用于 评估可用负荷和存储器。此外,如果目标任务是有状态任务,并且具有 内存状态,那么目标节点和目前容宿目标任务的施主节点之间的物理机 器链路不得具有很高的网络使用。所述链路越被大量地使用,那么把状 态从施主节点转移到目标节点所用的时间越长。

希望使连接目标节点和容宿目标任务的父代任务和子代任务的节点 的物理连接的数目最小化。物理链路增大端到端等待时间。应用的服务 质量要求可以包括低的端到端等待时间。于是,对于满足应用的服务质 量要求来说,重要的是使物理连接的数目最小化。关于目标节点保持的 与待迁移的目标任务的物理连接的数目,应对目标节点的列表进行分类。 图6A图解说明任务流的一个例子。图6B表示增大任务流中的物理链路 的数目并因而不希望的负荷迁移的例子。图6C表示减少任务流中的物理 链路的数目并因而希望的负荷迁移的例子。图6D表示节点能够做出的负 荷迁移决策的局部集合,以及它们如何影响物理链路的数目。图6D中的 决策1和2改善(减少)物理链路的数目,而决策4增大物理链路的数目, 至于决策3,物理链路的数目保持不变。

下一个标准是消除循环。当从一个任务流出的消息转到其输出直接 或间接地是所述一个任务的输入的其它任务时,发生循环。如果目标节 点容宿代表目标任务的流中的前驱的任务,那么该目标节点应被消除。 图7中表示了这种情形,其中节点Mx是目标任务i的不希望的目标节点, 因为它容宿为任务i的流中的前驱的任务。

下一个标准是目标节点负荷相关性。除了考察目标节点上的平均负 荷之外,还应检查负荷稳定性。在出版的著作[Xing,ICDE′05,supra]中 已证明在把任务迁移到目标节点之前,仅仅考虑目标节点上的平均负荷 并不够。还必须检查目标节点上的负荷变化。特别地,如果节点上的任 务之间的负荷相关系数为负,那么这应是有用的。两个任务之间为负的 负荷相关系数意味当任务之一的负荷达到峰值时,另一个任务的负荷不 会达到峰值。于是,被迁移的目标任务和接受机器上的任务之间的负荷 相关系数的计算被结合到负荷迁移决策处理中。

i.ρ(a,N):任务a的负荷时间序列与N上除a之外的所有任务的负 荷时间序列的总数(总和)之间的相关系数。

ii.从施主节点N1的观点来看,有益的是移出具有较大ρ(a,N1)的任 务,而从接受节点N2的观点来看,有益的是接受具有较小ρ(a,N2)的任 务。

iii.从而优选的是移动具有ρ(a,N1)-ρ(a,N2)的较大值的任务。我们 将此称为得分。

iv.计算任务a相对于所有潜在的目标节点的相关系数,并选择具有 最大得分的节点作为目标节点。

给定具有k个元素的负荷时间序列S=(s1,s2,...,sk),那么其平均值和方 差被定义成如下:

E(S)=1kΣi=1iksi

var(S)=1kΣi=1iksi2-[1kΣi=1iksi]2

给定两个负荷时间序列,S1=(s11,s12,...,s1k)和S2=(s21,s22,...,s2k),那么其方 差cov(S1,S2)和相关系数ρ被定义为:

cov(S1,S2)=1kΣi=1iks1is2i-(1kΣi=1iks1i)(1kΣi=1iks2i)

ρ=cov(S1,S2)varS1·varS2

在一个优选实施例中,对施主节点来说,负荷相关系数ρ应为正, 指示不利的负荷相关性,从而适于迁移,对目标节点来说,负荷相关系 数ρ应为负,指示到目标节点的目标任务迁移的有利负荷相关性。

最后一个标准是施主节点和目标节点的迁移后利用率。如果假定在 关于任务的迁移决策处理的持续时间内,事件通信量将保持相同,那么 当前负荷统计信息可被用于估计施主节点和目标节点的迁移后利用率。 施主节点的迁移后利用率的降低应足够大,即,大于或等于预置的 LOAD_DECREASE_THRESHOLD,目标节点的迁移后利用率的增大应 不高于可接受的预置的阈值LOAD_INCREASE THRESHOLD,以保证 任务的迁移。

CPU利用率被视为系统负荷。在固定长度的时段内测量节点和任务 的负荷。在后台运行的统计信息收集有益于这种用途。在每个时段中, 任务的负荷被定义为所述任务所需的CPU时间与所述时段的长度之比 (fraction)。如果任务a在时段i中的平均事件到达速率为λ(a),a的 平均事件处理时间为p(a),那么在时段i中,a的负荷为λ(a)·p(a)。从 而,在迁移任务a1之后,施主机器的迁移后利用率Ud和接受机器的迁 移后利用率Ur为(其中nd和nr分别是在施主机器和接受机器上的任务的 总数):

Ud=Ud(1-λ(a1)p(a1)Σi=1indλ(ai)p(ai))Ur=Ur(1-λ(a1)p(a1)Σi=1inrλ(ai)p(ai))

如果施主节点的迁移后利用率小于预置的 LOAD_MAX_THRESHOLD,并且目标节点的迁移后利用率小于预置的 LOAD_MAX_THRESHOLD,那么应发生迁移。如果这些要求不被满足, 那么节点可任选地尝试拆分目标任务,并了解拆分的任务是否会导致良 好的迁移后利用率。拆分在下面说明(框40,图4)。如果拆分不会导致成 功,那么节点将返回计算上面说明的目标节点相关系数,并继续选择新 的目标节点和重复任务拆分(如果需要的话)。如果未找到任何潜在的目标 节点,那么在给定的时间间隔之后,计算机实现的方法会超时,重新开 始如前所述的统计信息收集。

如果目标任务很大,那么目标任务可被拆分。拆分可以是不同类型 的拆分。出于举例说明的目的,而不是对本发明的限制,下面说明三种 任务拆分方法。拆分方法由任务的类型驱动。除了下面说明的拆分方法 之外,存在其它的拆分方式。

如图8中图解所示,任务的拆分可以借助分区ID。输入流可按照分 区ID划分。如果对相同任务来说,存在多个输入流,那么横跨任务的所 有输入流,把具有相同分区ID的分区聚集成适合的最小单元。从而,我 们能够拆分输入流,并把具有分区ID的分区重定向到不同的节点。

任务的拆分可以借助上下文。取决于任务的种类,不可能如上所述 借助分区ID拆分。例如,我们可能希望借助上下文拆分。例如,假定任 务处理从1月到6月在线购物的消费者的所有事件。该任务可被拆分成 两个上下文,其中一个上下文是从1月到3月购物的消费者,另一个上 下文是从4月到6月购物的消费者。可在不同的节点上并行地评估在这 两个上下文中的相同规则。有效的是,在两个节点之间拆分输入数据流, 与特定月份相关的数据被重定向到适当的节点。

第三种选择是依据规则的任务拆分。假定任务完成几件事,比如“检 测苹果的销售,和桔子的退还”。有效的是,该任务执行两个规则,其 中一个规则是“检测苹果的销售”,第二个规则是“检测桔子的退还”。 从而,该任务可被拆分成两个规则,并且被并行处理。这种情况下,输 入数据流被完全复制,并被重定向到并行处理这两个规则的两个节点。

冷却成本节省目标

施主节点可能希望迁移负荷相当大的任务,因为迁移这样的任务可 能会导致潜在地大量节省花费在施主节点的冷却方面的能量[如图4中的 框46所示]。在另一个实施例中,我们首先选择满足使其有资格作为目标 节点的一个或多个上述标准,另外还降低冷却成本的潜在目标节点。本 发明的这个实施例可被并入选择目标节点的步骤5[图4的框38]中。本发 明的这个实施例包含计算接受节点i的出口温度(假想地假设任务被 迁移到所述节点i)。这可如下计算:在执行任务集Ci的时候,节点i以 速率Pi消耗功率:

Pi=Gi(Ci)

功率函数Gi考虑诸如作为处理任务集Ci中的任务的结果,该节点必 须每隔多久访问盘一次以便进行读取和写入之类的因素。

每个节点i的风扇按流速fi和入口温度抽吸节点i上方的冷空气, 并散逸具有平均出口温度的加热空气。按照能量守恒定律和计算设备 消耗的几乎所有功率以热量的形式散逸的事实,节点的功率消耗和入口/ 出口温度之间的关系可被近似为:

Pi=ρfiCp(Touti-Tini)

其中Cp是空气的热量,ρ是空气密度。从而,节点i的功率消耗将使空 气温度从升高到在计算了Pi的情况下,我们可如下求解

Touti=PiρfiCp+Tini

假定待迁移的任务从施主节点容宿的任务集Ci中被除去,还应利用 上面的相同计算,计算施主节点的假想迁移后出口温度。提出的负荷迁 移应为施主节点产生足够的冷却成本节省以保证所述迁移。施主节点的 假想迁移后温度的降低应大于或等于设备的称为 TEMPERATURE_DECREASE_THRESHOLD的参数,以保证所述迁 移。诸如此类的参数可由用户为每个节点单独配置,或者自动配置,并 通过基于扩散的协议设定(在本实施例中进一步讨论)。

如果估计的接受节点的迁移后出口温度的增大高于预置的热量阈值 TEMPERATURE_INCREASE_THRESHOLD,那么任务应被拆分,并 重新计算出口温度。如果出口温度仍然不可接受,那么递归地拆分任务, 并重复该计算,用于估计目标节点的迁移后温度。预置的热量阈值可由 用户设定,并且对每个节点来说可变。可在执行期间的任何时候改变和 重置所述阈值。任务拆分将在后面更详细地讨论。如果任务不能被进一 步拆分,那么我们选择再次返回步骤5,并选择另一个目标节点。如果不 再有目标节点可用,那么我们返回步骤3,并选择另一个任务迁移。

代替在选择哪个任务要迁移及其源节点和目的地节点的时候结合估 计的对温度的影响和结果得到的温度节约,用户可以配置一些设定,以 使所述估计成为在步骤5中定义的迁移后利用率计算的一部分。从而, 除了迁移后利用率信息这外,在步骤5中可如上所述估计施主节点和接 受节点的迁移后温度。更喜欢这种“组合决策”的用户需要设定一些初 始参数。这些参数包括:为了做出移动任务的合理决策,在施主节点上 的可接受温度降低和冷却成本节省的可接受的最小阈值;和为了做出移 动任务的合理决策,在目标节点上的温度升高和冷却成本增大的可接受 的最大阈值。在这种组合决策方式中,用户怀着主要目的是使负荷分配 均匀,次要目的是确保冷却成本的合理节省的意图,利用本发明进行负 荷迁移。

步骤6:负荷交换协议。所述处理的下一个步骤是在每个节点处建立 负荷交换协议,用于管理目标任务的迁移的数目和确保局部独立的系统 负荷迁移导致事件驱动系统中的全面的系统负荷分配(框42,图4),以及 确保局部迁移不会相互冲突。

由于计算机实现的方法是分散式处理,因此负荷交换协议应包括三 种性质,即:目标任务迁移不应导致振荡;在单个机器循环中,不应存 在两个以上目标任务的同时迁移;以及作为目标任务迁移的最终结果, 应以某种方式改善负荷分配。应存在一些或者所有这些性质,在一个优 选实施例中,所有这些性质都应存在。

下面更详细地讨论这些性质中的每个性质。

如果在前一个运行时间间隔和即将到来的运行时间间隔之间,功率 成本未变化,那么我们不希望振荡,不过,如果在足够长的时间窗口内, 功率变化,或者某个其它成本因素变化,那么振荡是合理的。例如,如 果在时间段t中,负荷从节点A被移到节点B,那么在时间段t+1中, 情况不应是负荷从节点B被移回节点A,除非足够的功率节省保证这种 变化。换句话说,振荡是其中作为负荷分配决策的结果,在相同的两个 节点之间不止一次地来回传递任务的情况。

不应发生任何同时的移动。例如,如果任务A从节点X被移到节点 Y,那么情况不应是连接到A的下游任务也同时移动,因为这会使先前 的决策成为次最佳。

假定在时间段之间输入数据速率不是非常易变,那么目标任务迁移 的最终结果应在某一方面好于初始配置。

为了实现这些性质,在每个节点上定义下述局部负荷交换约束。

负荷转移应是全部向下游转移的,或者全部向上游转移的。所有节 点把任务传递给容宿任务流中的下游组件的节点,除了容宿流任务图的 根和叶的节点之外。或者相反,所有节点把任务传递给容宿它们所容宿 的任务的上游组件的节点,除了容宿流任务图的根和叶的节点之外。与 选择哪个方向无关,在方向被反转之前,所有节点必须沿着该方向把任 务传递预定数目的时间步。对容宿任务图中的根和叶的节点来说,推荐 尝试并行拆分。这种负荷交换原语(primitive)提供抗振荡复原力,因 为它迫使负荷仅仅被单向交换。

每个时间步应最多存在一个任务迁移。如果决定了要迁移的目标任 务,那么在相同的时间步内,在该任务的流中的与该任务隔开最多一个 机器链路的所有下游任务都不能被移动。例如,如图9中所示,如果决 定任务c应从M3移到M5,那么任务d和e(在任务c的流中,它们在下 游)不能同时移动。在施主节点决定把负荷转移到目标节点之后,施主节 点必须通知其上游和下游的所有紧邻邻居。根据该通知,节点能够决定 它们是否能够转移负荷。这种负荷交换原语提供防止相互冲突的同时决 策的可能性的复原力。

存在关于负荷转移的数目的多种约束。在被转移到新的位置之外, 在另外的预定数目的时间步内,目标任务不能移动。这也可利用自从最 后一次转移任务以来过去的时间量来表述。这种负荷交换原语确保系统 不会把其所有时间都花在转移负荷上,从而相当大量的时间还花在处理 上。

两个节点不能同时把目标任务迁移到一个目标节点上。例如,如果 节点B正在把负荷发送给其子代节点C,并且也是节点C的父代节点的 节点A试图也向节点C发送负荷,那么实际上,节点B具有关于节点C 的负荷交换锁定,从而在节点B完成向节点C的负荷迁移并且解除所述 锁定之前,节点A不能向节点C迁移任何任务。在没有获得目标节点的 负荷交换锁定之前,施主节点不能向目标节点转移负荷。这种负荷交换 原语确保接受节点不会因正好同时从其它节点接收负荷而变得过载。

如果假定在两个连续的负荷转移之间,输入数据速率没有显著波动, 那么归因于在所述计算机实现的方法的先前步骤中决定的各种因素,能 够保证每个局部移动是最佳的。于是,在可供任务之用的可用负荷和存 储器方面,在执行所述计算机实现的处理之后,相对于各个机器的任务 的配置将更佳,对于用户的总响应时间将小于初始配置中的总响应时间。

步骤7:迁移

在处理的最后一步[框44]中,目标任务被迁移到目标节点。随后可 以进行目标任务在目标节点上的执行。之后,可能希望收集和目标任务 在目标节点上的执行有关的统计信息[框32],从而,如果需要另外的调 整,那么能够进行按照步骤3至7的另一个负荷均衡。

静态模式转变和能量节约目标

在本发明的另一个备选实施例[图4的框46]中,对一个或多个节点 来说,可能希望进入静态模式。存在一种对于特定节点是否使一个或多 个节点转变成静态模式的涉及几个因素的决策处理。这种决策可涉及把 静态节点(施主节点)上的任何任务(目标任务)迁移到另一个节点(目标节 点)。这几个因素是:

静态模式时段的预期通信量和持续时间;

哪些其它节点也可转变成静态模式;

评估转变成静态模式的成本;

评估转变成静态模式的益处;和

只有当转变成静态模式的益处超过所述成本时,才应进行所述转变。

如果益处超过成本,那么目标任务随后可被迁移到目标节点,并且 施主节点可转变成静态模式,以降低功率。到静态模式的转变可在上面 讨论的负荷均衡之前或之后进行。另外,可代替负荷均衡进行到静态模 式的转变。

下面详细讨论每个上述因素。

第一个因素是静态模式时段的预期通信量和持续时间。通过分析先 前接收的输入数据通信量的到达速率,节点能够确定在输入数据通信量 中是否存在模式。这种分析可包括统计分析,借助统计分析,节点能够 计算到达的平均值和方差,并利用曲线拟合来建议输入到达事件的分配。 根据所述分析,节点能够确定其输入数据的到达速率方面的模式,从而 确定它能够进入静态模式的时段的持续时间。例如,如果在每天的某个 时段内都没有数据到达,那么节点能够决定在预期没有任何数据的所述 时段内转变成静态模式。只要由静态时段引起的功率的节省大于或等于 POWER_DECREASE_THRESHOLD,节点就决定转变成静态模式。图 10中表示了这种情形。在图10中,节点M10在给定的持续时间内转变 成静态模式,而剩余的节点M4,M9和M5继续处理数据。尽管由于 M10处于静态模式而导致节点M9可能不会从节点M10收到任何输入数 据,不过M9可继续处理在M10转变成静态模式之前它从M10接收的数 据。M9还可能正在处理它从网络中的物理连接到M9的M4接收的数据。 显示为每个节点上的运行软件的本发明的计算机实现的负荷分配方法参 考时钟核对时间,以便确定何时转变成静态模式和何时不转变成静态模 式。

图11和12图解说明一组节点(称为施主节点集合)把其任务和处理迁 移到另一组节点(称为接受节点集合)的情形。接受节点必须物理连接到施 主节点从其接收输入数据的节点、以及施主节点把由它们对输入数据执 行处理任务而产生的输出发送给的节点。接受节点还必须物理连接到施 主节点,以便发送和接收迁移的任务。物理连接的大小可以是一个或多 个链路。在所述一组接受节点负责被迁移任务的处理的时候,所述一组 施主节点转变成静态模式。在这种情况下,接受节点集可优于施主节点 集,其中,优越性可用处理功率,RAT和盘上的存储空间,效率,它们 容宿的其它任务流的默认利用率,或者系统的用户规定的任何其它因素 表示。在图11中,作为这种情形的例子,在每天的某个时段节点M12 和M13预期数据的突发。节点M12和M13可把它们的任务和相关处理 迁移到节点M10和M9,节点M10和M9在处理所述数据时更高效,从 而与施主节点相比,在它们处理被迁移任务的时段期间利用的能量总的 说来较少,并且否则在所述时段期间会保持空闲状态。图12图解说明当 被迁移任务的输入数据突发的时期结束,并且在M12和M13上进行处 理能量效率更高时,把任务处理从节点M10和M9传回节点M12和M13 的情形。

另一个例子是如果输入数据以极低的速率到达,即,所述速率等于 或小于BUFFER_RATE_THRESHOLD,那么节点可选择处于半静态模 式,在所述半静态模式下,所述节点暂停处理,把输入缓存某一时段, 比如BUFFER_TIME_LIMIT,直到它准备好处理缓存的输入为止。

第二个因素是哪些其它节点也可转变成静态模式。给定任务的分层 性,如果一个节点进入静态模式,那么下游节点(即,容宿依赖于静态 节点的任务输出作为其唯一输入的任务的节点)也可转变成静态模式。 单个节点的能量节约可能并不足够大,即,可能不大于 POWER_DECREASE_THRESHOLD,以保证其转变成静态模式的决 策。在这种情况下,节点可考虑它本身及其下游邻居的因它们集体转变 成静态模式而引起的集体能量节约,并判断集体能量节约是否高于 POWER_DECREASE_THRESHOLD,以保证到静态模式的转变。根据 与下游节点的局部通信,节点能够确定哪些其它节点也能够与它自己同 时转变成静态模式。如果在所述通信的时候下游节点未容宿任何其它有 效任务流的任务,那么它将能够在与向其发送通信消息的节点相同的时 间转变成静态模式。

第三个因素是评估转变成静态模式的成本。节点能够估计转变成静 态模式的成本,所述估计包括时间成本和业务成本。更具体地说,成本 由下述构成:

节点暂停当前处理并把与任务的处理相关的任何必需的内存状态保 存到盘所用的时间。

如果变成静态涉及迁移任务的决策,那么另一个成本是它把任务及 其相关状态迁移到另一个节点所用的时间。假定与任务相关的所有状态, 以及任务本身相对于节点在本地,那么节点可通过首先确定用于把任务 和状态迁移到接受节点的链路的速度和带宽,估计该成本。在确定迁移 哪个任务和把该任务迁移到哪个节点的时候,节点可利用本实施例的上 述步骤1-步骤6。

如果任务被迁移,并且需要在另一个节点上被恢复,那么另一个成 本是这些任务在另一个节点上的恢复处理的启动成本。所述启动成本包 括达到任务的处理被暂停时的状态和在该点重新开始所需的时间。

转变成静态模式的成本c可被定量地计算成n个因素的加权组合, 其中因素f1代表暂停执行的成本,因素f2代表迁移的成本,fi代表另一 个成本因素,m1代表因素f1的权重,m2代表因素f2的权重,...,以及 mn代表因素fn的权重:

c=Σi=1inmifi

第四个因素是评估转变成静态模式的益处。可按照能量节约和业务 成本节约这两个尺度,评估转变成静态模式的益处。更具体地说,可通 过节点如下估计益处:

节点可估计对于它计划处于静态模式的时期,它所累积的能量节约。 这可利用根据节点以前的能量利用模式估计节省的电力或节省的功率来 表示。如果任务被迁移到更大功率的机器,那么必须从总的能量节约中 减去分派给这些迁移任务的接受机器的那部分功率使用。可如下估计在 节点i的迁移任务集合的功率使用,其中Ci是由任务t1,t2,...,tn组 成的任务集合,其中n是迁移的任务的总数。令Pi是接受节点i在执行 任务集Ci的时候,接受节点i消耗功率的速率。Pi的单位的例子可以是 瓦/秒。可如下计算Pi

Pi=Gi(Ci)

功率函数Gi考虑诸如作为处理任务集合Ci中的任务的结果,该节点 必须每隔多久访问盘一次以便进行读取和写入之类的因素。通过把Ci迁 移到节点i并记录在固定时间间隔t内的功率消耗的量p,能够估计Gi, 其中施加于任务的数据速率是通过利用上面提及的曲线拟合技术最佳地 匹配输入数据速率方面的最近趋势估计的。从而,Gi为:

Ci(Ci)=pt

一旦计算了Gi,就能够估计Pi,于是,在时间段x内,所述任务集 合的功率使用为Pi·x。

如果转变导致更有效地处理数据,则对于应用而言这样会导致更低 的端到端等待时间。业务成本方面的这种潜在益处可以用任务的端到端 等待时间来估计。

转变成静态模式的益处b可被定量地计算成n个因素的加权组合, 其中因素f1代表能量节约,因素f2代表端到端等待时间,fi代表另一个 益处因素,k1代表因素f1的权重,k2代表因素f2的权重,...,kn代表因 素fn的权重:

b=Σi=1inkifi

确定成本或益处的因素的权重可以是仿射的。仿射组合被定义为线 性组合,以致组合中的所有权重之和为1。所述权重也可以是非线性的或 者是常数。为了从利用特定权重的成本和益处等式中提取有意义的值, 各个因素的数值必须被归一化。归一化是统计学中的常见实践。

只有当转变到静态模式的益处超过成本时,才应作出转变到静态模 式的决策。换句话说,为了保证转变到静态模式,b应大于c。

另外应注意,ki的值可在节点上被定期更新。例如,如果能量消耗 按每天的时间,或者每周的日子,或者季节性地变化,那么在不同的情 形期间,可对于能量节约权重应用不同的值。

当转变成静态模式或者处于静态模式时,重要的是使静态模式时段 与其它节点同步。同步意味着节点对它们作为整体一起关机和它们作为 整体一起再次开机的固定时间达成一致。由于数据从一个任务流向另一 个任务,因此重要且可行的是在节点之间使静态模式同步。这是因为如 果上游节点进入静态模式,那么在连接到该上游节点的流中,处于下游 的节点也能够进入静态模式,只要它们未正在容宿属于其它流的任务, 或者,如果下游节点正在容宿属于其它流的任务,那么只要它们正在容 宿的所有不同数据流中的上游节点转变成静态模式,那么该下游节点也 能够进入静态模式。图13中表示了这种情形。在图13中,节点M4决 定转变成静态模式,从而向其下游节点广播该消息。M4的下游节点M5 也决定转变成静态模式,因为节点M5认识到在M4处于静态模式的时 段期间,它不能从M4收到任何数据,并且它根据数据模式分析和预测, 计算它不会从M1收到数据。另外,M5不具有源于先前接收的输入数据 的任何要进行的剩余处理。于是,节点M4使其静态模式时段的长度与 节点M5同步,节点M4和M5在约定的时间段内都转变成静态模式。类 似地,在图13中,当节点M10决定转变成静态模式,从而向其下游节 点广播该消息时,节点M9认识到在节点M10处于静态模式的时段期间, 它不能收到任何数据,并且它没有任何要进行的剩余处理。于是,M10 使其静态模式时段与节点M9同步,节点M10和M9在约定的时间段内 都转变成静态模式。转变成静态状态的功率成本可能对不同的节点来说 不同。当决定是否转变成静态模式时,节点估计关闭它自己的成本,并 从估计的能量节约中减去该成本。

下面是在本发明中定义的所有用户设定的参数的表格。表格中的参 数可由用户在任意时刻为每个节点单独配置。节点可具有多个用户。另 一方面,如果网络很大(例如,数千个节点),那么用户可以初始化节点的 子集的负荷迁移触发设置,并依赖于初始化节点的自动的分散式信息传 播算法(比如,基本扩散或置信传播),以把它们的初始化值传播给其 阈值适当的其它节点。扩散是一种其中信息的净传送由网络中的一组节 点产生的技术,在所述网络中,扩散高度集中于具有很少信息或没有信 息的一组节点。扩散的结果是信息的逐渐混合。在某些条件下,根据节 点的纯粹自我发起的局部协调,扩散处理最终会在网络中导致信息的完 全混合。

本发明可以采取纯硬件实施例、纯软件实施例或者包含硬件和软件 元件的实施例的形式。在优选实施例中,用软件实现本发明,所述软件 包括(但不限于)固件、驻留软件、微代码等。

此外,本发明可以采取可从计算机可用或计算机可读介质访问的计 算机程序产品的形式,所述计算机可用或计算机可读介质提供供计算机 或任何指令执行系统使用或者与计算机或任何指令执行系统结合使用的 程序代码。出于本说明的目的,计算机可用或计算机可读介质可以是可 包括、保存、传递、传播或传输所述程序以便供指令执行系统、设备或 装置使用或者结合指令执行系统、设备或装置使用的任何有形设备。

所述介质可以是电、磁、光、电磁、红外或半导体系统(或设备或装 置),或者传播介质。计算机可读介质的例子包括半导体或固态存储器、 磁带、可移动的计算机盘、随机存取存储器(RAM)、只读存储器(ROM)、 硬磁盘和光盘。光盘的当前例子包括压缩盘-只读存储器(CD-ROM)、压 缩盘-读/写光盘(CD-R/W)和DVD。

适合于保存和/或执行程序代码的数据处理系统将包括通过系统总线 与存储元件直接或间接耦接的至少一个处理器。存储元件可包括在程序 代码的实际执行期间采用的本地存储器、大容量存储器和提供至少一些 程序代码的临时存储以便减少在执行期间必须从大容量存储器取回代码 的次数的高速缓冲存储器。还为本发明预想了云计算环境。

输入/输出或I/O装置(包括但不限于键盘、显示器、指示装置等)可 直接地或者通过居间的I/O控制器与系统耦接。

网络适配器也可与系统耦接,以使数据处理系统能够通过居间的私 用或公共网络与其它数据处理系统或远程打印机或存储装置耦接。调制 解调器、线缆调制解调器和以太网卡只是目前可用的各种网络适配器中 的一些。

对注意到本公开的本领域技术人员来说,显然可以做出本发明的超 出这里具体说明的各个实施例的各种修改,而不脱离本发明的精神。因 而,这样的修改被认为在仅仅由附加权利要求限定的本发明的范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号