CN114830088A - 用于对计算集群或云计算平台的资源节点执行资源调度的方法和装置 - Google Patents

用于对计算集群或云计算平台的资源节点执行资源调度的方法和装置 Download PDF

Info

Publication number
CN114830088A
CN114830088A CN202080082742.7A CN202080082742A CN114830088A CN 114830088 A CN114830088 A CN 114830088A CN 202080082742 A CN202080082742 A CN 202080082742A CN 114830088 A CN114830088 A CN 114830088A
Authority
CN
China
Prior art keywords
node
task
nodes
distbuckets
map structure
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.)
Pending
Application number
CN202080082742.7A
Other languages
English (en)
Inventor
陈晨
柯晓棣
马浩海
杰森·T·S·兰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Cloud Computing Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Cloud Computing Technologies Co Ltd filed Critical Huawei Cloud Computing Technologies Co Ltd
Publication of CN114830088A publication Critical patent/CN114830088A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/5038Allocation 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 execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/486Scheduler internals

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

所公开的装置和方法涉及对计算机集群或云计算平台的资源节点执行资源调度。所公开的方法包括:接收节点集中的节点的节点标识符,并接收所述节点标识符中的每一个的节点属性的值;接收一系列任务,每个任务指定任务参数的值;生成节点图结构,所述节点图结构具有至少一个节点图结构顶点,所述至少一个节点图结构顶点映射到坐标空间;将每个任务映射到所述坐标空间;通过分析位于每个任务的适合区域内的所述至少一个节点图结构顶点,确定第一节点的第一节点标识符;将所述第一节点标识符映射到每个任务以生成调度方案。

Description

用于对计算集群或云计算平台的资源节点执行资源调度的方 法和装置
相关申请案交叉引用
本申请要求于2019年12月19日递交的申请号为16/720,410、发明名称为“用于对计算集群或云计算平台的资源节点执行资源调度的方法和装置(METHODS AND APPARATUSFOR RESOURCE SCHEDULING OF RESOURCE NODES OF A COMPUTING CLUSTER OR A CLOUDCOMPUTING PLATFORM)”的美国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本发明大体涉及对计算机集群或云计算平台的资源节点执行资源调度的领域。
背景技术
计算机集群和云计算平台按需提供计算机系统资源。计算机集群和云计算平台的计算机系统资源通常组织为资源节点。资源节点可以是计算机集群中的物理机、云计算平台中的虚拟机或主机等。每个资源节点可以通过一组节点属性来表征,这些节点属性可以包括中央处理器(central processing unit,CPU)内核电压值(称为“vcore值”)、内存值等。
计算机集群和云计算平台的众多用户发送用于在计算机集群或云计算平台中的一组资源节点上执行的计算机作业。计算机作业通常争用计算机集群或云计算平台的可用资源节点。每个计算机作业可以包括一个或多个任务。为了将可用资源节点分配给任务,可能需要考虑任务中提供的各种需求以及各种资源调度方法。
任务可以指定不同的资源需求。例如,一个任务可以将期望的资源需求指定为资源节点的vcore值和内存值。该任务还可以指定局部性约束,该局部性约束标识可以执行该任务的一组“候选节点”。此外,在将可用资源节点分配给任务时,资源管理器可能需要考虑各种附加的优化准则,例如:调度吞吐量、总体利用率、公平性和/或负载均衡。
因此,资源管理器需要根据资源节点的可用性、众多节点属性以及众多需求和约束,高效地将计算机作业中包含的任务分配给资源节点。用于对计算机作业的任务进行资源调度的传统系统和方法实现得很简单,因此,传统系统和方法对计算机作业的任务执行的资源调度可能很耗时。例如,为了给单个任务选择资源节点,调度延迟可能是|N|阶(称为“O(|N|)”),其中,N是计算机集群或云计算平台中的资源节点的集合,|N|表示计算机集群或云计算平台中的资源节点的总数。
发明内容
本发明的目的在于提供用于对计算机集群或云计算平台的资源节点执行资源调度的方法和装置,以克服现有技术的不便。
本文所描述的用于对计算机集群或云计算平台的资源节点执行资源调度的装置和方法可以有助于改进对计算机集群或云计算平台的资源节点执行的资源调度,以便高效地为计算机作业中包含的任务分配资源节点。本文所描述的方法和系统可以有助于高效地从资源节点池中为接收的一组计算机作业任务中的每个任务选择资源节点。本技术考虑的因素包括所述资源节点的可用性、各种节点属性和在所述任务中接收的各种规范。为了本发明的目的,任务是计算机作业的资源请求单元。
根据本发明的目的,本发明的一个方面提供了一种方法,所述方法包括:接收节点集中的节点的节点标识符,并接收所述节点标识符中的每一个的节点属性的值;从客户端设备接收任务,所述任务指定任务参数的值;生成节点图结构,所述节点图结构具有包括至少一个节点标识符的至少一个节点图结构顶点,所述至少一个节点图结构顶点映射到坐标空间,所述至少一个节点标识符中的每一个使用所述节点属性的所述值映射到所述坐标空间以确定节点坐标;通过使用所述任务参数的所述值将所述任务映射到所述坐标空间以确定任务坐标;通过分析位于所述任务的适合区域内的所述至少一个节点图结构顶点,确定第一节点的第一节点标识符,所述适合区域在所述坐标空间中具有大于等于每个任务坐标的坐标;将所述第一节点标识符映射到所述任务以生成调度方案;将所述调度方案传输到调度引擎,以调度所述任务在所述第一节点上执行。
确定所述第一节点标识符还可以包括:确定所述第一节点标识符是否映射到所述至少一个节点图结构顶点。
所述任务可以指定至少一个候选节点标识符。确定所述第一节点标识符还可以包括:确定所述第一节点标识符是否与所述至少一个候选节点标识符中的一个相同。
在至少一个实施例中,所述方法还可以包括:根据随所述任务接收的节点属性偏好确定分析所述节点图结构顶点的顺序。
在至少一个实施例中,所述方法还可以包括:根据资源调度策略确定分析所述节点图结构顶点的顺序,所述资源调度策略为LeastFit调度策略、BestFit调度策略、随机调度策略和具有预留的LeastFit调度策略中的一种。
在一些实施例中,所述节点图结构具有至少两个节点图结构顶点映射到所述坐标空间的不同子空间。分析所述至少两个节点图结构顶点可以从位于所述任务的所述适合区域内且在所述坐标空间的至少一个维度中具有最大坐标的节点图结构顶点开始。换言之,遍历所述节点图结构以确定所述第一节点标识符可以从位于所述任务的适合区域内且在所述任务的所述适合区域内具有最大坐标的节点图结构顶点开始。在一些实施例中,所述节点图结构可以是节点树图结构。在一些实施例中,所述遍历可以从所述节点树结构的根节点开始。
分析所述至少两个节点图结构顶点可以从位于所述任务的适合区域内且在所述坐标空间的至少一个维度中具有最小坐标的节点图结构顶点开始。换言之,遍历所述节点图结构以确定所述第一节点标识符可以从位于所述任务的适合区域内且具有最小坐标的节点图结构顶点开始。
所述任务参数的所述值可以包括中央处理器(central processing unit,CPU)内核电压值、内存值、内存输入/输出带宽和网络参数值中的至少两个。
为了确定所述节点坐标和所述任务坐标,可以将所述节点属性的所述值中的至少一个和所述任务参数的所述值中的至少一个除以粒度参数。
所述节点中的每一个的所述节点坐标可以通过进一步使用所述节点中的每一个的所述任务的预留数据和其它任务的预留数据来确定。所述节点中的每一个的所述节点坐标可以取决于所述节点中的每一个的所述任务的所述预留数据和其它任务的所述预留数据。
将所述节点和所述至少一个节点图结构顶点映射到所述坐标系还可以包括:从所述节点坐标中扣除针对每个节点属性为其它任务预留的资源量。
确定所述第一节点标识符还可以包括:确定所述第一节点是否匹配至少一个搜索准则。
根据本发明的其它方面,提供了一种用于资源调度的装置。所述装置包括:处理器;存储器,用于存储指令,当所述指令由所述处理器执行时,使得所述装置:接收节点集中的节点的节点标识符,并接收所述节点标识符中的每一个的节点属性的值;从客户端设备接收任务,所述任务指定任务参数的值;生成节点图结构,所述节点图结构具有包括至少一个节点标识符的至少一个节点图结构顶点,所述至少一个节点图结构顶点映射到坐标空间,所述至少一个节点标识符中的每一个使用所述节点属性的所述值映射到所述坐标空间以确定节点坐标;通过使用所述任务参数的所述值将所述任务映射到所述坐标空间以确定任务坐标;通过分析位于所述任务的适合区域内的所述至少一个节点图结构顶点,确定第一节点的第一节点标识符,所述适合区域在所述坐标空间中具有大于等于每个任务坐标的坐标;将所述第一节点标识符映射到所述任务以生成调度方案;将所述调度方案传输到调度引擎,以调度所述任务在所述第一节点上执行。
确定所述第一节点标识符时,所述处理器还可以用于:确定所述第一节点标识符是否映射到所述至少一个节点图结构顶点。
所述任务可以指定至少一个候选节点标识符;确定所述第一节点标识符时,所述处理器还可以用于:确定所述第一节点标识符是否与所述至少一个候选节点标识符中的一个相同。
所述处理器还可以用于:根据随所述任务接收的节点属性偏好确定分析所述节点图结构顶点的顺序。
所述处理器还可以用于:根据资源调度策略确定分析所述节点图结构顶点的顺序,所述资源调度策略为LeastFit调度策略、BestFit调度策略、随机调度策略和LeastFitwith Reservation调度策略中的一种。
所述节点图结构可以具有至少两个节点图结构顶点映射到所述坐标空间的不同子空间,并且所述处理器可以用于从位于所述任务的所述适合区域内且在所述坐标空间的至少一个维度中具有最大坐标的节点图结构顶点开始分析所述至少两个节点图结构顶点。在一些实施例中,所述节点图结构可以是节点树图结构。在一些实施例中,所述遍历可以从所述节点树结构的根节点开始。
所述节点图结构可以具有至少两个节点图结构顶点映射到所述坐标空间的不同子空间,并且所述处理器可以用于从位于所述任务的适合区域内且在所述坐标空间的至少一个维度中具有最小坐标的节点图结构顶点开始分析所述至少两个节点图结构顶点。
为了确定所述节点坐标和所述任务坐标,可以将所述节点属性的所述值中的至少一个和所述任务参数的所述值中的至少一个除以粒度参数。所述节点中的每一个的所述节点坐标可以通过进一步使用所述节点中的每一个的所述任务的预留数据和其它任务的预留数据来确定。将所述节点和相应的至少一个节点图结构顶点映射到所述坐标系时,所述处理器还可以用于:从所述节点坐标中扣除针对每个节点属性为其它任务预留的资源量。确定所述第一节点标识符时,所述处理器还可以用于:确定所述第一节点是否匹配至少一个搜索准则。
根据本发明的其它方面,提供了一种方法,所述方法包括:接收节点集中的节点的节点标识符,并接收所述节点标识符中的每一个的节点属性的值;接收一系列任务,每个任务指定任务参数的值;生成节点图结构,所述节点图结构具有至少一个节点图结构顶点,所述至少一个节点图结构顶点映射到坐标空间;将每个任务映射到所述坐标空间;通过分析位于每个任务的适合区域内的所述至少一个节点图结构顶点,确定第一节点的第一节点标识符;将所述第一节点标识符映射到每个任务以生成调度方案。
本发明各实现方式均具有上述目的和/或方面中的至少一个,但不一定具有所有这些目的和/或方面。应理解,由于试图实现上述目的而提出的本发明的一些方面可能不满足此目的和/或可能满足本文未具体叙述的其它目的。
通过以下描述、附图和所附权利要求书,本发明各实现方式的附加和/或替代特征、方面和优点是显而易见的。
附图说明
结合附图,通过以下详细描述,本发明的特征和优点是显而易见的,在附图中:
图1示出了适于实现本技术的非限制性实施例的装置的示意图;
图2示出了本技术的非限制性实施例提供的资源调度例程和由该资源调度例程生成的调度方案;
图3描绘了本技术的非限制性实施例提供的坐标空间的非限制性示例,其中DistBuckets实例映射到该坐标空间;
图4A至图4P示出了本发明各实施例提供的使用LeastFit调度策略的资源调度方法的几个实现步骤;
图5A至图5P示出了本发明各实施例提供的使用BestFit调度策略的资源调度方法的各个执行步骤;
图6A至图6H示出了本发明各实施例提供的使用LeastFit调度策略和粒度的资源调度方法的各个执行步骤;
图7示出了本发明各实施例提供的资源调度方法的流程图。
应当理解,在整个附图和对应的描述中,相似的特征由相同的附图标记标识。此外,还应当理解,附图和随后的描述仅用于说明性目的,并且此类公开不限制权利要求的范围。
具体实施方式
本发明旨在解决当前技术的至少一些缺陷。具体地,本发明描述了使用索引数据结构(在本文中称为“DistBuckets结构”)进行资源调度的方法和系统。本文中描述的方法和结构将可用资源节点映射到DistBuckets结构。
使用本文中描述的方法和结构可以有助于加速各种资源调度策略的实现。例如,此类资源调度策略可以是LeastFit调度策略、BestFit调度策略、随机调度策略、具有预留的LeastFit调度策略及其组合。本文中描述的方法和结构还可以加速各种基本操作的执行,例如查找、插入和删除。DistBuckets结构可以考虑各种节点属性,例如vcore和内存。在许多情况下,为一个任务调度一个节点的运行时成本为O(1)。
本文中提及的术语“计算机集群”是指一组松散耦合的计算机,它们通过协同工作执行从多个用户接收的作业或计算机作业任务。所述集群可以位于数据中心内,也可以跨多个数据中心部署。
本文中提及的术语“云计算平台”是指一组松散耦合的虚拟机,它们通过协同工作执行从多个用户接收的计算机作业或包含在计算机作业中的任务。云计算平台可以位于数据中心内,也可以跨多个数据中心部署。
本文中提及的术语“用户”和“客户端设备”是指可以请求执行计算机作业并向调度引擎发送包含在计算机作业中的任务的电子设备。
本文中使用的术语“公共函数”是指可以在其所属的索引数据结构(例如,本文中所述的DistBuckets结构)内部和外部使用的函数。
本文中提及的术语“资源节点”(也称为“节点”)是指资源实体,例如计算机集群中的计算机或云计算平台中的虚拟机。每个资源节点具有唯一的节点标识符(在本文中也称为“节点ID”)。每个资源节点可以通过节点属性的值来表征,例如:中央处理器(centralprocessing unit,CPU)内核电压值(称为“vcore值”)、内存值、可以永久存储数据的任何类型内存的内存输入/输出带宽(换言之,可以从内存中检索多少数据以及检索这些数据的速度有多快)、网络参数值、图形处理器(graphics processing unit,GPU)参数值,例如电压值和时钟速度值。资源节点还可以通过其可用性来表征:资源节点可以是可用的,也可以是已完全或部分预留的。
本文中提及的“计算机作业”(也称为“作业”)可以在位于计算机集群或云计算平台中的一个节点或一组节点中执行。术语“任务”在本文中是指作业的资源请求单元。每个作业可以包括一个任务或多个任务。一个任务只能在一个节点上执行。作业可以具有可以在不同节点上执行的各种不同任务。
执行时,任务需要消耗一定量的资源。调度引擎接收的任务可以根据可以执行该任务的资源节点的节点属性指定相对应的一个或多个任务参数。例如,一个任务可以指定它可以在具有2个vcore和16千兆(gigabit,GB)内存的节点上执行。此外,每个任务还可以指定“局部性约束”。本文中提及的术语“局部性约束”是指可以执行任务的一个节点或一组节点。
在谈及分析节点图结构顶点、节点树结构的根节点、节点树结构(的根节点)的子节点以及节点树结构的叶节点时,本文中提及的术语“分析”、“探索”、“访问”在本文中可以互换使用。分析节点图结构顶点、节点树结构的根节点、节点树结构(的根节点)的子节点以及节点树结构的叶节点包括:对节点图结构顶点、节点树结构的根节点、节点树结构(的根节点)的子节点以及节点树结构的叶节点分别进行访问、内容读取和内容使用。
在谈及分析节点图结构和节点树结构时,本文中提及的术语“分析”和“遍历”在本文中可以互换使用。分析和称为“遍历”节点图结构是指对节点图结构的节点图结构顶点进行分析(或采用其它术语,访问或探索)的过程。分析和称为“遍历”节点树结构是指对节点树结构的根节点、子节点和叶节点进行分析(或采用其它术语,访问或探索)的过程。
图1示出了适于实现本技术的非限制性实施例的装置100的示意图。装置100包括处理器137和存储器(未示出)。装置100的所述存储器存储可由处理器137执行的指令。可由处理器137执行的所述指令可以存储在位于装置100中的非瞬时性存储介质(未示出)中。所述指令包括资源管理器(resource manager,RM)130的指令。
图1还示出了运行计算机应用(未示出)的客户端设备120。所述计算机应用向装置100发送任务125。当RM 130的所述指令由所述装置的处理器137执行时,使得RM 130将从客户端设备120接收的任务125分配给节点110。
RM 130还包括调度引擎135。调度引擎135包括可由装置100的处理器137执行的指令,以执行本文描述的各种方法。
装置100还可以包括数据库140。数据库140可以存储数据,所述数据可以包括本文描述的各种参数等。
当RM 130的指令由处理器137执行时,RM 130从客户端设备120接收任务125,从节点110和/或从其它源(未示出)接收节点数据115。节点数据115包括一组节点ID和其它数据,例如节点属性,如下所述。RM 130将任务125分配给节点110。
本文描述的方法可以由调度引擎135的资源调度例程(resource schedulingroutine,RSR)160执行。
图2示出了本技术的各种实施例提供的RSR 160和由RSR 160生成的调度方案150。RSR 160根据接收到的节点数据115和任务125生成调度方案150。调度方案150将每个任务(在调度方案150中描绘为t1、t2等)映射到一个节点(在调度方案150中描绘为n1、n2等),同时满足下文所述的各种准则。在本文中,调度方案150在表1和表10的伪码中也称为调度方案“A”。
除了每个节点ID之外,RSR 160接收的节点数据115还包括对应于节点110中的每一个的所述节点属性的值。
RSR 160接收的所述节点属性指定所述对应节点的可用节点属性的最大值。当所述节点由RSR 160分配时,不能超过所述可用节点属性的所述最大值。例如,如果所述节点属性中的一个(例如内存)指定为2GB,则分配的任务在其中执行时使用的内存不能超过2GB。
在本文中,节点属性的数量也称为“资源维度的数量”。资源维度的数量确定资源节点可以映射到的坐标空间的维度的数量,如下所述。在本文中的表1和表10中呈现的伪码中,D是资源维度的数量。
在本文中的表1至表4、表7和表8、表10中呈现的伪码中,R是将每个节点n∈N映射为其以D维向量R(n)表示的可用性的资源函数。Rd(n)是R(n)的第d个条目。Rd(n)表示资源n在第d个维度上的可用性。换言之,Rd(n)是指资源n针对为节点n指定的多个节点属性的第d个节点属性的可用性。例如,如果vcore和内存分别是第一维度和第二维度(或换言之,节点属性),那么R1(n)和R2(n)是节点n的可用vcore和内存。
RSR 160接收的每个任务都指定任务ID(在本文呈现的伪码中称为id)和任务参数的值。在本文呈现的伪码中,任务表示为t。任务ID是指唯一的任务标识符。
任务参数对应于节点属性,例如可以是:vcore值、内存值、可以永久存储数据的任何类型内存的内存输入/输出带宽(换言之,可以从内存中检索多少数据以及检索这些数据的速度有多快)、网络参数值和GPU参数值,例如电压值和时钟速度值。
RM 130接收并因此由RSR 160接收的任务参数的值指定执行相应任务所需的资源节点的期望节点属性。该组任务参数也可以称为相应任务的“可用性约束”。
在本文中的表1至表4、表7、表10中呈现的伪码中,Q是将每个任务t∈T映射到其以D维向量Q(t)表示的请求资源的请求函数。Qd(t)是Q(t)的第d个条目。Qd(t)表示第d个维度上的请求资源。换言之,Qd(t)是指任务t请求的第d个任务参数。如果vcore和内存分别是第一维度和第二维度,那么Q1(n)和Q2(n)是任务t的请求vcore和内存。
RSR 160也可以接收搜索准则。例如,RSR 160接收的搜索准则可以是优化目标,例如最大完工时间(换言之,完成一组任务中的所有任务的执行所花费的总时间)、调度吞吐量(换言之,每时间单位内完成的总工作量)、资源节点的总体利用率、公平性(换言之,每个任务的CPU时间相等,或者根据每个任务的优先级和工作量分配适当的时间)和负载均衡(换言之,在资源节点之间高效和/或均匀地分配任务)。搜索准则可以从调度引擎135接收。搜索准则可以是调度引擎135的参数,可以取决于所述调度引擎的配置和/或可以由系统管理员设置。
除了任务参数之外,RSR 160还可以随每个任务接收一组候选节点。所述一组候选节点指定可用于容纳所述任务的一组节点及其对应的候选节点标识符。所述一组候选节点也可以称为相应任务的“局部性约束”。
在本文中的表1、表2、表4、表9、表10中呈现的伪码中,L是将每个任务t∈T映射到其候选节点集
Figure BDA0003665812070000071
(可以调度任务t的节点的子集)的局部性函数。
另参考图1,为了将节点110调度到任务115,首先需要根据各种比较规则对节点110进行排序,然后根据可用性约束和局部性约束来选择节点110。
Figure BDA0003665812070000072
表1示出了本发明各实施例提供的用于实现顺序资源调度例程(sequentialresource scheduling routine,SeqRSR)的伪码。SeqRSR是RSR 160实现的非限制性示例。
RSR 160接收以下各项作为输入:资源维度的数量D、一组节点N、一系列任务T、资源函数R、请求函数Q和局部性函数L。在一些实施例中,一系列任务T中的任务t的序号越小可以指示在调度中的优先级越高。
RSR 160接收资源函数R,资源函数R将每个节点n∈N映射到其以D维向量
Figure BDA0003665812070000073
表示的可用性。RSR 160还接收请求函数Q,请求函数Q将每个任务t∈T映射到其以D维向量
Figure BDA0003665812070000074
表示的请求资源。RSR 160还接收局部性函数L,局部性函数L将每个任务t∈T映射到其候选节点子集
Figure BDA0003665812070000075
其中候选节点子集
Figure BDA0003665812070000076
可以调度任务t。
在表1中,第1行以空调度方案A开始。在第2行,执行初始化。当执行表1的第3行至第6行时,RSR 160通过按顺序迭代所有任务来构建调度方案A。
在每一次迭代时,对于一系列任务T中的每个任务t,RSR 160尝试确定匹配节点n。匹配节点n是一组节点N中满足任务t的可用性约束的节点。任务t的可用性约束意味着在任一节点上调度的任务t不超过该节点针对所有任务参数的可用性。
在一些实施例中,任务t可以请求匹配节点n也满足局部性约束。局部性约束意味着每个任务t∈T的选定节点是任务t中指定的候选节点集L(t)中的节点之一,如果候选节点集L(t)不是该任务的NIL。
在表1的第4行,RSR 160调用函数schedule()来为任务t调度节点n。在第5行,将新的任务节点对<t,n>添加到调度方案A。在第6行处,RSR 160更新相关数据结构。
RSR 160将函数schedule()、initialize()和update()声明为虚函数。这些函数可以由具有特定调度策略的特定资源调度进程覆盖。
表1中的函数schedule(t)负责选择节点n∈N来调度任务t∈T。函数schedule(t)的简单实现(例如传统实现)可能必须扫描整个节点集N来调度单个任务。这很耗时,尤其是因为触发函数schedule(t)的次数对应于一系列任务T中的任务总数。
在本发明的至少一个实施例中,当执行表1中的函数schedule(t)时,RSR 160确定节点集N的适合节点。所述适合节点是满足给定任务t的可用性约束的节点。在一些实施例中,所述适合节点也满足给定任务t的局部性约束。
函数schedule(t)的实现依赖于相应任务t中请求的资源调度策略。所述资源调度策略可以由系统管理员定义。资源调度策略可以从现有技术中采用,例如:LeastFit调度策略、BestFit调度策略、FirstFit调度策略、NextFit调度策略或随机调度策略。为了将任务映射到节点,其中一个调度策略在所述适合节点中选择所述节点。
LeastFit调度策略将任务t调度(映射)到所有适合节点中可用性最高的节点。在一个节点调度一个任务后,下一个任务可以使用该节点的剩余资源。使用LeastFit调度策略可以促使所有节点之间的负载均衡。
BestFit调度策略将任务t调度到适合节点中可用性最低的节点。BestFit用于查找可用性尽可能接近任务t的实际请求的节点。
FirstFit调度策略将任务t调度到在基于迭代的搜索中找到的第一个适合节点n。
NextFit调度策略是FirstFit的变体。NextFit从FirstFit开始以查找适合节点,但是,当为下一个任务调用时,NextFit从它在上一个任务中停止的位置开始搜索,而不是从所有节点列表的开头开始搜索。
随机调度策略将任务t随机调度到适合节点n。
在本技术的至少一个实施例中,RSR 160中的schedule(t)函数生成并执行索引数据结构,在本文中索引数据结构称为分布式桶(distributed buckets,DistBuckets)结构。
Figure BDA0003665812070000091
表2描述了本发明各实施例提供的伪码中的DistBuckets结构的DistBuckets子例程(在本文中也称为“函数”)和DistBuckets成员字段。
表2的DistBuckets结构是索引数据结构。DistBuckets结构在此按照面向对象的设计原则进行描述。DistBuckets结构也可以称为“DistBuckets类”。DistBuckets结构可以通过高效的重用实现RSR 160的各种函数。
在本技术的一些实施例中,一组DistBuckets实例具有图层次结构。每个DistBuckets实例B可以是DistBuckets结构的顶点。在一些实施例中,DistBuckets结构可以具有树层次结构,其中,DistBuckets实例B是DistBuckets结构的根实例、子实例和叶实例。DistBuckets结构的根实例在本文中称为“根DistBuckets实例”。DistBuckets结构的根实例的子实例在本文中称为“子DistBuckets实例”。DistBuckets结构的叶实例在本文中称为“叶DistBuckets实例”。表2中的DistBuckets结构有五个公共成员函数:三个基本(也称为“基础”)函数和两个辅助函数。三个基本函数是add()函数、remove()函数和getNodeCoord()函数。DistBuckets结构还有三个成员字段。
DistBuckets函数可以作为公共函数执行,因此DistBuckets函数可以在DistBuckets结构的内部和外部使用。
每个DistBuckets结构B包括一组节点。DistBuckets结构的函数add(n)通过将节点n添加到DistBuckets实例B来更新DistBuckets实例B的元素。DistBuckets结构的函数remove(n)通过从DistBuckets实例B移除节点n来更新DistBuckets实例B的元素。
RSR 160将每个DistBuckets实例B映射到特定坐标向量,因此映射到多维坐标空间的特定子空间。RSR 160还根据节点属性的值并通过使用索引将接收的节点集的节点ID中的每一个映射到一个或多个DistBuckets实例。这种多维索引可以有助于提高搜索与接收的任务匹配的节点的速度。
图3描绘了本技术的非限制性实施例提供的坐标空间300的非限制性示例,其中17个DistBuckets实例映射到坐标空间300。
如上所述,可能有许多节点属性和许多任务参数。在本文的图3至图6K中提供的非限制性示例中,节点属性为节点vcore值和节点内存值。类似地,在本文的图3至图6K中提供的非限制性示例中,任务参数为任务vcore值和任务内存值。应理解,本文描述的技术可以应用于任意数量的节点属性和任务参数,因此可以使用任意维数的坐标空间。
表2的DistBuckets结构用于将每个节点并因此将节点ID映射到坐标空间300中的坐标。表2的DistBuckets结构的函数使用节点属性的值作为节点坐标,对节点标识符在坐标空间中的位置进行唯一确定。
坐标空间的维数可以由RM 130接收的节点数据115中的节点属性的数量定义。DistBuckets结构的维数可以对应于接收的节点数据中的节点属性的数量和/或接收的任务数据中的任务参数的数量。
参考图3,坐标空间300的每个维度对应一个节点属性。坐标空间300的维度为:vcore数和内存。
节点在二维坐标空间300中的位置由节点坐标(v,m)定义,其中,“v”对应于vcore数,“m”对应于该节点的内存量。
两个或多个节点可以具有相同的节点可用性,因此可以映射到坐标空间300中的相同位置。每个DistBuckets实例310可以包括节点,其节点属性对应于DistBuckets实例310的坐标(v,m):v个vcore和m内存。
一个非限制性示例是,RM 130接收节点数据,该节点数据包括节点ID和节点集320的节点属性的对应值。图3所示的节点集320可以描述如下:
N={a(4V,4G),b(4V,2G),c(3V,5G),d(3V,5G),
e(6V,1G),f(4V,1G),g(3V,3G),h(6V,3G),
p(6V,4G),q(1V,3G),u(5V,5G),v(5V,2G)}, (1)
其中,每个节点具有节点ID,后跟表示相应节点在两个维度上的可用性的值:两个节点属性(例如vcore和内存)的值。
例如,名称“b(4V,2G)”是指具有节点ID“b”、4个vcore和2GB可用内存的节点。
RSR 160用于使用节点属性的值将接收的节点集的节点ID映射到坐标空间300,以确定在坐标空间300中的节点坐标。
在图3中,节点c和d(表示为{c、d})具有属性(3V,5G),RSR 160可以确定节点c和d在坐标空间300中具有坐标(3,5)。RSR 160用于将节点c和d映射到具有坐标(3V,5G)的DistBuckets实例311,因为节点c和节点d均具有3个vcore和5GB内存。
参考表2,表2中的第29行至第31行显示每个DistBuckets实例B具有三个成员字段。表2中DistBuckets结构的成员字段B.x是指DistBuckets实例B的坐标向量,定义多维坐标空间中的子空间。每个坐标向量包括一组坐标。例如,在图3中,坐标为(3,5)的DistBuckets实例对应于二维坐标空间300中具有单个坐标向量(3,5)的子空间。
应理解,坐标空间300中的“子空间”可以为坐标空间300中的某个位置,也可以包括坐标空间300的坐标范围内的多个位置。例如,坐标空间300的子空间可以包括坐标空间300中具有坐标向量{(6,1),(6,2),(6,3),(6,4),…}的位置。
参考图3和表2,根据节点n的可用性R(n),RSR 160使用函数getNodeCoord(n)将节点n映射到位于多维坐标空间中坐标为x(n)的DistBuckets实例。图3描绘了多维坐标空间的非限制性示例,例如二维坐标空间300。在图3中,节点b(4V,2G)的节点坐标为x(b)=R(b)=(4,2)。
在表2中,DistBuckets结构的成员字段B.elements表示DistBuckets实例B的一组节点。属于B.elements的每个节点n(换言之,n∈B.elements)可以在B.x定义的子空间中具有节点坐标x(n)。在图3中,坐标为(3,5)的DistBuckets实例包括节点{c、d},因为c(3V,5G)和d(3V,5G)具有相同的节点坐标x(c)=x(d)=(3,5)。
表2中的成员字段B.children包括作为DistBuckets实例B的子实例的DistBuckets实例的列表。DistBuckets实例的字段“children”共同定义DistBuckets实例的层次结构,该层次结构具有从一般到特定的顺序。
在表2中,坐标x为D维向量。x的第d个条目(用xd表示)可以是整数,也可以是通配符“*”。通配符“*”表示第d维中所有可能的整数,其中,d是整数且d∈[1,D]。B.x的坐标向量可以通过分拆索引l分为两部分,其中,l是整数且l∈[0,D],使得B.x的前l个值为整数,而其它(D-l)个值为通配符“*”:
x=(x1,···,xl,xl+1,···,xD)=(x1,···,xl,*,···,*) (3)
换言之,当d≤l时xd≠“*”,当d>l时xd=“*”。
例如,坐标向量(5,27,*,*)是维度D=4且分拆索引l=2的坐标向量。如果l=D,则坐标向量x没有通配符“*”,B是叶DistBuckets实例,B.x是叶坐标向量。
如果l<D,则坐标向量x至少有一个通配符“*”,B.x是非叶坐标向量,B是非叶DistBuckets实例。
如果l=0,则坐标向量中的坐标可以全部用通配符“*”表示,B是根DistBuckets实例,B.x是根坐标向量。
在图3中,坐标空间300包括12个节点,这些节点映射到vcore和内存两个维度中的17个DistBuckets实例。每个DistBuckets实例B描绘为矩形(如果DistBuckets实例B是非叶实例)或圆形(如果DistBuckets实例B是叶实例)。
在图3中,B.x和B.elements描绘在每个DistBuckets实例B的矩形和圆形内。箭头表示不同DistBuckets实例之间的子父关系:如果B→B′,则B′是B的子实例,即B′∈B.children。
具有叶坐标向量的叶DistBuckets实例可以映射到多维坐标空间中的位置,每个B.x可以将多维坐标空间中的子空间定义为叶坐标的非空集。如果B.x为叶坐标向量,则叶DistBuckets实例B的子空间为{B.x},其中,{B.x}为包括单个叶坐标B.x的坐标集。
在图3中,例如,具有坐标(6,4)的子空间为{(6,4)}。如果B.x为非叶坐标向量,则DistBuckets实例B的子空间对应于许多叶坐标的集合。DistBuckets实例B 335具有坐标向量(6,*)时,其子空间包括以下坐标:{(6,0),(6,1),(6,2),(6,3),(6,4),(6,5),...}。
如果DistBuckets实例B为根DistBuckets实例330并且B.x为根坐标向量,则DistBuckets实例B 330的子空间对应于具有所有可能叶坐标向量的整个DistBuckets空间。要将集合运算符应用于坐标,可以将每个坐标隐式转换为其在多维坐标空间300中的对应子空间,例如,
Figure BDA0003665812070000121
每个DistBuckets实例B包括元素B.elements,它们是节点集N中节点坐标向量等于DistBuckets实例坐标向量的节点的子集。字段B.elements可以表示如下:
Figure BDA0003665812070000122
其中,x(n)表示函数getNodeCoord(n)返回的节点n的节点坐标。
成员字段B.elements和B.x紧密联系:
Figure BDA0003665812070000123
在图3中,坐标向量为(3,5)的DistBuckets实例具有B.elements{c、d}。坐标向量为(3,*)的DistBuckets实例具有B.elements{c、d、g}。如果第一DistBuckets实例的坐标向量是第二DistBuckets实例的坐标向量之一,则第二DistBuckets实例在其B.elements字段中包括第一DistBuckets实例的B.elements字段中的所有节点。换言之,可以写成
Figure BDA0003665812070000124
Figure BDA0003665812070000125
DistBuckets结构通过字段children对不同DistBuckets实例的从一般到特定的顺序进行递归定义。每个DistBuckets实例B可以包括表示为“B.children”的children字段。每个B.children字段包括DistBuckets实例的children列表。第一DistBuckets实例的每个子实例可以映射到具有坐标向量的子空间,其中该坐标向量比所述第一DistBuckets实例的坐标向量具有更少的通配符“*”。如果DistBuckets实例B为叶实例,则B.children=NIL。
如果DistBuckets实例B为非叶实例,则DistBuckets实例B的第i个子实例可以表示为B.children[i]或B[i]。假设字段B.x有l个整数值,则每个子B[i].x有(l+1)个整数值:B[i].x的前l个值与B.x相同,B[i].x的第(l+1)个值为i,使得:
B.x=(x1,...,xl,*,...,*),
B[i].x=(x1,...,xl,i,*,...,*)。 (6)
可以说B比B[i]更一般,或者说B[i]比B更特定。用集合运算符描述DistBuckets实例之间的关系,例如,可以写成
Figure BDA0003665812070000131
Figure BDA0003665812070000132
在图3中,各种坐标和对应的DistBuckets实例组织在分层树中,该分层树有3层。箭头示出了由children定义的从一般到特定的分层关系,箭头指向更不一般(即,更特定)的DistBuckets实例。
在图3中,坐标向量为(*,*)的根DistBuckets实例330具有5个子DistBuckets实例335,其坐标向量为{(1,*),(3,*),(4,*),(5,*),(6,*)}。(5,*)处的DistBuckets实例310有两个子实例:叶DistBuckets实例311、313。叶DistBuckets实例311、313的坐标向量分别为{(5,2),(5,5)}。
在图3中,有6×6=36个叶坐标。11个叶坐标映射到11个非空DistBuckets实例,例如,坐标向量为(3,5)的叶DistBuckets实例311。
对于每个DistBuckets实例B,不同的子实例总是不相交的,并且所有子实例的并集等于父实例。
Figure BDA0003665812070000133
B.x=∪iB[i].x (8)
Figure BDA0003665812070000134
B.elements=∪iB[i].elements (10)
在图3中,坐标向量为(*,*)的根DistBuckets实例330包括N中的所有节点:根DistBuckets实例330的子实例在它们的elements字段中没有任何公共节点,并且所有子实例的元素的并集产生完整节点集N。
参考表2,函数B.getNodeCoord(n)确定节点n的节点坐标向量x(n),默认返回节点n的可用性R(n)。应理解,节点坐标向量包括一组节点坐标。
函数B.add(n)将节点n添加到DistBuckets实例B。在表2的第2行,RSR 160确定节点n的节点坐标向量x(n)。如果节点坐标向量x(n)等于DistBuckets实例坐标向量B.x(换言之,如果x(n)=B.x),则RSR 160确定DistBuckets实例B是叶DistBuckets实例,并且只需将n添加到其自己的元素(表2的第3行和第4行)。
如果节点坐标向量x(n)是DistBuckets实例坐标向量
Figure BDA0003665812070000135
中的一个,则RSR160确定DistBuckets实例B是非叶DistBuckets实例,并且可以将n添加到B并递归调用B[i].add(n),其中,
Figure BDA0003665812070000136
(表2的第5行至第8行)。一个且只有一个子B[i]具有节点n,因为等式(5)表明B的不同子是不相交的。
在图3中,在根DistBuckets实例330对节点b(4V,2G)调用add()函数后,RSR 160将节点b映射到坐标向量为(*,*)、(4,*)和(4,2)的DistBuckets实例。
当RSR 160执行表2中的函数B.remove(n)时,RSR 160从DistBuckets实例B移除节点n。函数B.remove(n)可以具有类似于函数B.add(n)的代码逻辑。当执行函数B.remove(n)时,RSR 160递归地从DistBuckets实例的B.elements字段和子B[i]的elements字段中移除节点n(而不是添加n)。
DistBuckets结构的两个辅助成员函数为:getTaskCoord()和fits()。两个辅助成员函数都可以提供每次调用O(1)运行时成本。
函数B.getTaskCoord(t)确定任务t的叶任务坐标向量x(t),默认返回任务t的请求向量Q(t)。
函数B.fits(t)确定DistBuckets实例B是否适合任务t。表2的第25行和第26行表明,当由RSR 160执行时,如果满足以下两个条件,函数B.fits(t)可以返回“true”:(1)
Figure BDA0003665812070000141
且(2)
Figure BDA0003665812070000142
换言之,如果(1)任务坐标向量是至少一个DistBuckets实例坐标向量中的一个,且如果DistBuckets实例B的字段B.elements的至少一个节点ID与任务t接收的候选标识符中的一个相同,则RSR 160可以确定DistBuckets实例B适合任务t。在一些实施例中,函数B.fits(t)可以仅根据可用性约束(即,
Figure BDA0003665812070000143
)返回“true”,而不考虑局部性约束(
Figure BDA0003665812070000144
)。
如果B.fits(t)返回“true”,则DistBuckets实例B可以称为“适合t的DistBuckets实例”。如果DistBuckets实例B适合任务t,则调度引擎可以将任务t调度到B.elements的一个节点。即使DistBuckets实例B可能适合t,DistBuckets实例B在B.elements中可能仍然没有匹配的节点标识符来调度任务t。
虽然实现DistBuckets结构的方法有很多种,但表2中列出的每个函数,例如add(n)、remove(n)、getNodeCoord(n)、getTaskCoord(t)、fits(t)可以具有恒定的每次调用运行时。换言之,表2中列出的每个函数可以具有O(1)阶的每次调用运行时。
参考图3,二维坐标空间300具有vcore坐标和内存坐标。坐标空间300的大小可以描述为Vmax×Mmax。Vmax和Mmax分别表示一个节点的最大可能vcore值和最大可能内存值。每个坐标空间300可以存储节点集N中的节点标识符的子集。这种实现可能需要给内存预先分配Vmax、Mmax,以及每个附加节点属性的其它最大值。
RSR 160还包括全局变量
Figure BDA0003665812070000145
所述全局变量
Figure BDA0003665812070000146
是根坐标(*,…,*)处的DistBuckets实例。
表3描述了本发明的至少一个实施例提供的用于初始化和更新RSR 160的全局变量
Figure BDA00036658120700001412
的伪码中的函数。
当RSR 160启动时,如果DistBuckets结构具有树层次结构,则变量初始化函数initialize()初始化对应于根DistBuckets实例330的全局变量
Figure BDA0003665812070000147
或者,如果DistBuckets实例不形成树结构,则更一般的表示可以是图结构。所述图结构可以表示为G=(V,E),其中,G是所述图结构,V是图结构顶点的集合,E是图结构边的集合。
节点集N中的所有节点都添加到全局变量
Figure BDA0003665812070000148
表3中的变量更新函数update()根据每个调度结果(t,n)更新全局变量
Figure BDA0003665812070000149
当在节点n调度任务t时,RSR 160执行表3的第7行,并从全局变量
Figure BDA00036658120700001410
中移除节点n。在表3的第8行处,RSR 160调整节点n的可用性,在第9行处,节点n可以再次添加到全局变量
Figure BDA00036658120700001411
为了支持恒定数量的DistBuckets实例,使用多项式空间即可。函数initialize()的运行时间可以是O(|N|)阶。在RSR的整个执行过程中,所有update()调用的累积运行时间可以是O(|T|)阶。
Figure BDA0003665812070000151
表4描述了本技术的至少一个实施例提供的子例程schedule的伪码。表5描述了本技术的至少一个实施例提供的在表4的子例程schedule()中使用的类Iterator的伪码。
子例程schedule()迭代可从
Figure BDA0003665812070000152
访问的叶DistBuckets实例。子例程schedule()遵循搜索范围内可用性的降序顺序,所述搜索范围包括所有具有足够资源容纳传入任务t的叶DistBuckets实例。表4的SeqRSR的函数schedule()可以使用表5的类Iterator实现,该类定义了DistBuckets结构的迭代。Iterator只声明一个函数next(),该函数返回下一个适合的DistBuckets实例并向前移动光标位置。每个Iterator实例I与一个源DistBuckets实例B和一个任务t相关联。不同的调度策略(例如LeastFit)可以实例化Iterator的实现。
在表4的第1行中,函数(或换言之,“子例程”)schedule()首先创建包含全局变量
Figure BDA0003665812070000153
和当前任务t的Iterator实例
Figure BDA0003665812070000154
当执行表4的第2行至第7行时,RSR 130使用Iterator实例
Figure BDA0003665812070000155
按照特定的顺序迭代可从全局变量访问并且适合t的DistBuckets实例。在每一次迭代时,在第3行,可以通过调用
Figure BDA0003665812070000156
获取下一个DistBuckets实例Bnext。在第4行至第6行处,RSR 160尝试在Bnext.elements中找到节点n来调度任务t。在一些实施例中,可以仅考虑满足任务t的局部性约束的Bnext的那些节点,即n∈Bnext.elements∩L(t)。
通过利用DistBuckets结构的图层次结构,RSR 160可以穷尽搜索坐标空间300,而无需明确列举每个坐标。RSR 160使用图层次结构(例如树层次结构)遍历DistBuckets结构,以确定顶点,例如DistBuckets实例,该顶点包括任务t的匹配节点标识符。
Figure BDA0003665812070000161
如下文所述,在找到匹配节点标识符之后,RSR 160将匹配节点的匹配节点标识符映射到任务,并将每个任务ID与生成的调度方案150中确定的匹配节点标识符传输到调度引擎135。调度引擎135从RSR 160接收包含任务ID和匹配节点标识符的调度方案150。根据调度方案150,调度引擎135生成用于在节点110上执行任务125的调度。RM 130根据所述调度将所述任务分配给所述节点。
可以使用各种调度策略来识别DistBuckets结构中的匹配DistBuckets实例和匹配节点标识符。可以使用的所述各种调度策略,例如,如下文所述的LeastFit调度策略、BestFit调度策略、FirstFit调度策略、NextFit调度策略或随机调度策略。
Figure BDA0003665812070000171
LeastFit贪婪地选择所有适合节点中具有最高可用性的节点。为了确定“最高可用性”,RSR 160可以根据向量的字典顺序比较任意两个节点的可用资源。例如,给定两个不同的D维向量α=(α12,…,αD)和β=(β12,…,βD),如果对于最小dαdd,其中,αd和βd不同,则在字典顺序上α小于β。换言之,所有维度可以按顺序排列,并且可以就每个节点属性(换言之,维度)比较两个节点。与最不重要维度中的资源相比,比较最重要维度中的资源可能具有更大的权重。
如果节点p和节点a各有两个节点属性,例如vcore和内存,并且vcore排在内存之前,p(6V,4G)和a(4V,4G),则节点p的值大于节点a。换言之,p>a,因为在最重要的维度vcore上,节点p有6V,大于节点a的4V。类似地,节点a(4V,4G)的值大于节点b(4V,2G),即a(4V,4G)>b(4V,2G)。虽然节点a和节点b在第一个维度vcore上是相等的,但是第二个维度是内存,并且节点a的内存大于节点b。
表6描述了本发明各实施例提供的用于IteratorLeastFit类的伪码,其中IteratorLeastFit类实现DistBuckets结构的LeastFit调度策略。根据源DistBuckets实例Bsrc和任务t,RSR 160基于称为“深度优先搜索”算法遍历在Bsrc处具有顶点(例如,根实例)的图。
RSR 160按顺序分析(换言之,“探索”或“访问”)根实例Bsrc、根实例的子实例和DistBuckets结构图的叶实例,以确定具有最高可用性的适合Bsrc叶实例。换言之,当应用LeastFit调度策略时,RSR 160确定匹配节点ID,该匹配节点ID映射到具有坐标向量的适合DistBuckets实例,其中,与任何其它适合DistBuckets实例相比,该坐标向量在坐标空间300中具有最大坐标值。为了找到这样的匹配节点ID,会尽可能深入地遍历DistBuckets结构图,并且仅在必要时才会撤退。
如果最近发现的DistBuckets实例是B,则表6的函数next()按特定的顺序分析DistBuckets实例B的子实例。例如,可以选择具有最大可能索引k的适合子B[k],以实现偏袒更大可用性的LeastFit调度策略。
一旦分析(称为“探索”)了所有适合的B.children,搜索便“回溯”到B的后代,直到达到具有未探索且可能适合的子实例的坐标。这个过程会一直继续下去,直到找到可从Bsrc访问的下一个适合的叶DistBuckets实例。如果再次调用函数next(),IteratorLeastFit会重复整个过程,直到它以可用性的降序顺序发现并探索了源为Bsrc的所有适合的叶DistBuckets实例。
再次参考表6,每个IteratorLeastFit实例有五个成员字段:从Iterator继承的字段Bsrc和字段t,以及另外三个字段。另外三个字段是:字段k、字段childIter和字段count。字段k是当前子Bsrc[k]的索引k。字段childIter是Bsrc[k]的IteratorLeastFit实例。字段count计算函数next()的调用次数。
构造时(参见表4中的第1行和表6中的第20行),每个IteratorLeastFit实例根据输入参数定义自己的Bsrc和t,其它成员字段初始化为k=∞、childIter=NIL以及count=0。
在表6中,IteratorLeastFit结构定义了两个函数:函数next()继承自Iterator,nextChildIter()是辅助函数。
在函数next()中,表6中的第2行,当执行时,使count增加。当Bsrc为叶实例时执行表的第3行至第7行中的指令,当Bsrc为非叶实例时执行第8行至第16行中的指令。如果Bsrc为叶实例,则第3行至第7行的执行取决于count的值:count=1时,第一次调用时返回Bsrc,后续调用时返回“NIL”。
如果Bsrc为非叶实例,则在表6的第9行和第10行中,若(k,childIter)=(∞,NIL),当前子实例的索引k和子B[k]的iterator实例childIter映射到具有最高可用性的适合子。然后,在第11行至第15行,从每个子Bsrc[k]递归调用函数childIter.next()。在第12行至第14行中,k指向当前子Bsrc[k]的索引,childIter将其源DistBuckets实例设置为Bsrc[k]。然后,遍历(换言之,分析)具有图层次结构(例如,树层次结构)且在Bsrc[k]处具有顶点(例如,根实例)的DistBuckets结构。
在表6的第15行中,函数childIter.next()返回“NIL”,这表示已分析(换言之,“已探索”)所有以Bsrc[k]为根实例的适合叶实例。然后,RSR 160通过调用nextChildIter()移动到下一个子实例。在第16行处,在对Bsrc的所有子实例进行分析(探索)后,返回“NIL”。
在表6中,当Bsrc为非叶实例时,辅助函数nextChildIter()生成下一个子实例索引和相应的iterator。在表6的第18行中,RSR 160查找小于当前子索引k且适合任务t的最大子索引。在第19行至第22行处,生成childIter。
为了确定k,表6的第18行可以从当前索引k开始按降序顺序对多个子调用Bsrc[i].fits(t)。对于每个DistBuckets实例B,调用函数B.fits(t)是在整个迭代过程中首次遇到DistBuckets实例B,因此B在调用B.fits(t)时被“发现”每个DistBuckets实例B最多可以被发现一次。
在分析DistBuckets图并在DistBuckets树内搜索适合的节点时,当完全检查了以B为根实例的所有子图时,B可以称为“已完成”。换言之,当B.fits(t)返回“false”时,B可以称为“已完成”,因此无需进一步探索B.children。
当以DistBuckets实例B为源的IteratorLeastFit实例已完成其迭代并分析了该DistBuckets实例是否包括适合节点(在表6中,第7行适用于叶实例情况,第16行适用于非叶实例情况)时,DistBuckets实例B可以称为“已完成”。
RSR 160探索的DistBuckets实例也可以称为“节点图结构顶点”,而多个图结构顶点形成“节点图结构”。所述节点图结构顶点可以是节点图结构根节点、图结构子节点或节点图结构叶节点。在图3中,所述节点图结构包括图结构根节点330、节点图结构子节点335和节点图结构叶节点340。
在图4A至图4P、图5A至图5P、图6A至图6K中,为了说明各种实现步骤,每个DistBuckets实例具有细轮廓线、粗虚轮廓线或粗实轮廓线。每个DistBuckets实例B最初具有白色背景并具有细轮廓线。当DistBuckets实例B被发现后,将B描绘为具有粗虚轮廓线的(灰色)框或圆圈。当DistBuckets实例B为已完成后,DistBuckets实例B以粗实轮廓线和深(黑色)背景示出。
图4A至图4P示出了本发明各实施例提供的资源调度方法的几个实现步骤。所示出的实现步骤是调用IteratorLeastFit的next()函数时针对具有图3所示的坐标向量为(*,*)的根DistBuckets实例和任务t的实现步骤。
如果DistBuckets实例B不适合,则DistBuckets实例B可以在被发现后立即完成(例如,如图4F和图4O所示)。或者,如果B为叶实例,则DistBuckets实例B可以在被发现后立即完成(例如,如图4C、图4D、图4H、图4I、图4L、图4M所示)。当B的iterator选择子B[k]进行进一步迭代时,B[k]被发现。在图4A至图4P中,当B[k]被发现时,从B通向B[k]的箭头470描绘为粗箭头。
在图4A至图4P中,任务455t[(1V,2G),{b,c,e,f}]指定任务参数为1V和2G的请求资源Q(t)=(1V,2G)。任务455还指定候选节点标识符为b、c、e、f的候选集L(t)={b,c,e,f}。任务t的适合区域的边界460示为虚线。任务t的所述适合区域在坐标空间中具有大于等于每个任务坐标的坐标。用数学术语来说,任务t的所述适合区域可以表示为:
Figure BDA0003665812070000191
在图4A至图4P中,任务t的适合区域在vcore等于1且内存等于2G处具有边界。
图4A至图4P描绘了对具有通配符坐标(*,*)的根DistBuckets实例482三次调用函数next()的实现步骤,其中,DistBuckets实例482在图4A中发现并且在图4P中完成。图4A至图4I描绘了函数next()的第一次调用的步骤,其返回了可用性最高且坐标为(4,2)的第一适合叶DistBuckets实例(在图4I中用勾号484示出)。
图4J至图4L描绘了函数next()的第二次调用的步骤,其返回了坐标为(3,5)的第二适合叶DistBuckets实例(在图4L中用勾号486示出)。图4M至图4P描绘了函数next()的第三次调用的步骤,其返回了“NIL”,标志着迭代的结束。在图4P中,坐标为(*,*)的根DistBuckets实例482显示为具有黑色背景,因为它“已完成”。
再次参考表4,如果
Figure BDA0003665812070000201
在第1行中作为IteratorLeastFit启动,则可以将任务t调度到可用性最高的节点n(如果存在),以实现LeastFit调度策略。可以持续调用函数next(),直到在表4的第6行中为任务t找到节点n。结合图4A至图4P,当函数next()的第一次调用返回图4I所示的坐标为(4,2)的叶DistBuckets实例时,函数schedule()可以在第2行至第7行退出循环。在一些实施例中,在函数(子例程)schedule()可能由于为任务t确定匹配节点n或者未找到任何节点并为任务t返回“NIL”而终止之前,可以对函数next()执行多次调用。
参考表6,函数next()的结果取决于第18行分析Bsrc的子的顺序。如上所述,可以通过改变节点图结构顶点(尤其是子实例)的分析顺序来实现各种资源调度策略。在所有适合的候选节点中,BestFit调度策略选择可用性最低的节点,而LeastFit选择可用性最高的节点。BestFit可以采用与LeastFit相同的深度优先搜索图遍历策略,但使用不同的子DistBuckets访问和分析顺序。
为了使用BestFit调度策略分析子DistBuckets,RSR 160可以先访问和分析在任务t的适合区域内具有最小可能索引k的适合子B[k],因为BestFit调度策略偏袒更低的可用性。
为了实现IteratorBestFit,表6可以修改如下:第18行可以替换为“k←min{i|i>k∧Bsrc[i].fits(t)}”。第20行可以替换为new IteratorBestFit(Bsrc[k],t);并且,在第26行中,“∞”可以替换为“-∞”。
图5A至图5P示出了本发明各实施例提供的使用BestFit调度策略的资源调度方法的各个执行步骤。该方法的执行包括IteratorBestFit中的函数next()的三次调用,使用与图4A至图4P中相同的节点集N的非限制性示例。
图5A至图5E描绘了IteratorBestFit中函数next()的第一次调用的执行步骤,其返回了可用性最低的第一适合叶DistBuckets实例550,该实例的节点坐标为(3,5)。
图5E至图5H描绘了IteratorBestFit中函数next()的第二次调用的执行步骤,其返回了坐标为(4,2)的第二适合叶DistBuckets实例584。
图5I至图5P描绘了IteratorBestFit中函数next()的第三次调用的执行步骤,其返回了“NIL”,标志着迭代的结束。
再次参考表4和SeqRSR的函数schedule(),如果
Figure BDA0003665812070000202
在第1行中实例化为IteratorBestFit,则使用可用性最低的节点n调度任务t。然后,RSR 160调用函数next(),直到在第6行中为任务t找到节点n。在一些实施例中,SeqRSR的函数schedule()可以完成对DistBuckets结构的分析。在此类实施例中,当函数next()的第一次调用返回图5E所示的坐标为(3,5)的叶DistBuckets实例550时,SeqRSR的函数schedule()在表4的第2行至第7行退出循环。
Figure BDA0003665812070000211
RSR 160可以使用表2的DistBuckets结构分别通过节点的资源或任务的请求向量将节点或任务映射到坐标。在一些实施例中,RSR 160可以覆盖getNodeCoord()和getTaskCoord(),并执行各种坐标函数来实现不同的调度策略和优化目标。
在一些实施例中,可以修改坐标向量中坐标的顺序。在一些实施例中,如果内存是任务的主要资源(例如,拥有足够的内存可能比vcore更重要),则内存可以排在vcore之前。
在一些实施例中,坐标可以通过内存和vcore的高多项式项来修改,例如:Rv(n)+3Rm(n)+0.5(Rv(n))2,其中,v和m代表vcore和内存在资源维度中的索引。
在一些实施例中,getNodeCoord()和getTaskCoord()可以是具有节点和节点属性及任务和任务参数作为输入以及具有多维坐标向量作为输出的任何函数。在至少一个实施例中,可以使用如下文所述的粒度来计算坐标向量。
表7描述了本发明各实施例提供的函数getNodeCoord()和getTaskCoord()的伪码,这些函数使用粒度确定坐标。
执行函数getNodeCoord()时,RSR 160可以使用D维粒度向量θ=(θ123…θD),将第d(d为整数)个资源坐标除以θd,使得第d个资源坐标可以表示为:
Figure BDA0003665812070000212
类似地,执行函数getTaskCoord()时,RSR 160可以使用D维粒度向量θ=(θ123…θD),并可以将任务t的第d(d为整数)个坐标除以粒度参数θd,使得第d个资源坐标可以表示为:
Figure BDA0003665812070000213
例如,粒度参数可以由系统管理员定义。
使用粒度参数θd对节点坐标和任务坐标进行缩放,可以提高调度节点资源的时间效率。当粒度参数θd大于1时,可以减少坐标的总数,因此函数schedule()的每次调用可以在更小的DistBuckets树上迭代。当粒度参数θd大于1时,例如使用LeastFit调度策略时,选择的节点可能并不总是可用性最高的节点。因此,粒度参数可以有助于提高调度节点资源的时间效率,但代价是降低为任务t确定匹配节点的准确性。
粒度参数θd可以进行各种维度的控制,因此,可以通过使一个维度(例如d1)中的粒度参数θd1等于1将该维度中的精确度设定为优先,而通过将粒度参数θd2增加到大于1将调度节点资源的时间效率设定为优先。
在一些实施例中,粒度参数可以是资源函数的函数,例如,如上所述的Rv和/或Rm
图6A至图6H示出了本发明各实施例提供的使用LeastFit调度策略和粒度的资源调度方法的各个执行步骤。在图6A至图6H中,粒度向量为θ=(2,3)。所述资源调度方法的执行包括调用IteratorLeastFit中的函数next()。节点集N和任务t与在图4A至图4P中相同。
当粒度向量为θ=(2,3)时,叶DistBuckets实例的总数减为5。为了比较,在图5A至图5P中,其中粒度向量为θ=(1,1),叶DistBuckets实例的总数为11。
图6A至图6D描绘了函数next()的第一次调用期间方法的执行步骤,其返回了坐标为(3,1)的叶DistBuckets实例B1。尽管函数B1.fits(t)返回“true”,但没有任何适合t的节点。节点e(6V,1G)是B1中唯一满足t的局部性约束(B1.elements∩L(t)={e})的候选节点。然而,RSR160分析节点e并确定节点e没有足够的内存来调度任务坐标为(1V,2G)的任务t。因此,不适合节点可以存在于适合DistBuckets实例中。
图6E至图6G示出了函数next()的第二次调用期间方法的执行步骤,此时RSR 160获得坐标为(2,2)的叶DistBuckets实例B1。坐标为(2,2)的DistBuckets实例包括用于任务t的节点c(3V,5G)。如图4A至图4P所示,与采用粒度θ=(1,1)选择的节点b(4V,2G)相比,节点c(3V,5G)的可用性更低。因此,当使用大于1的粒度参数时,可能不会首先找到可用性最高的节点。
如图6H所示,在函数next()的第三次调用期间可能会找到坐标为(2,1)的节点。
通常会在资源调度中使用预留,以解决资源请求很大的任务的饥饿问题。RSR 160可以支持对具有DistBuckets结构的LeastFit和其它调度策略的预留。每个节点n最多可以对单个任务t有一个资源预留,只能为任务t调度该资源预留,而每个任务t可以在多个节点上有多个预留。表1的RSR 160可以使用两个附加输入参数和一个附加约束。
R′是预留参数,它将节点集N中的每个节点n(n∈N)映射到其以D维向量R′(n)∈RD表示的预留,其中,R′(n)≤Rd(n),
Figure BDA0003665812070000221
L′是预留局部性函数,它将任务集T中的每个任务t(t∈T)映射到对任务t有预留的预留节点子集
Figure BDA0003665812070000222
如果节点a(4V,4G)对任务t0有预留R′(a)=(1V,2G)(即,a∈L′(t0)),则节点a只能将该预留资源调度给任务t0。换言之,节点a可以将其所有可用资源R(a)=(4V,4G)调度给任务t0。然而,对于其它任务,节点a只可以调度剩余的可用资源部分:(R(a)-R′(a))=(3V,2G)。换言之,对于在一个特定节点上没有资源预留的任务,该一个特定节点只能将这些任务映射到该节点上未预留的资源部分。例如,如果节点a共有10GB内存,其中6GB预留用于任务t1,那么任务t2可以仅具有访问权限,并且仅可以调度到代表节点a的未预留资源部分的剩余4GB。
为了支持具有预留的LeastFit,RSR 160可以具有DistBuckets实例的两个全局变量
Figure BDA0003665812070000223
Figure BDA0003665812070000224
这两个DistBuckets实例的不同之处在于getNodeCoord()的函数定义。
如表8所示,为了计算节点n的坐标,
Figure BDA0003665812070000225
排除预留R′(n),而
Figure BDA0003665812070000226
包括R′(n)。
表9描述了具有预留的LeastFit的伪码。在第1行和第2行中,RSR 160分别从
Figure BDA0003665812070000227
Figure BDA0003665812070000228
中选择n和n′。在第3行中,RSR 160确定n和n′中可用性最高的节点。具体地,n表示L(t)-L′(t)中没有预留的可用性最高的节点,n′是L′(t)中有预留的可用性最高的节点。
换言之,为了考虑节点预留,节点中的每一个节点的节点坐标可以通过使用节点中的每一个节点的所述任务的预留数据和其它任务的预留数据来确定。将节点和对应的节点图结构顶点映射到坐标系时,RSR 160可以从节点坐标中扣除针对每个节点属性(维度)为其它任务预留的资源量。
Figure BDA0003665812070000231
虽然上文针对RSR 160描述了DistBuckets结构的有效性,但是DistBuckets结构也可以用在替代资源调度例程中。
表10描述了本发明各实施例提供的通用资源调度例程(generalized resourcescheduling routine,GRSR)的非限制性示例,GRSR是资源调度算法的通用框架。可以实现GRSR来代替RSR 160。
GRSR在第1行以空调度方案A开始,并在第2行至第6行迭代构建A。在每一次迭代时,在第3行,接收任务子集
Figure BDA0003665812070000232
在第4行,选择节点来调度任务子集T1。通过从任务集T中减去任务子集T1,在第5行和第6行更新调度方案A。
Figure BDA0003665812070000241
GRSR可以将selectTasks()和schedule()声明为虚函数,具体的资源调度算法可以通过具体的实现来覆盖这两个虚函数。具体地,schedule()的快速实现可以利用针对各种调度策略的DistBuckets结构。例如,GRSR可以使用多个DistBuckets实例来并行调度多个任务,然后解决潜在的冲突,例如在一个资源节点上过度调度。
图7示出了本发明各实施例提供的计算集群或云计算平台的资源节点的资源调度方法700的流程图。所述方法可以由RSR 160的软件的例程、子例程或引擎执行。用于执行方法700的所述RSR的所述软件的编码也在本领域普通技术人员关于本发明的可理解范围内。方法700包含的步骤可以多于或少于所示和描述的步骤,并且可以按照不同的顺序执行。可由装置100的处理器(未示出)为执行方法700而执行的计算机可读指令可以存储在所述装置的存储器(未示出)或非瞬时性计算机可读介质中。
在步骤710中,RSR 160接收节点集中的节点的节点标识符,并接收所述节点标识符中的每一个的节点属性的值。
在步骤712中,从客户端设备接收指定任务参数值的任务。
在步骤714中,生成节点图结构。所述节点图结构具有至少一个节点图结构顶点,所述至少一个节点图结构顶点通过使用所述节点属性的所述值将节点标识符中的每一个映射到坐标空间,来映射到所述坐标空间,从而确定节点坐标。所述节点图结构具有至少一个节点图结构顶点,所述至少一个节点图结构顶点包括至少一个节点标识符并映射到所述坐标空间。所述至少一个节点标识符中的每一个使用所述节点属性的所述值映射到所述坐标空间,从而确定节点坐标。
在步骤716中,所述任务通过使用所述任务参数的所述值映射到所述坐标空间,从而确定任务坐标。
在步骤718中,通过分析(换言之,探索)位于所述任务的适合区域内的所述至少一个节点图结构顶点,确定第一节点的第一节点标识符。所述第一节点的坐标位于所述任务的所述适合区域内。所述适合区域包括所述坐标空间中大于等于每个任务坐标的坐标。在至少一个实施例中,RSR 160确定映射到节点图结构顶点的节点标识符是否与所述任务中指定的候选标识符中的一个相同。
在一些实施例中,可以根据随所述任务接收的节点属性偏好确定探索所述节点图结构顶点的顺序。在一些实施例中,可以根据资源调度策略确定探索所述节点图结构顶点的顺序,所述资源调度策略为LeastFit调度策略、BestFit调度策略、随机调度策略和预留调度策略中的一种。在探索所述节点图结构的所述节点图结构顶点时,RAR 160遍历所述节点图结构以确定所述匹配节点标识符。
在步骤720中,将所述第一节点标识符映射到所述任务以生成调度方案。
在步骤722中,将所述调度方案传输到调度引擎。
本文描述的系统、装置和方法可以针对各种节点属性(例如vcore和内存)快速实现O(1)阶、查找、插入和删除。
本文描述的技术可以实现同时考虑多个维度(例如vcore、内存和GPU)和局部性约束的各种资源节点选择策略的快速实现。使用本文描述的方法和结构,可以在多维坐标系中执行对用于调度的适合资源节点的搜索,该坐标系将资源节点的资源和任务映射到能够快速调度任务在资源节点上执行的坐标。对适合资源节点的搜索被限制在适合区域内,从而提高了搜索速度。本文描述的技术可以支持适合区域内的各种搜索路径,并能够快速选择用于调度的适合资源节点以执行任务。本文描述的粒度参数可以帮助进一步加快资源节点的资源调度以执行任务。
尽管已经参考本发明的特定特征和实施例描述了本发明,但是明显可以在不脱离本发明的情况下制定本发明的各种修改和组合。因此,说明书和附图仅被视为所附权利要求书限定的对本发明的说明,并且预期覆盖落入本发明的范围内的任何和所有修改、变化、组合或等同物。

Claims (20)

1.一种方法,其特征在于,所述方法包括:
接收节点集中的节点的节点标识符,并接收所述节点标识符中的每一个的节点属性的值;
从客户端设备接收任务,所述任务指定任务参数的值;
生成节点图结构,所述节点图结构具有包括至少一个节点标识符的至少一个节点图结构顶点,所述至少一个节点图结构顶点映射到坐标空间,所述至少一个节点标识符中的每一个使用所述节点属性的所述值映射到所述坐标空间以确定节点坐标;
通过使用所述任务参数的所述值将所述任务映射到所述坐标空间以确定任务坐标;
通过分析位于所述任务的适合区域内的所述至少一个节点图结构顶点,确定第一节点的第一节点标识符,所述适合区域在所述坐标空间中具有大于等于每个任务坐标的坐标;
将所述第一节点标识符映射到所述任务以生成调度方案;
将所述调度方案传输到调度引擎,以调度所述任务在所述第一节点上执行。
2.根据权利要求1所述的方法,其特征在于,确定所述第一节点标识符还包括:确定所述第一节点标识符是否映射到所述至少一个节点图结构顶点。
3.根据权利要求1和2中任一项所述的方法,其特征在于,所述任务指定至少一个候选节点标识符;确定所述第一节点标识符还包括:确定所述第一节点标识符是否与所述至少一个候选节点标识符中的一个相同。
4.根据权利要求1至3中任一项所述的方法,其特征在于,还包括:根据随所述任务接收的节点属性偏好确定分析所述节点图结构顶点的顺序。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述节点图结构具有至少两个节点图结构顶点映射到所述坐标空间的不同子空间,并且分析所述至少两个节点图结构顶点从位于所述任务的所述适合区域内且在所述坐标空间的至少一个维度中具有最大坐标的节点图结构顶点开始。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述节点图结构具有至少两个节点图结构顶点映射到所述坐标空间的不同子空间,并且分析所述至少两个节点图结构顶点从位于所述任务的适合区域内且在所述坐标空间的至少一个维度中具有最小坐标的节点图结构顶点开始。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述任务参数的所述值包括中央处理器(central processing unit,CPU)内核电压值、内存值、内存输入/输出带宽和网络参数值中的至少两个。
8.根据权利要求1至7中任一项所述的方法,其特征在于,为了确定所述节点坐标和所述任务坐标,将所述节点属性的所述值中的至少一个和所述任务参数的所述值中的至少一个除以粒度参数。
9.根据权利要求1至8中任一项所述的方法,其特征在于,所述节点中的每一个的所述节点坐标通过进一步使用所述节点中的每一个的所述节点中的每一个的所述任务的预留数据和其它任务的预留数据来确定。
10.根据权利要求9所述的方法,其特征在于,将所述节点和所述至少一个节点图结构顶点映射到所述坐标系还包括:从所述节点坐标中扣除针对每个节点属性为其它任务预留的资源量。
11.一种装置,其特征在于,所述装置包括:
处理器;
存储器,用于存储指令,当所述指令由所述处理器执行时,使得所述装置:
接收节点集中的节点的节点标识符,并接收所述节点标识符中的每一个的节点属性的值;
从客户端设备接收任务,所述任务指定任务参数的值;
生成节点图结构,所述节点图结构具有包括至少一个节点标识符的至少一个节点图结构顶点,所述至少一个节点图结构顶点映射到坐标空间,所述至少一个节点标识符中的每一个使用所述节点属性的所述值映射到所述坐标空间以确定节点坐标;
通过使用所述任务参数的所述值将所述任务映射到所述坐标空间以确定任务坐标;
通过分析位于所述任务的适合区域内的所述至少一个节点图结构顶点,确定第一节点的第一节点标识符,所述适合区域在所述坐标空间中具有大于等于每个任务坐标的坐标;
将所述第一节点标识符映射到所述任务以生成调度方案;
将所述调度方案传输到调度引擎,以调度所述任务在所述第一节点上执行。
12.根据权利要求11所述的装置,其特征在于,确定所述第一节点标识符时,所述处理器还用于:确定所述第一节点标识符是否映射到所述至少一个节点图结构顶点。
13.根据权利要求11和12中任一项所述的装置,其特征在于,所述任务指定至少一个候选节点标识符;确定所述第一节点标识符时,所述处理器还用于:确定所述第一节点标识符是否与所述至少一个候选节点标识符中的一个相同。
14.根据权利要求11至13中任一项所述的装置,其特征在于,所述处理器还用于:根据随所述任务接收的节点属性偏好确定分析所述节点图结构顶点的顺序。
15.根据权利要求11至14中任一项所述的装置,其特征在于,所述节点图结构具有至少两个节点图结构顶点映射到所述坐标空间的不同子空间,并且所述处理器用于从位于所述任务的所述适合区域内且在所述坐标空间的至少一个维度中具有最大坐标的节点图结构顶点开始分析所述至少两个节点图结构顶点。
16.根据权利要求11至15中任一项所述的装置,其特征在于,所述节点图结构具有至少两个节点图结构顶点映射到所述坐标空间的不同子空间,并且所述处理器用于从位于所述任务的适合区域内且在所述坐标空间的至少一个维度中具有最小坐标的节点图结构顶点开始分析所述至少两个节点图结构顶点。
17.根据权利要求11至16中任一项所述的装置,其特征在于,所述任务参数的所述值包括中央处理器(central processing unit,CPU)内核电压值、内存值、内存输入/输出带宽和网络参数值中的至少两个。
18.根据权利要求11至17中任一项所述的装置,其特征在于,为了确定所述节点坐标和所述任务坐标,将所述节点属性的所述值中的至少一个和所述任务参数的所述值中的至少一个除以粒度参数。
19.根据权利要求11至18中任一项所述的装置,其特征在于,所述节点中的每一个的所述节点坐标通过进一步使用所述节点中的每一个的所述任务的预留数据和其它任务的预留数据来确定。
20.根据权利要求19所述的装置,其特征在于,将所述节点和相应的至少一个节点图结构顶点映射到所述坐标系时,所述处理器还用于:从所述节点坐标中扣除针对每个节点属性为其它任务预留的资源量。
CN202080082742.7A 2019-12-19 2020-06-12 用于对计算集群或云计算平台的资源节点执行资源调度的方法和装置 Pending CN114830088A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/720,410 US20210191756A1 (en) 2019-12-19 2019-12-19 Methods and apparatus for resource scheduling of resource nodes of a computing cluster or a cloud computing platform
US16/720,410 2019-12-19
PCT/CN2020/095980 WO2021120550A1 (en) 2019-12-19 2020-06-12 Methods and apparatus for resource scheduling of resource nodes of a computing cluster or a cloud computing platform

Publications (1)

Publication Number Publication Date
CN114830088A true CN114830088A (zh) 2022-07-29

Family

ID=76441652

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080082742.7A Pending CN114830088A (zh) 2019-12-19 2020-06-12 用于对计算集群或云计算平台的资源节点执行资源调度的方法和装置

Country Status (3)

Country Link
US (1) US20210191756A1 (zh)
CN (1) CN114830088A (zh)
WO (1) WO2021120550A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115357401A (zh) * 2022-10-18 2022-11-18 苏州市中地行信息技术有限公司 一种基于多数据中心的任务调度与可视化方法和系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9875142B2 (en) * 2013-03-22 2018-01-23 Palo Alto Research Center Incorporated System and method for efficient task scheduling in heterogeneous, distributed compute infrastructures via pervasive diagnosis
CN103279385A (zh) * 2013-06-01 2013-09-04 北京华胜天成科技股份有限公司 一种云计算环境中集群任务调度方法及系统
AU2018100381A4 (en) * 2018-03-27 2018-05-10 Chongqing University Of Posts And Telecommunications A physical resource scheduling method in cloud cluster
CN110489200B (zh) * 2018-05-14 2022-03-08 郑州芯兰德网络科技有限公司 一种适用于嵌入式容器集群的任务调度方法
CN109240814A (zh) * 2018-08-22 2019-01-18 湖南舜康信息技术有限公司 一种基于TensorFlow的深度学习智能调度方法和系统

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115357401A (zh) * 2022-10-18 2022-11-18 苏州市中地行信息技术有限公司 一种基于多数据中心的任务调度与可视化方法和系统

Also Published As

Publication number Publication date
WO2021120550A1 (en) 2021-06-24
US20210191756A1 (en) 2021-06-24

Similar Documents

Publication Publication Date Title
US11275609B2 (en) Job distribution within a grid environment
AlEbrahim et al. Task scheduling for heterogeneous computing systems
Khorasani et al. Scalable simd-efficient graph processing on gpus
Pooranian et al. An efficient meta-heuristic algorithm for grid computing
US9886307B2 (en) Cross-platform scheduling with long-term fairness and platform-specific optimization
US9141432B2 (en) Dynamic pending job queue length for job distribution within a grid environment
US20130151535A1 (en) Distributed indexing of data
US9753778B2 (en) Domain-agnostic resource allocation framework
CN111488205B (zh) 面向异构硬件架构的调度方法和调度系统
JPH06202882A (ja) 複数のタスク及びジョブのスケジューリング方法
WO2020125396A1 (zh) 一种共享数据的处理方法、装置及服务器
Muthusamy et al. Cluster-based task scheduling using K-means clustering for load balancing in cloud datacenters
CN107360031B (zh) 一种基于优化开销收益比的虚拟网络映射方法
Tsegaye et al. HSSIW: Hybrid squirrel search and invasive weed based cost-makespan task scheduling for fog-cloud environment
CN114830088A (zh) 用于对计算集群或云计算平台的资源节点执行资源调度的方法和装置
Compton et al. New partitioning techniques and faster algorithms for approximate interval scheduling
CN113641448A (zh) 一种边缘计算容器分配和层下载排序体系结构及其方法
CN110489214B (zh) 云环境中数据密集型工作流的动态任务分配
US9298505B2 (en) Time and space-deterministic task scheduling apparatus and method using multi-dimensional scheme
CN114968554B (zh) 一种基于核函数映射方式的鲸鱼算法的工作流云调度方法
CN116800610A (zh) 一种分布式的数据平面资源优化方法与系统
US11146503B1 (en) Resource scheduling methods using positive and negative caching, and resource manager implementing the methods
KR101558807B1 (ko) 호스트 프로세서와 협업 프로세서 간에 협업 처리를 위한 프로세서 스케줄링 방법 및 그 방법을 수행하는 호스트 프로세서
Bengre et al. A learning-based scheduler for high volume processing in data warehouse using graph neural networks
CN118364890B (zh) 深度学习模型的自动可逆化合成方法、装置、设备及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination