CN102473161A - 用以降低事件驱动系统中的功率和/或冷却成本的分散式负荷分配 - Google Patents
用以降低事件驱动系统中的功率和/或冷却成本的分散式负荷分配 Download PDFInfo
- Publication number
- CN102473161A CN102473161A CN2010800364328A CN201080036432A CN102473161A CN 102473161 A CN102473161 A CN 102473161A CN 2010800364328 A CN2010800364328 A CN 2010800364328A CN 201080036432 A CN201080036432 A CN 201080036432A CN 102473161 A CN102473161 A CN 102473161A
- Authority
- CN
- China
- Prior art keywords
- task
- node
- migration
- destination node
- goal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5094—Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4893—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
一种计算机实现方法、计算机程序产品和计算机可读存储介质涉及事件驱动系统中的分散式负荷安置,以使与能量和冷却相关的成本最小化。包括接收将由在事件驱动系统中的多个节点处的多个任务处理的数据流,所述事件驱动系统具有有状态的事件处理组件和无状态的事件处理组件,其中所述多个任务选自由分层任务(取决于另一个任务的输出的任务)、非分层任务(不取决于另一个任务的输出的任务)和它们的混合物构成的组中。考虑使在满足负荷分配和能量效率参数的同时其当前任务能够迁移到其它节点的节点停顿,预期的停顿持续时间提供与停顿及稍后重启的成本相当的益处。另外,考虑把任务迁移到相邻节点,以分配处理任务的系统负荷并降低冷却成本。
Description
技术领域
本发明总体地涉及借助多个软件实现的任务,利用多个节点的数据流处理,更具体地说,涉及通过把任务集中到满足负荷分配质量方面的预定标准(比如预期的端到端吞吐时间)的称为目标节点的可能节点的子集,从而作为一种经济措施,允许无任务的其它节点处于静态,目的在于降低能量消耗的负荷分配。
背景技术
随着因特网连接和网络连接的传感器设备的激增,可从大量的在线来源获得的数字信息的速率不断增大。这些在线来源以数据流的形式连续地生成数据(例如,新闻项目,金融数据,传感器读数,因特网交易记录等)并把该数据提供给网络。通常在网络中实现数据流处理单元,以接收或监视这些数据流并处理它们,从而产生可用格式的结果。例如,可以实现数据流处理单元,以进行其中挑选并随后集合或评估来自两个以上数据流(即,来自两个以上的新闻来源)的相关数据项的结合操作,以产生结果的列表,或者相互确证。
不过,典型数据流的输入速率提出了挑战。由于数据流处理单元不能控制有时偶发的且不可预测的数据流输入的速率,因此数据流处理单元的负荷变得越过其容量的情况并不少见,尤其是在速率峰值期间。典型的数据流处理单元通过任意地丢弃数据流(例如,拒绝接收数据流)来处理这种负荷问题。虽然这降低了负荷,不过,这种策略的随意性往往会导致不可预知的且次最佳的数据处理结果,因为在保持和处理包含无关数据的数据流的时候,可能会不知不觉地丢弃包含有用数据的数据流。
大多数已知的事件驱动系统中的负荷分配解决方案假定事件处理组件是没有状态的。极少的解决方案把有状态的算子(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可被称为事件管理和负荷分配管理运行时间(EventManagement 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运送的数据量。
其中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),那么其平均值和方差被定义成如下:
给定两个负荷时间序列,S1=(s11,s12,...,s1k)和S2=(s21,s22,...,s2k),那么其方差cov(S1,S2)和相关系数ρ被定义为:
在一个优选实施例中,对施主节点来说,负荷相关系数ρ应为正,指示不利的负荷相关性,从而适于迁移,对目标节点来说,负荷相关系数ρ应为负,指示到目标节点的目标任务迁移的有利负荷相关性。
最后一个标准是施主节点和目标节点的迁移后利用率。如果假定在关于任务的迁移决策处理的持续时间内,事件通信量将保持相同,那么当前负荷统计信息可被用于估计施主节点和目标节点的迁移后利用率。施主节点的迁移后利用率的降低应足够大,即,大于或等于预置的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分别是在施主机器和接受机器上的任务的总数):
如果施主节点的迁移后利用率小于预置的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上方的冷空气,并散逸具有平均出口温度的加热空气。按照能量守恒定律和计算设备消耗的几乎所有功率以热量的形式散逸的事实,节点的功率消耗和入口/出口温度之间的关系可被近似为:
假定待迁移的任务从施主节点容宿的任务集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代表迁移的成本,f i 代表另一个成本因素,m1代表因素f1的权重,m2代表因素f2的权重,...,以及mn代表因素fn的权重:
第四个因素是评估转变成静态模式的益处。可按照能量节约和业务成本节约这两个尺度,评估转变成静态模式的益处。更具体地说,可通过节点如下估计益处:
节点可估计对于它计划处于静态模式的时期,它所累积的能量节约。这可利用根据节点以前的能量利用模式估计节省的电力或节省的功率来表示。如果任务被迁移到更大功率的机器,那么必须从总的能量节约中减去分派给这些迁移任务的接受机器的那部分功率使用。可如下估计在节点i的迁移任务集合的功率使用,其中Ci是由任务t1,t2,...,tn组成的任务集合,其中n是迁移的任务的总数。令Pi是接受节点i在执行任务集Ci的时候,接受节点i消耗功率的速率。Pi的单位的例子可以是瓦/秒。可如下计算Pi:
Pi=Gi(Ci)
功率函数Gi考虑诸如作为处理任务集合Ci中的任务的结果,该节点必须每隔多久访问盘一次以便进行读取和写入之类的因素。通过把Ci迁移到节点i并记录在固定时间间隔t内的功率消耗的量p,能够估计Gi,其中施加于任务的数据速率是通过利用上面提及的曲线拟合技术最佳地匹配输入数据速率方面的最近趋势估计的。从而,Gi为:
一旦计算了Gi,就能够估计Pi,于是,在时间段x内,所述任务集合的功率使用为Pi·x。
如果转变导致更有效地处理数据,则对于应用而言这样会导致更低的端到端等待时间。业务成本方面的这种潜在益处可以用任务的端到端等待时间来估计。
转变成静态模式的益处b可被定量地计算成n个因素的加权组合,其中因素f1代表能量节约,因素f2代表端到端等待时间,fi代表另一个益处因素,k1代表因素f1的权重,k2代表因素f2的权重,...,kn代表因素fn的权重:
确定成本或益处的因素的权重可以是仿射的。仿射组合被定义为线性组合,以致组合中的所有权重之和为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控制器与系统耦接。
网络适配器也可与系统耦接,以使数据处理系统能够通过居间的私用或公共网络与其它数据处理系统或远程打印机或存储装置耦接。调制解调器、线缆调制解调器和以太网卡只是目前可用的各种网络适配器中的一些。
对注意到本公开的本领域技术人员来说,显然可以做出本发明的超出这里具体说明的各个实施例的各种修改,而不脱离本发明的精神。因而,这样的修改被认为在仅仅由附加权利要求限定的本发明的范围之内。
Claims (25)
1.一种事件驱动系统中的分散式负荷分配方法,所述方法包括下述步骤:
接收将由在事件驱动系统中的多个节点处的多个任务处理的数据流,所述事件驱动系统具有有状态的事件处理组件和无状态的事件处理组件,其中所述多个任务选自由分层任务、非分层任务和它们的混合物构成的组中,其中分层任务是取决于另一个任务的输出的任务,其中非分层任务是不取决于另一个任务的输出的任务;
收集与容宿于每个节点处的每个任务和所述节点的特性相关的统计信息,所述节点的特性包括其热特性;
利用收集的统计信息,创建任务能够部分地或全部地转移到的相邻节点的列表;
选择在节点处的考虑迁移到相邻节点列表中的称为目标节点的相邻节点的具有第一温度的称为目标任务的至少一个任务,以分配处理所述至少一个任务的系统负荷并降低冷却成本;
选择至少一个目标任务能够被迁移到的目标节点,其中目标节点具有第二温度;
在迁移会降低第一温度并且第二温度低于预定的可接受的热阈值的条件下,把目标任务迁移到目标节点;和
在每个节点处建立负荷交换协议以便管理目标任务的迁移的数目,其中分散式负荷迁移导致事件驱动系统中的总系统负荷分配,并降低冷却成本。
2.按照权利要求1所述的方法,还包括把所述至少一个目标任务拆分成两个以上的目标子任务。
3.按照权利要求1所述的方法,其中负荷交换协议包括:
(i)迁移目标任务的决策不应导致振荡;
(ii)在单个机器循环中,两个以上的任务不应同时迁移到单个目标节点;
(iii)在单个机器循环中,两个以上的任务不应同时从一个节点迁出;和
(iv)目标任务迁移的最终结果应以某种方式改善负荷分配。
4.按照权利要求1所述的方法,其中每个节点具有下述负荷交换约束:
(i)在第一预定时间段期间,所有目标任务向上游或者向下游迁移,并且,在第二预定时间段之后,目标任务迁移的方向能被切换;
(ii)如果目标任务被迁移到目标节点,那么迁移之前的任何最近的相邻下游目标任务在预定量的时间内不能被迁移;
(iii)在迁移到目标节点之后,目标任务必须在所述目标节点处保持预定量的时间;和
(iv)两个节点不能同时向目标节点迁移目标任务。
5.按照权利要求1所述的方法,还包括下述步骤:
把至少一个目标任务迁移到目标节点,并在所述目标节点上执行所述至少一个目标任务;和
收集与所述至少一个目标任务在所述目标节点上的执行相关的统计信息。
6.按照权利要求1所述的方法,还包括选择至少一个节点以转变成静态模式的步骤。
7.一种计算机程序产品,包括:
计算机可读存储介质,所述计算机可读存储介质具有用于事件驱动系统中的分散式负荷分配的计算机可读程序代码,该计算机可读程序代码包括:
被配置为用于接收将由在事件驱动系统中的多个节点处的多个任务处理的数据流的计算机可读程序代码,所述事件驱动系统具有有状态的事件处理组件和无状态的事件处理组件,其中所述多个任务选自由分层任务、非分层任务和它们的混合物构成的组中,其中分层任务是取决于另一个任务的输出的任务,其中非分层任务是不取决于另一个任务的输出的任务;
被配置为用于收集与容宿于每个节点处的每个任务和所述节点的特性相关的统计信息的计算机可读程序代码,所述节点的特性包括其热特性;
被配置为用于利用收集的统计信息来创建任务能够部分地或全部地转移到的相邻节点的列表的计算机可读程序代码;
被配置为用于选择在节点处的考虑迁移到相邻节点列表中的称为目标节点的相邻节点的、具有第一温度的称为目标任务的至少一个任务,以分配处理所述至少一个任务的系统负荷并降低冷却成本的计算机可读程序代码;
被配置为用于选择至少一个目标任务能够被迁移到的目标节点的计算机可读程序代码,其中目标节点具有第二温度;
被配置为用于在迁移会降低第一温度并且第二温度低于预定的可接受的热阈值的条件下把目标任务迁移到目标节点的计算机可读程序代码;和
被配置为用于在每个节点处建立负荷交换协议以便管理目标任务的迁移的数目的计算机可读程序代码,其中分散式负荷迁移导致事件驱动系统中的总系统负荷分配,并降低冷却成本。
8.按照权利要求7所述的计算机程序产品,还包括被配置为用于把所述至少一个目标任务拆分成两个以上的目标子任务的计算机可读程序代码。
9.按照权利要求7所述的计算机程序产品,其中负荷交换协议包括:
(i)迁移目标任务的决策不应导致振荡;
(ii)在单个机器循环中,两个以上的任务不应同时迁移到单个目标节点;
(iii)在单个机器循环中,两个以上的任务不应同时从一个节点迁出;和
(iv)目标任务迁移的最终结果应以某种方式改善负荷分配。
10.按照权利要求7所述的计算机程序产品,其中每个节点具有下述负荷交换约束:
(i)在第一预定时间段期间,所有目标任务向上游或者向下游迁移,并且,在第二预定时间段之后,目标任务迁移的方向能被切换;
(ii)如果目标任务被迁移到目标节点,那么迁移之前的任何最近的相邻下游目标任务在预定量的时间内不能被迁移;
(iii)在迁移到目标节点之后,目标任务必须在所述目标节点处保持预定量的时间;和
(iv)两个节点不能同时向目标节点迁移目标任务。
11.按照权利要求7所述的计算机程序产品,还包括:
被配置为用于把至少一个目标任务迁移到目标节点并在所述目标节点上执行所述至少一个目标任务的计算机可读程序代码;和
被配置为用于收集与所述至少一个目标任务在所述目标节点上的执行相关的统计信息的计算机可读程序代码。
12.按照权利要求7所述的计算机程序产品,还包括被配置为用于选择至少一个节点以转变成静态模式的计算机可读程序代码。
13.一种事件驱动系统中的分散式负荷分配方法,所述方法包括下述步骤:
接收将由在事件驱动系统中的多个节点处的多个任务处理的数据流,所述事件驱动系统具有有状态的事件处理组件和无状态的事件处理组件,其中所述多个任务选自由分层任务、非分层任务和它们的混合物构成的组中,其中分层任务是取决于另一个任务的输出的任务,其中非分层任务是不取决于另一个任务的输出的任务;
收集与容宿于每个节点处的每个任务相关的统计信息;
利用收集的统计信息,创建任务能够部分地或全部地转移到的相邻节点的列表;
选择称为施主节点的至少一个节点以转变成静态模式;
选择在施主节点处的考虑迁移到相邻节点列表中的称为目标节点的相邻节点的称为目标任务的任务;
选择目标任务能够被迁移到的目标节点,其中该目标节点满足负荷分配质量方面的预定标准;
在每个节点处建立负荷交换协议以便管理目标任务的迁移的数目,其中分散式负荷迁移导致事件驱动系统中的总系统负荷分配;和
把目标任务从施主节点迁移到目标节点,并使施主节点转变成静态模式。
14.按照权利要求13所述的方法,其中选择至少一个节点以转变成静态模式的的步骤包括:
分析在施主节点处的静态模式时期的输入通信量和预期持续时间;
评估也能够转变成静态模式的其它节点;
评估在施主节点处的转变成静态模式的等待时间和功率/冷却成本;和
评估在施主节点处的转变成静态模式的功率/冷却益处;和
如果转变成静态模式的益处超过转变成静态模式的成本,那么把目标任务从施主节点迁移到目标节点,并使施主节点转变成静态模式。
15.按照权利要求13所述的方法,还包括把目标任务拆分成两组以上的目标子任务。
16.按照权利要求13所述的方法,其中负荷分配质量方面的预定标准包括:
(i)目标节点必须被物理地连接到:(a)容宿目标任务的节点,(b)容宿作为目标任务的父代的任务的节点,和(c)容宿作为目标任务的子代的任务的节点;
(ii)目标节点必须具有足以容宿目标任务的可用负荷和存储器;
(iii)使通过目标任务的数据流中的物理链路的数目最小化;
(iv)消除循环;
(v)目标节点应具有负的负荷相关系数;和
(vi)容宿目标任务的节点和目标节点的迁移后利用率小于预定的最大阈值。
17.按照权利要求13所述的方法,其中负荷交换协议包括:
(i)迁移目标任务的决策不应导致振荡;
(ii)在单个机器循环中,两个以上的任务不应同时迁移到单个目标节点;
(iii)在单个机器循环中,两个以上的任务不应同时从一个节点迁出;和
(iv)目标任务迁移的最终结果应以某种方式改善负荷分配。
18.按照权利要求13所述的方法,其中每个节点具有下述负荷交换约束:
(i)在第一预定时间段期间,所有目标任务向上游或者向下游迁移,并且,在第二预定时间段之后,目标任务迁移的方向能被切换;
(ii)如果目标任务被迁移到目标节点,那么迁移之前的任何最近的相邻下游目标任务在预定量的时间内不能被迁移;
(iii)在迁移到目标节点之后,目标任务必须在所述目标节点处保持预定量的时间;和
(iv)两个节点不能同时向目标节点迁移目标任务。
19.按照权利要求13所述的方法,还包括收集与目标任务在目标节点上的执行相关的统计信息的步骤。
20.一种计算机程序产品,包括:
计算机可读存储介质,所述计算机可读存储介质具有用于事件驱动系统中的分散式负荷分配的计算机可读程序代码,该计算机可读程序代码包括:
被配置为用于接收将由在事件驱动系统中的多个节点处的多个任务处理的数据流的计算机可读程序代码,所述事件驱动系统具有有状态的事件处理组件和无状态的事件处理组件,其中所述多个任务选自由分层任务、非分层任务和它们的混合物构成的组中,其中分层任务是取决于另一个任务的输出的任务,其中非分层任务是不取决于另一个任务的输出的任务;
被配置为用于收集与容宿于每个节点处的每个任务相关的统计信息的计算机可读程序代码;
被配置为用于利用收集的统计信息来创建任务能够部分地或全部地转移到的相邻节点的列表的计算机可读程序代码;
被配置为选择称为施主节点的至少一个节点以转变成静态模式的计算机可读程序代码;
被配置为用于选择在施主节点处的考虑迁移到相邻节点列表中的称为目标节点的相邻节点的称为目标任务的任务的计算机可读程序代码;
被配置为用于选择目标任务能够被迁移到的目标节点的计算机可读程序代码,其中目标节点满足负荷分配质量方面的预定标准;
被配置为用于在每个节点处建立负荷交换协议以便管理目标任务的迁移的数目的计算机可读程序代码,其中分散式负荷迁移导致事件驱动系统中的总系统负荷分配;和
被配置为用于把目标任务从施主节点迁移到目标节点并使施主节点转变成静态模式的计算机可读程序代码。
21.按照权利要求20所述的计算机程序产品,其中被配置为用于选择至少一个节点以转变成静态模式的计算机可读程序代码包括:
被配置为用于分析在施主节点处的静态模式时期的输入通信量和预期持续时间的计算机可读程序代码;
被配置为用于评估也能够转变成静态模式的其它节点的计算机可读程序代码;
被配置为用于评估在施主节点处的转变成静态模式的等待时间和功率/冷却成本的计算机可读程序代码;和
被配置为用于评估在施主节点处的转变成静态模式的功率/冷却益处的计算机可读程序代码;和
被配置为用于如果转变成静态模式的益处超过转变成静态模式的成本,那么把目标任务从施主节点迁移到目标节点并使施主节点转变成静态模式的计算机可读程序代码。
22.按照权利要求20所述的计算机程序产品,其中负荷分配质量方面的预定标准包括:
(i)目标节点必须被物理地连接到:(a)容宿目标任务的节点,(b)容宿作为目标任务的父代的任务的节点,和(c)容宿作为目标任务的子代的任务的节点;
(ii)目标节点必须具有足以容宿目标任务的可用负荷和存储器;
(iii)使通过目标任务的数据流中的物理链路的数目最小化;
(iv)消除循环;
(v)目标节点应具有负的负荷相关系数;和
(vi)容宿目标任务的节点和目标节点的迁移后利用率小于预定的最大阈值。
23.按照权利要求20所述的计算机程序产品,其中负荷交换协议包括:
(i)迁移目标任务的决策不应导致振荡;
(ii)在单个机器循环中,两个以上的任务不应同时迁移到单个目标节点;
(iii)在单个机器循环中,两个以上的任务不应同时从一个节点迁出;和
(iv)目标任务迁移的最终结果应以某种方式改善负荷分配。
24.按照权利要求20所述的计算机程序产品,其中每个节点具有下述负荷交换约束:
(i)在第一预定时间段期间,所有目标任务向上游或者向下游迁移,并且,在第二预定时间段之后,目标任务迁移的方向能被切换;
(ii)如果目标任务被迁移到目标节点,那么迁移之前的任何最近的相邻下游目标任务在预定量的时间内不能被迁移;
(iii)在迁移到目标节点之后,目标任务必须在所述目标节点处保持预定量的时间;和
(iv)两个节点不能同时向目标节点迁移目标任务。
25.按照权利要求20所述的计算机程序产品,还包括被配置为用于收集与目标任务在目标节点上的执行相关的统计信息的计算机可读程序代码。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/543,474 US8479215B2 (en) | 2009-08-18 | 2009-08-18 | Decentralized load distribution to reduce power and/or cooling costs in an event-driven system |
US12/543,474 | 2009-08-18 | ||
PCT/US2010/033465 WO2011022098A1 (en) | 2009-08-18 | 2010-05-04 | Decentralized load distribution to reduce power and/or cooling cost in an event-driven system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102473161A true CN102473161A (zh) | 2012-05-23 |
CN102473161B CN102473161B (zh) | 2014-07-16 |
Family
ID=43606330
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080036432.8A Expired - Fee Related CN102473161B (zh) | 2009-08-18 | 2010-05-04 | 用以降低事件驱动系统中的功率和/或冷却成本的分散式负荷分配 |
Country Status (6)
Country | Link |
---|---|
US (2) | US8479215B2 (zh) |
JP (1) | JP5723882B2 (zh) |
CN (1) | CN102473161B (zh) |
DE (1) | DE112010003338B4 (zh) |
GB (2) | GB2483610B (zh) |
WO (1) | WO2011022098A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105980987A (zh) * | 2014-01-29 | 2016-09-28 | 三星电子株式会社 | 任务调度方法和设备 |
CN107018201A (zh) * | 2017-04-20 | 2017-08-04 | 北京中科睿芯科技有限公司 | 数据流架构中利用关键路径信息进行指令动态迁移的方法 |
CN109918195A (zh) * | 2019-01-18 | 2019-06-21 | 华南理工大学 | 基于热感知动态任务迁移的众核系统处理器资源调度方法 |
WO2021139726A1 (zh) * | 2020-01-07 | 2021-07-15 | 中科寒武纪科技股份有限公司 | 任务迁移的方法、装置、计算机设备及可读存储介质 |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2184681A1 (en) * | 2008-10-31 | 2010-05-12 | HSBC Holdings plc | Capacity control |
US9552234B2 (en) | 2011-01-31 | 2017-01-24 | Nokia Technologies Oy | Method and apparatus for energy optimization in multi-level distributed computations |
US8856321B2 (en) * | 2011-03-31 | 2014-10-07 | International Business Machines Corporation | System to improve operation of a data center with heterogeneous computing clouds |
US9280386B1 (en) * | 2011-07-14 | 2016-03-08 | Google Inc. | Identifying task instance outliers based on metric data in a large scale parallel processing system |
TW201314433A (zh) * | 2011-09-28 | 2013-04-01 | Inventec Corp | 伺服器系統及其電源管理方法 |
US9430286B2 (en) * | 2011-12-12 | 2016-08-30 | International Business Machines Corporation | Authorizing distributed task processing in a distributed storage network |
US9223630B2 (en) * | 2011-12-22 | 2015-12-29 | Alcatel Lucent | Method and apparatus for energy efficient distributed and elastic load balancing |
US10140177B2 (en) * | 2012-01-31 | 2018-11-27 | International Business Machines Corporation | Transferring a partial task in a distributed computing system |
US20190012234A1 (en) * | 2012-01-31 | 2019-01-10 | International Business Machines Corporation | Dynamically shifting tasks in distributed computing data storage |
US20130268940A1 (en) * | 2012-04-04 | 2013-10-10 | Daniel Juergen Gmach | Automating workload virtualization |
CN102724277B (zh) * | 2012-05-04 | 2016-01-06 | 华为技术有限公司 | 虚拟机热迁移和部署的方法、服务器及集群系统 |
US10652318B2 (en) * | 2012-08-13 | 2020-05-12 | Verisign, Inc. | Systems and methods for load balancing using predictive routing |
GB2505412A (en) * | 2012-08-28 | 2014-03-05 | Ibm | Collaborative modified consensus workload distribution between computing nodes |
US9104607B2 (en) * | 2012-10-31 | 2015-08-11 | International Business Machines Corporation | Simulation engine for use in disaster recovery virtualization |
EP2939073A4 (en) * | 2012-12-28 | 2016-08-31 | Intel Corp | ENERGY OPTIMIZATION FOR DISTRIBUTED COMPUTER SYSTEM |
US9784460B2 (en) * | 2013-08-01 | 2017-10-10 | Nautilus Data Technologies, Inc. | Data center facility and process that utilizes a closed-looped heat management system |
JP5939583B2 (ja) * | 2013-12-13 | 2016-06-22 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 抽出装置、データ処理システム、抽出方法および抽出プログラム |
US20160283512A1 (en) * | 2014-03-26 | 2016-09-29 | Unisys Corporation | Distributed file storage in a continuous computing fabric environment |
US10445134B2 (en) | 2014-06-03 | 2019-10-15 | Amazon Technologies, Inc. | Identifying candidate workloads for migration |
DE102014010071A1 (de) | 2014-07-08 | 2016-01-14 | Evohaus Gmbh | Energiemanagementsystem zur anreizbasierten Verbrauchsoptimierung |
US10896432B1 (en) * | 2014-09-22 | 2021-01-19 | Amazon Technologies, Inc. | Bandwidth cost assignment for multi-tenant networks |
JP2016081119A (ja) * | 2014-10-10 | 2016-05-16 | 富士通株式会社 | 情報処理システム、情報処理システムの制御方法および制御装置の制御プログラム |
CN104539551B (zh) * | 2014-12-22 | 2017-11-17 | 清华大学 | 路由交换平台虚拟服务迁移方法 |
US9626227B2 (en) * | 2015-03-27 | 2017-04-18 | Intel Corporation | Technologies for offloading and on-loading data for processor/coprocessor arrangements |
US9848041B2 (en) * | 2015-05-01 | 2017-12-19 | Amazon Technologies, Inc. | Automatic scaling of resource instance groups within compute clusters |
US9967160B2 (en) | 2015-05-21 | 2018-05-08 | International Business Machines Corporation | Rerouting data of a streaming application |
US10009825B1 (en) * | 2016-01-20 | 2018-06-26 | Sprint Spectrum L.P. | Donor selection for relay access nodes |
JP6181216B2 (ja) * | 2016-01-22 | 2017-08-16 | 株式会社東芝 | 通信制御装置、通信制御方法、プログラムおよび通信システム |
EP3208712B1 (en) * | 2016-02-22 | 2020-02-19 | Karlsruher Institut für Technologie | Computer system and method for parallel program code optimization and deployment |
JP6743568B2 (ja) * | 2016-08-09 | 2020-08-19 | 富士通株式会社 | 制御装置、情報処理システム、プログラム及び情報処理方法 |
KR101856454B1 (ko) * | 2017-03-06 | 2018-05-10 | 주식회사 티맥스데이터 | 분산처리를 위한 컴퓨팅 장치 |
KR102091481B1 (ko) * | 2017-11-29 | 2020-03-20 | 국민대학교산학협력단 | 동적 신경망 학습 방법 및 이를 수행하는 동적 신경망 학습 장치 |
EP3648430B1 (de) * | 2018-11-05 | 2021-06-02 | Wincor Nixdorf International GmbH | Hardware-sicherheitsmodul |
US11138213B2 (en) | 2019-04-10 | 2021-10-05 | Snowflake Inc. | Internal resource provisioning in database systems |
US10944644B2 (en) * | 2019-04-30 | 2021-03-09 | Intel Corporation | Technologies for thermal and power awareness and management in a multi-edge cloud networking environment |
US10674118B1 (en) * | 2019-05-01 | 2020-06-02 | CYBERTOKA Ltd. | Method and system for discreetly accessing security camera systems |
DE102019214255A1 (de) * | 2019-09-19 | 2021-03-25 | Robert Bosch Gmbh | Dynamisches Zuweisen von Sonderaufgaben in verteilten Netzwerken |
CN112882827A (zh) * | 2019-11-29 | 2021-06-01 | 伊姆西Ip控股有限责任公司 | 用于负载均衡的方法、电子设备和计算机程序产品 |
US11842213B2 (en) * | 2021-04-16 | 2023-12-12 | Dell Products L.P. | Cooling-power-utilization-based workload allocation system |
CN116029539B (zh) * | 2023-03-30 | 2023-06-09 | 深圳市奥思网络科技有限公司 | 一种基于工作流的项目流转方法及相关组件 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5031089A (en) * | 1988-12-30 | 1991-07-09 | United States Of America As Represented By The Administrator, National Aeronautics And Space Administration | Dynamic resource allocation scheme for distributed heterogeneous computer systems |
US5539883A (en) * | 1991-10-31 | 1996-07-23 | International Business Machines Corporation | Load balancing of network by maintaining in each computer information regarding current load on the computer and load on some other computers in the network |
US5870604A (en) * | 1994-07-14 | 1999-02-09 | Hitachi, Ltd. | Job execution processor changing method and system, for load distribution among processors |
Family Cites Families (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61114363A (ja) * | 1984-11-07 | 1986-06-02 | Hitachi Ltd | 計算機システム間ジヨブ転送方式 |
US5136708A (en) * | 1987-06-09 | 1992-08-04 | Oce-Nederland B.V. | Distributed office automation system with specific task assignment among workstations |
JPH01194054A (ja) * | 1988-01-29 | 1989-08-04 | Hitachi Ltd | 分散処理システムのプログラムローデイング方式 |
JP2875284B2 (ja) * | 1989-06-23 | 1999-03-31 | 株式会社日立製作所 | 計算機システム及びその課金処理方法 |
JPH0782440B2 (ja) * | 1990-07-05 | 1995-09-06 | 工業技術院長 | 論理合成の演算割り当て方法 |
JPH0675786A (ja) * | 1992-08-26 | 1994-03-18 | Hitachi Ltd | タスクスケジュリング方法 |
US5418953A (en) * | 1993-04-12 | 1995-05-23 | Loral/Rohm Mil-Spec Corp. | Method for automated deployment of a software program onto a multi-processor architecture |
US5630129A (en) | 1993-12-01 | 1997-05-13 | Sandia Corporation | Dynamic load balancing of applications |
JPH0816531A (ja) * | 1994-06-28 | 1996-01-19 | Hitachi Ltd | プロセススケジュール方式 |
US6078945A (en) * | 1995-06-21 | 2000-06-20 | Tao Group Limited | Operating system for use with computer networks incorporating two or more data processors linked together for parallel processing and incorporating improved dynamic load-sharing techniques |
JPH09231180A (ja) * | 1995-12-22 | 1997-09-05 | Hitachi Ltd | サーバ分割方法 |
US6393455B1 (en) * | 1997-03-28 | 2002-05-21 | International Business Machines Corp. | Workload management method to enhance shared resource access in a multisystem environment |
US6128279A (en) * | 1997-10-06 | 2000-10-03 | Web Balance, Inc. | System for balancing loads among network servers |
US6584102B1 (en) | 1998-12-21 | 2003-06-24 | At&T Corp. | Communication network apparatus and method |
US7117273B1 (en) | 2000-01-25 | 2006-10-03 | Cisco Technology, Inc. | Methods and apparatus for maintaining a map of node relationships for a network |
US6658449B1 (en) * | 2000-02-17 | 2003-12-02 | International Business Machines Corporation | Apparatus and method for periodic load balancing in a multiple run queue system |
EP1182548A3 (en) * | 2000-08-21 | 2003-10-15 | Texas Instruments France | Dynamic hardware control for energy management systems using task attributes |
EP1182552A3 (en) * | 2000-08-21 | 2003-10-01 | Texas Instruments France | Dynamic hardware configuration for energy management systems using task attributes |
EP1410215A4 (en) * | 2000-08-22 | 2006-10-11 | Akamai Tech Inc | COMPILING DYNAMIC CONTENT ON EDGE-OF-NETWORK SERVER IN A CONTENT DELIVERY NETWORK |
US20070245165A1 (en) * | 2000-09-27 | 2007-10-18 | Amphus, Inc. | System and method for activity or event based dynamic energy conserving server reconfiguration |
US20040068729A1 (en) | 2001-02-14 | 2004-04-08 | Oren Simon | Non-hierarchical collaborative computing platform |
EP1386432A4 (en) | 2001-03-21 | 2009-07-15 | John A Stine | PROTOCOL OF ACCESS AND ROUTING FOR AD HOC NETWORKS, IN WHICH THE COLLISION RESOLUTION AND THE DISSEMINATION OF NODE STATES ARE USED |
US7093004B2 (en) | 2002-02-04 | 2006-08-15 | Datasynapse, Inc. | Using execution statistics to select tasks for redundant assignment in a distributed computing platform |
US7313503B2 (en) * | 2002-02-19 | 2007-12-25 | Hewlett-Packard Development Company, L.P. | Designing layout for internet datacenter cooling |
WO2003083693A1 (fr) | 2002-04-03 | 2003-10-09 | Fujitsu Limited | Planificateur de taches dans un systeme de traitement distribue |
JP2004126968A (ja) * | 2002-10-03 | 2004-04-22 | Fujitsu Ltd | 並列計算機のジョブスケジューリング装置 |
US7590984B2 (en) * | 2003-05-29 | 2009-09-15 | International Business Machines Corporation | System and method for balancing a computing load among computing resources in a distributed computing problem |
US7373268B1 (en) * | 2003-07-30 | 2008-05-13 | Hewlett-Packard Development Company, L.P. | Method and system for dynamically controlling cooling resources in a data center |
US7441033B2 (en) * | 2003-08-14 | 2008-10-21 | Oracle International Corporation | On demand node and server instance allocation and de-allocation |
US8156217B2 (en) | 2003-11-24 | 2012-04-10 | Hewlett-Packard Development Company, L.P. | Dynamically balancing load for servers |
US7451210B2 (en) * | 2003-11-24 | 2008-11-11 | International Business Machines Corporation | Hybrid method for event prediction and system control |
TW200532466A (en) * | 2004-02-03 | 2005-10-01 | Sony Corp | Information processing device, information processing method, information processing system and information processing program of accessible media |
US7360102B2 (en) * | 2004-03-29 | 2008-04-15 | Sony Computer Entertainment Inc. | Methods and apparatus for achieving thermal management using processor manipulation |
JP4465598B2 (ja) | 2004-07-05 | 2010-05-19 | ソニー株式会社 | 集積回路およびその処理制御方法、並びに、プログラム |
WO2006011189A1 (ja) * | 2004-07-26 | 2006-02-02 | Mitsubishi Denki Kabushiki Kaisha | 並列計算機 |
US7925727B2 (en) * | 2004-07-29 | 2011-04-12 | Nortel Networks Limited | Method and apparatus for efficient communication of management data in a telecommunications network |
US7400585B2 (en) * | 2004-09-23 | 2008-07-15 | International Business Machines Corporation | Optimal interconnect utilization in a data processing network |
US20060265712A1 (en) | 2005-05-18 | 2006-11-23 | Docomo Communications Laboratories Usa, Inc. | Methods for supporting intra-document parallelism in XSLT processing on devices with multiple processors |
US7487206B2 (en) * | 2005-07-15 | 2009-02-03 | International Business Machines Corporation | Method for providing load diffusion in data stream correlations |
US7327571B2 (en) * | 2005-09-06 | 2008-02-05 | Hewlett-Packard Development Company, L.P. | Thermal load balancing systems and methods |
KR100715674B1 (ko) | 2005-09-15 | 2007-05-09 | 한국전자통신연구원 | 부하 분산 방법 및 장치, 그리고 이를 이용한 소프트웨어스트리밍 시스템 |
GB0519981D0 (en) | 2005-09-30 | 2005-11-09 | Ignios Ltd | Scheduling in a multicore architecture |
JP2007226567A (ja) | 2006-02-23 | 2007-09-06 | Fujitsu Ltd | 回路シミュレータおよび回路シミュレーションプログラム |
JP4523921B2 (ja) * | 2006-02-24 | 2010-08-11 | 三菱電機株式会社 | 計算機リソース動的制御装置 |
US8032889B2 (en) * | 2006-04-05 | 2011-10-04 | Maxwell Technologies, Inc. | Methods and apparatus for managing and controlling power consumption and heat generation in computer systems |
US20080005391A1 (en) * | 2006-06-05 | 2008-01-03 | Bugra Gedik | Method and apparatus for adaptive in-operator load shedding |
US7941805B2 (en) | 2006-08-15 | 2011-05-10 | International Business Machines Corporation | Affinity dispatching load balancer with precise CPU consumption data |
JP4308241B2 (ja) | 2006-11-10 | 2009-08-05 | インターナショナル・ビジネス・マシーンズ・コーポレーション | ジョブ実行方法、ジョブ実行システム及びジョブ実行プログラム |
CN101542442B (zh) | 2007-04-09 | 2012-12-19 | 松下电器产业株式会社 | 多处理器控制装置、其控制方法及集成电路 |
US7644254B2 (en) * | 2007-04-18 | 2010-01-05 | International Business Machines Corporation | Routing data packets with hint bit for each six orthogonal directions in three dimensional torus computer system set to avoid nodes in problem list |
US8370844B2 (en) * | 2007-09-12 | 2013-02-05 | International Business Machines Corporation | Mechanism for process migration on a massively parallel computer |
US7877490B1 (en) | 2007-12-28 | 2011-01-25 | Violin Memory, Inc. | Method and apparatus for efficient TCP connection handoff |
US20090192981A1 (en) * | 2008-01-29 | 2009-07-30 | Olga Papaemmanouil | Query Deployment Plan For A Distributed Shared Stream Processing System |
US7797588B2 (en) * | 2008-02-01 | 2010-09-14 | International Business Machines Corporation | Mechanism to provide software guaranteed reliability for GSM operations |
CA2757647A1 (en) | 2008-04-04 | 2009-12-03 | Powerwave Cognition, Inc. | Methods and systems for a mobile, broadband, routable internet |
EP2277110B1 (en) * | 2008-04-14 | 2018-10-31 | Telecom Italia S.p.A. | Distributed service framework |
-
2009
- 2009-08-18 US US12/543,474 patent/US8479215B2/en not_active Expired - Fee Related
-
2010
- 2010-05-04 DE DE112010003338.2T patent/DE112010003338B4/de active Active
- 2010-05-04 GB GB1200477.6A patent/GB2483610B/en active Active
- 2010-05-04 JP JP2012525539A patent/JP5723882B2/ja active Active
- 2010-05-04 WO PCT/US2010/033465 patent/WO2011022098A1/en active Application Filing
- 2010-05-04 CN CN201080036432.8A patent/CN102473161B/zh not_active Expired - Fee Related
- 2010-05-04 GB GB1514952.9A patent/GB2526964B/en active Active
-
2013
- 2013-05-11 US US13/892,264 patent/US9665407B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5031089A (en) * | 1988-12-30 | 1991-07-09 | United States Of America As Represented By The Administrator, National Aeronautics And Space Administration | Dynamic resource allocation scheme for distributed heterogeneous computer systems |
US5539883A (en) * | 1991-10-31 | 1996-07-23 | International Business Machines Corporation | Load balancing of network by maintaining in each computer information regarding current load on the computer and load on some other computers in the network |
US5870604A (en) * | 1994-07-14 | 1999-02-09 | Hitachi, Ltd. | Job execution processor changing method and system, for load distribution among processors |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105980987A (zh) * | 2014-01-29 | 2016-09-28 | 三星电子株式会社 | 任务调度方法和设备 |
CN105980987B (zh) * | 2014-01-29 | 2020-12-15 | 三星电子株式会社 | 任务调度方法和设备 |
US11429439B2 (en) | 2014-01-29 | 2022-08-30 | Samsung Electronics Co., Ltd. | Task scheduling based on performance control conditions for multiple processing units |
CN107018201A (zh) * | 2017-04-20 | 2017-08-04 | 北京中科睿芯科技有限公司 | 数据流架构中利用关键路径信息进行指令动态迁移的方法 |
CN107018201B (zh) * | 2017-04-20 | 2019-12-31 | 北京中科睿芯科技有限公司 | 数据流架构中利用关键路径信息进行指令动态迁移的方法 |
CN109918195A (zh) * | 2019-01-18 | 2019-06-21 | 华南理工大学 | 基于热感知动态任务迁移的众核系统处理器资源调度方法 |
CN109918195B (zh) * | 2019-01-18 | 2023-06-20 | 华南理工大学 | 基于热感知动态任务迁移的众核系统处理器资源调度方法 |
WO2021139726A1 (zh) * | 2020-01-07 | 2021-07-15 | 中科寒武纪科技股份有限公司 | 任务迁移的方法、装置、计算机设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
JP2013502642A (ja) | 2013-01-24 |
US20130254778A1 (en) | 2013-09-26 |
GB2526964A (en) | 2015-12-09 |
CN102473161B (zh) | 2014-07-16 |
GB2526964B (en) | 2016-02-03 |
WO2011022098A1 (en) | 2011-02-24 |
GB201514952D0 (en) | 2015-10-07 |
US8479215B2 (en) | 2013-07-02 |
GB2483610A (en) | 2012-03-14 |
DE112010003338T5 (de) | 2012-08-09 |
US9665407B2 (en) | 2017-05-30 |
US20110047554A1 (en) | 2011-02-24 |
GB2483610B (en) | 2016-02-03 |
GB201200477D0 (en) | 2012-02-22 |
JP5723882B2 (ja) | 2015-05-27 |
DE112010003338B4 (de) | 2017-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102473161B (zh) | 用以降低事件驱动系统中的功率和/或冷却成本的分散式负荷分配 | |
US8479216B2 (en) | Method for decentralized load distribution in an event-driven system using localized migration between physically connected nodes and load exchange protocol preventing simultaneous migration of plurality of tasks to or from a same node | |
Wu et al. | Big data meet green challenges: Greening big data | |
Wang et al. | Big data driven cycle time parallel prediction for production planning in wafer manufacturing | |
Cochran et al. | Stochastic bed balancing of an obstetrics hospital | |
Lieckens et al. | Reverse logistics network design with stochastic lead times | |
CN103092683B (zh) | 用于数据分析的基于启发式的调度 | |
Ghafari et al. | Task scheduling algorithms for energy optimization in cloud environment: a comprehensive review | |
Li et al. | Load balance based workflow job scheduling algorithm in distributed cloud | |
CN109189589A (zh) | 一种分布式大数据计算引擎及架构方法 | |
CN102171627A (zh) | 对在异构计算系统中执行的应用的调度 | |
Xu et al. | Dynamic order acceptance and scheduling problem with sequence-dependent setup time | |
Armbruster et al. | Continuous dynamic models, clearing functions, and discrete-event simulation in aggregate production planning | |
Park et al. | A multi-class closed queueing maintenance network model with a parts inventory system | |
Song et al. | Energy efficiency optimization in big data processing platform by improving resources utilization | |
Seifoddini et al. | The effect of reliability consideration on the application of quality index | |
Woerner et al. | Joint optimisation of capacity and safety stock allocation | |
Wang et al. | Cloud workload analytics for real-time prediction of user request patterns | |
Xie et al. | Multi-objective optimization of data deployment and scheduling based on the minimum cost in geo-distributed cloud | |
Murugesan et al. | Multi-source task scheduling in grid computing environment using linear programming | |
Chai et al. | Profit-oriented task scheduling algorithm in Hadoop cluster | |
Mokadem et al. | A review on data replication strategies in cloud systems | |
Liu et al. | Optimization of J supermarket cashier service system based on M/M/c model | |
Ku et al. | A novel complex event mining network for monitoring RFID-enable application | |
Liang et al. | Cloud service provisioning strategy using data center consortium clustering |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140716 |
|
CF01 | Termination of patent right due to non-payment of annual fee |