域不可知的资源分配框架的制作方法

文档序号:6534602阅读:161来源:国知局
域不可知的资源分配框架的制作方法
【专利摘要】本文中描述资源分配框架,其以域不可知的方式将项目(概念化为球)分配至项目接收槽(概念化为仓)。用户通过生成以声明性方式描述分配问题的规范来将资源分配框架实例化为特定分配问题。作为其它特征之一,该规范将真实实体映射成球和仓,并描述与分配问题相关联的约束。该规范还提供针对所提议的特定球至特定仓的指派计算资源消费的利用函数。根据另一方面,资源分配框架使用并行操作的许多处理元件(例如GPU线程、CPU线程等等)来尝试对分配问题求解。在此对解的搜索中,资源分配框架以探索模式和开拓模式的任何组合来操作。
【专利说明】域不可知的资源分配框架
[0001]背景
[0002]存在许多有必要以满足指定约束集合的方式将项分配至仓(bin)的情形。例如,在管理数据中心时,必需将虚拟机(VM)分配给服务器,这受到该数据中心中VM的资源要求和服务器的资源能力的控制。分配问题在本质上会是复杂的。因此,研宄团体已开发了各种算法来解决各种分配问题。
[0003]许多分配算法是通过试探法来支配的。然而,基于试探法的算法有许多缺点。首先,基于试探法的算法仅适用于它所针对设计的特定分配问题。其次,基于试探法的算法在分配问题变化时会变得过时。例如,数据中心可演变以结合新技术。或者,管理人员可重新定义分配目标,和/或重新配置数据中心的架构以更佳地满足变化的市场需求。由于这些变化,试探法算法不再能准确地对数据中心建模。这进而可迫使工程师修订分配框架的试探法,从而可能需要大量的工作。


【发明内容】

[0004]本文中描述资源分配框架(RAF),其将项(概念化为球)分配至项接收槽(概念化为仓)。用户通过产生规范来将RAF实例化成特定分配问题。该规范以声明性方式描述分配问题。例如,该规范将真实实体映射成球和仓,并描述与分配问题相关联的约束。该规范还提供针对所提议的特定球至特定仓的指派计算资源消费的利用函数。
[0005]另一方面,RAF的核心抽象对于不同分配问题保持域不可知。因此,用户可以便利方式通过编写针对新分配问题的新规范而不修订RAF的抽象,来使RAF适应该问题。
[0006]根据另一说明性方面,RAF使用对分配问题的解执行并行搜索的多个处理元件。例如,处理元件可对应于图形处理单元(GPU)或多核中央处理单元(CPU)等所提供的线程。
[0007]根据另一说明性方面,资源分配框架使用探索模式和开拓模式的任意组合来操作,如以下在详细描述章节中进一步描述的。
[0008]上面的方法可以显现在各种类型的系统、组件,方法、计算机可读介质、数据结构、
产品等等中。
[0009]提供本概述以便以简化形式介绍一些概念;这些概念将在以下的详细描述中进一步描述。本概述并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
[0010]附图简述
[0011]图1示出包括域不可知的资源分配框架(RAF)的环境的纵览。
[0012]图2示出可由规范给出的不同信息项。RAF使用该规范来实例化供应用于特定问题域的其核心抽象。
[0013]图3示出由图1的RAF执行的处理的逻辑描绘。
[0014]图4是以高级形式描述图1的RAF的操作的一种方式的流程图。
[0015]图5-6共同提供描述图1的RAF的操作的一种方式的流程图;在此,RAF中的每个处理元件以独立方式工作以对分配问题求解。
[0016]图7-8共同提供描述图1的资源分配框架的操作的另一种方式的流程图;在此,处理元件的群组一起协同工作以对分配问题求解。
[0017]图9-11示出用于描述三个相应分配问题的三个规范。
[0018]图12示出规范可对作业调度问题的特性建模的方式。
[0019]图13是描述RAF可使用参照图12阐述的概念执行作业调度操作的一种办法的流程图。
[0020]图14描述RAF的操作的探索模式和开拓模式。
[0021]图15是归纳RAF在探索操作模式中的操作的流程图。
[0022]图16是归纳RAF在开拓操作模式中的操作的流程图。
[0023]图17是描述问题求解框架的处理元件可并行工作以对任何NP困难约束问题的求相应解的一种方式的流程图。
[0024]图18示出了可以被用来实现前面的附图中所示出的特征的任何方面的说明性计算功能。
[0025]图19示出RAF所使用的图形处理模块的一种说明性实现。
[0026]贯穿本公开和各附图,相同的编号参考相同的组件和特征。100系列标号指的是最初在图1中所找到的特征,200系列的标号指的是最初在图2中找到的特征,300系列的标号指的是最初在图3中找到的特征,依此类推。
[0027]详细描述
[0028]本发明是按如下方式来组织的。章节A描述域不可知的资源分配框架的纵览。章节B阐述资源分配框架的代表性应用。章节C描述资源分配框架的探索操作模式和开拓操作模式。章节D描述了可被用来实现前述各节所描述的特征的任何方面的说明性计算功會K。
[0029]初步地,一些附图描述一个或多个结构组件(不同地称为功能、模块、特征、元件等)的上下文中的概念。附图所示的各个组件可通过物理和有形的机制,例如通过软件、硬件(例如芯片实现的逻辑功能)、固件等和/或其任何组合,以任何方式实现。在一种情况下,附图中所示出的将各种组件分离为不同的单元可以反映在实际实现中使用对应的不同的物理和有形的组件。可另选地,或者另外,附图中所示出的任何单个组件都可以通过多个实际物理组件来实现。另选地或另外地,附图中的任何两个或更多分开组件的描绘可以反映单个实际物理组件所执行的不同功能。进而要描述的章节D提供了关于附图中示出的功能的一个说明性物理实现的附加细节。
[0030]其他附图以流程图形式描述了概念。以此形式,某些操作被描述为构成以某一顺序执行的不同的框。这些实现是说明性而非限制性的。此处描述的某些框可被分组在一起并在单个操作中执行,某些框可被分成多个组件框,并且某些框可以按与此处所示出的不同的次序来执行(包括以并行方式执行这些框)。流程图中示出的框可以任何方式由任何物理和有形机制来实现,例如由软件、硬件(如芯片实现的逻辑功能)、固件等,和/或它们的任何组合来实现。
[0031]至于术语,短语“被配置成”包含任何类型的物理和有形的功能可以被构建来执行已标识的操作的任何方式。功能可以被配置成使用例如软件、硬件(例如,芯片实现的逻辑功能)、固件等,和/或其任何组合来执行操作。
[0032]术语“逻辑”包含用于执行任务的任何物理和有形的功能。例如,流程图中示出的每一个操作都对应于用于执行该操作的逻辑组件。操作可以使用例如软件、硬件(例如,芯片实现的逻辑功能)、固件等,和/或其任何组合来执行操作。在由计算系统实现时,逻辑组件表示作为计算系统的物理部分的、无论如何实现的电子组件。
[0033]权利要求中的短语“用于…的装置”(如果被使用)旨在援引35U.S.C.§ 112第六段的规定。除了本特定短语之外,没有其他语言旨在援引该法条的该部分的规定。
[0034]下列的说明可以将一个或多个特征标识为“可选”。这种类型的陈述不应该被解读为可以被视为可选的特征的穷尽的指示;也就是说,其他特征也可以被视为可选,虽然在文本中没有明确地标识。最后,术语“示例性”或“说明性”指的是可能多个实现中的一个实现。
[0035]A.域不可知的资源分配框架的纵览
[0036]图1示出包括资源分配框架(RAF) 102的说明性环境100。作为纵览,RAF 102将项(本文中概念化为球)指派给项接收槽(本文中概念化为仓)。例如,在一个问题域中,球对应于虚拟机(VM)且仓对应于服务器。在另一问题域中,球对应于用户而仓对应于服务器。在又一问题域中,球对应于作业而仓对应于时隙。在再一问题域中,球代表网络中的路径而仓代表ID,依此类推。
[0037]RAF 102是所谓的域不可知的。这意味着RAF 102不被设计为服务任一个问题域;相反,RAF 102应用一般的并且因此可应用于各种分配问题的一核心抽象集合。用户可通过编写规范104来将RAF 102应用于特定分配问题。规范104提供描述特定分配问题的特性的以声明性方式表达的信息。
[0038]在一种实现中,RAF 102使用处理元件106的集合来实现。例如,处理元件106可对应于一个或多个图形处理单元(GPU)、多核中央处理单元(CPU)等所提供的线程。处理元件108代表处理元件106的集合中的一个成员。
[0039]在一实现中,每个处理元件108将球分配至仓,以提供对分配问题的部分解或完全解。完全解对应于其中受规范104中所指定的约束所控制地全部球被指派至仓的情形。部分解对应于其中至少一个球保持未被分配的情形,因为受到适用约束的控制其不能被置入任一个仓中。每个处理元件通过产生球的排序(在一情形中可为随机排序)来开始其处理。然后它尝试根据该排序指定的次序来将球相继装入仓中。每个处理元件产生球的不同排序,因此不同处理元件可产生不同的解。
[0040]RAF 102进行的搜索在以下情形时终止:(a)处理元件106之一求得分配问题的完全解;或(b)该进程被中止,例如响应于来自用户的指令或响应于所定义搜索时段的期满等等。假设没有一个处理元件求得完全解,且进程没有被另行中止。每个处理元件然后将生成球的另一(可能随机化的)排序,并且关于该新的排序重复其对完全解的搜索。
[0041]在另一实现中,处理元件106的集合包括多个处理元件群组,诸如群组110和群组112等。每个群组协作地尝试针对分配问题求单个完全解。每个群组根据它在球的相较于其他群组的不同排序上操作的事实探索搜索空间的不同部分。该进程基于以上针对第一实现指定的相同条件终止(或继续另一迭代)。
[0042]用户可以不同方式与RAF 102交互。在一办法中,RAF 102可在关于用户的一远程位置实现。例如,RAF 102可被实现为具有正面接口模块114的数据服务。用户可经由网络118使用任何用户设备116与接口模块114交互。该用户设备可对应于个人计算机、计算机工作站、任何类型的便携式计算机(例如,膝上型计算机、移动电话、平板计算机等等)、依此类推。网络118可对应于局域网、广域网(例如因特网)、点对点管道、依此类推。在此情形中,用户经由用户设备116上传规范104。作为响应,用户从RAF 102接收传达球向仓的部分或全部指派(如映射至真实实体)的解。
[0043]在另一办法中,RAF 102和用户定位于相同位置。例如,RAF 102可由结合有GPU模块、多核CPU模块等的任何类型的用户计算机来实现。在此情形中,用户可将规范104直接载入本地RAF 102中。RAF 102然后以任何方式(诸如通过显示解、打印该解、和/或将其储存成文件等等)将该解输出给用户。
[0044]前行至图2,此图示出由规范104取决于问题域的性质可给出的不同信息项。作为第一信息项,规范104将真实实体(诸如VM)集合映射至球202。作为第二信息项,规范104将真实实体(诸如服务器)集合映射至仓204。除此映射之外,RAF 102所采用的抽象以域不可知方式处置球和仓。
[0045]用户可以不同方式挑选仓的数量。在一办法中,对于每个因仓而异的资源(诸如CPU资源),用户能计算全部球请求的对此资源的总使用量。用户然后可针对所考虑的特定资源,诸如CPU容量)将此资源消费除以全部仓的总资源容量(。这产生了针对不同的各个因仓而异的资源的值集合。最大值对应于所需仓数量的下限。用户可挑选略大于此下限的仓的数量。如果对仓的初始选择不产生足够的解,则用户可增加仓的数量。
[0046]作为第三信息项,规范104还指定资源向量206。该资源向量206包括与关联于分配问题的不同资源相对应的多个维度。例如,考虑η个服务器构成的一集合,每个服务器提供m个非共享的资源(诸如CPU资源、存储器资源、盘资源等等)。在此情形中,资源向量可使用η X m个维度来描述这些非共享资源。资源向量206还可指定每个非共享资源维度的相应容量。例如,一个维度可提供特定服务器的CPU容量。
[0047]资源向量206分配与问题域所提供的共享资源相对应的其他维度。例如,假定问题域指定使用经由两条链路连接在一起的两个服务器。资源向量206可包括对应于这些链路的两个附加维度。每个共享维度还指定特定共享资源的容量。
[0048]资源向量206还可包括零个、一个或多个冲突维度。每个冲突维度获得冲突容量的指派。RAF 102取决于问题域的性质将冲突维度用于不同目的。在一情形中,例如,RAF102可使用冲突维度来标识球至仓的不相容指派。章节B提供阐明冲突维度的使用的示例。
[0049]规范104还与利用函数208相关联(例如,通过将利用函数208内联到规范的指令中或使用任何类型的链接引用单独提供的利用函数208)。利用函数208对应于接受当前球选择(球3|?)、当前仓选择(仓3|?)以及球至仓的当前部分指派(分配3|?)的典型短程序。即,分配描述已被分配至仓的球。利用函数208然后返回对如果球被指派给仓则将消费多少资源的指示。
[0050]更具体地,利用函数208可包括球资源需求210、消费确定逻辑212、以及消费向量消费*/#214。球资源需求210指定与球相关联的实体(例如VM)所正在请求的资源的量。消费确定逻辑212实现指定如果球被指派给仓则将消费的资源的量的分析逻辑。消费向量消费* / #表达资源的消费。即,消费向量消费* / #包括与资源向量206相同的维度。利用函数208至少部分地基于球资源需求210所指定的信息载入在适当维度的消费仓/#中将球3Ι?置入仓3Ι?所消费的资源。
[0051]规范104还可包括取决于特定分配问题的性质的一个或多个其他信息项216的集合,以及该问题在规范中建模的方式。例如,规范104可指定至少两个球具有“朋友”关系。该约束指令RAF 102将这两个球指派至同一仓。规范104还可指定至少两个球具有“对手”关系。该约束指令RAF 102将这两个球指派至不同的相应仓。规范可确保通过创建适当对的对手来将所有球置入分开的仓中。
[0052]更具体地,在一情形中,规范104可指定一个或多个朋友群。例如,该规范可指示球1、2、3是朋友。RAF 102将尝试通过将所有三个球置入同一仓来满足此约束。规范104还可指定交叠朋友群,诸如通过指定球1、2和3的第一朋友群以及球2、4和6的第二朋友群。RAF 102将尝试通过将所有6个球置入同一仓来满足此约束,因为这些群通过共同的球2而链接在一起。
[0053]该规范还可指定一个或多个对手群,诸如通过指定球1、2和3形成一对手群。在一解读中,RAF 102可尝试通过将全部3个球置入分开的仓中来尊重此约束。在另一解读中,RAF 102可尝试通过简单地防止全部3个球被指派至同一仓来尊重此约束。S卩,RAF 102可通过将对手群中指定的至少一个球与其他球分开地放置来满足此约束。
[0054]约束104还可指定一个或多个软约束。软约束指定会违背另一(硬)约束但尚可被认为可接受的条件。例如,如上所述,规范104可指定某些球互为朋友或互为对手。但是假设RAF 102无法尊重规范所指定的所有约束,软约束可指示该限制可在特定情形中得以放宽。在另一情形中,规范104可指定一服务器群,每个服务器具有z的CPU容量。但是软约束可指定该硬约束可在特定情形中得以超越,再次假设RAF 102无法满足规范所指定的所有约束。
[0055]规范104可按照任何方式指定软约束,诸如通过指定概率值、百分比等等。例如,软约束可标识管控硬约束的应用的概率值P。RAF 102将通过每当寻求应用所讨论的硬约束时挑选随机数来对此软约束作出响应。如果该随机数落在P所指定的容许范围内,则它将忽视硬约束。章节B提供软约束应用的附加示例。
[0056]规范104还可指定钉扎(pinning)约束。钉扎约束指定在开始尝试对分配问题求解时至少一个球将被考虑先验指派给特定仓。例如,在一情形中,RAF102可针对在时间开始的特定作业将球指派至仓。假设第二作业请求在第一作业当前正在进展时到达。RAF102可在将球分配给第二作业之前钉扎与第一作业相关联的球。这一操作防止关于第二作业执行的分配进程破坏已被分配给该第二作业的资源。章节B提供关于钉扎约束的应用的进一步细节。
[0057]图2中枚举的信息项作为示例而非限制地得以阐述。针对其他问题域开发的其他规范可指定其他信息项。
[0058]图3阐述RAF 102的操作的逻辑描绘300。例如,RAF 102的每个处理元件可实现图3所示的各个模块。为便于描述,图3将针对其中每个处理元件尝试求它自己的针对分配问题的解而不与其他处理元件协作的情形进行描述。
[0059]从高层观点看,RAF 102的核心抽象不采用考虑特定问题域的性质的试探法。相反,RAF 102 “盲目”地选取球和仓。利用函数然后通知RAF 102将被该特定选择消费的资源的量。RAF 102然后通过利用规范所提供的资源向量来确定该资源消费是否可接受。然而,RAF 102的核心抽象通过将当前利用向量(利用sti)与资源向量进行“盲”比而不“知晓”这些向量的维度在真实资源的上下文中实际上代表什么,来作出此确定。
[0060]更具体地,在一实现中,RAF 102将单个球指派至单个仓。球和仓是无法分割的原子单元。由此,编写规范104的用户将被请求来定义球和仓,以对应于分配问题的最小可分部分。进一步地,RAF 102的核心抽象不在不同类型的球和仓之间进行区分。S卩,规范本身可在不同类型的球和仓之间进行区分。但是,在选择球和仓时,RAF 102的核心抽象关于规范将如何解读此球和仓是不可知的。章节B阐述描述定义不同类型的球和仓的代表性规范的示例。
[0061]通过以上介绍,解释进而将描述图3所示的每个组件。解释将假定(图1的)代表性处理元件108实现组件。其他处理元件实现同一组的组件。
[0062]洗牌模块302选择球的一排序,诸如但不限于球的随机排序。例如,假设存在10个球。每个处理元件利用其洗牌模块302来产生这10个球的不同排序(除非碰巧两个或多个处理元件产生相同的排序)。洗牌模块302还能任选地以某些方式(诸如随机方式)来对仓的排序进行洗牌。
[0063]指派模块304在某些实例中选取一候选仓,并且在其他实例中选取一候选球。例如,指派模块304可通过在所定义的仓排序中选择第一仓来开始其处理。然后,指派模块304可从所定义的球排序中选择第一球。当处理元件108将第一球成功地置入第一仓中(如果可能的话)时,指派模块304然后将在该球排序中选择第二球,并且尝试将该球装入第一仓中。当处理元件108已尝试将所有球相继地装入第一仓中时,指派模块304然后将选择第二仓。处理元件108然后将尝试把所有剩余的未分配球相继装入第二仓,依此类推。
[0064]询问模块306在当前所选球(球当前)、当前所选仓(仓当前)和当前球至仓的部分分配(已由处理元件108置入)的情况下调用利用模块308。利用模块308代表图2所述的利用模块208的一实例化。利用模块308通过生成消费向量消费仓/#对询问作出响应,消费向量消费描述假设所选球被置入所选仓则将消费的资源的量。
[0065]集聚丰旲块310从利用申旲块308接收消费向量消费仓/球。然后它将消费仓/球向量中指定的资源消费值添加至当前利用向量利用的适当维度。利用向量描述球至仓的当前部分置入所消费的资源的当前量。例如,假设处理元件108已将4个球置入一个或多个仓。利用向量描述这4个球如果被置入指定仓将消费的资源。利用^-向量具有资源维度,该资源维度映射至资源向量206的资源维度。
[0066]约束检查模块312确定如利用向量所反映的资源的当前利用是否满足适用约束。部分地,约束检查模块312通过确定利用向量中的资源利用值是否不超越资源向量206中所指定的对应容量值,来执行此任务。约束检查模块312还可确定球至仓的指派是否不违背规范中指定的任何其他约束,诸如朋友约束或对手约束。如果各个约束都没有违背,则约束检查模块312存留由集聚模块310执行的关于球至仓3|的指派的集聚;否则,约束检查模块312将取消由集聚模块310执行的集聚。
[0067]终止确定模块314确定结束处理元件108所执行的处理是否合适。例如,终止确定模块314可指令处理元件108在处理元件108已找到针对分配问题的完全解(其中所有球已被成功指派至仓)时停止其操作。在另一情形中,终止确定模块314可在分派给执行搜索的最大时间已到之际、或者有来自用户的明确指令之际终止求解的尝试。
[0068]图4示出提供图1的RAF 102的一种操作方式的纵览的过程400。在框402,RAF102接收来自用户的规范。该规范以声明性方式描述问题域的各个特性。在框404,RAF 102使用该规范来确定将一集合的项(概念化为球)分配给一集合的项接收槽(概念化为仓)的解。换言之,规范关于特定分配问题来实例化RAF 102的域不可知的抽象。
[0069]图5-6共同示出描述处理元件一比方说处理元件108 —可尝试来对分配问题求解的一种方式的过程500。在此操作模式中,处理元件108以独立于其他处理元件的方式操作。
[0070]在框502,处理元件108提供球的排序(诸如但不限于随机排序),并且可任选地提供仓的排序。在框504,处理元件108在框502中建立的排序中选择下一仓(仓■)。在过程500开始时,仓将对应于排序中的第一仓。在框506,处理元件108在框502中建立的排序中选择下一球(球.)。在第一迭代中,球将对应于排序中的第一球。
[0071]在框508,处理元件108针对所选球和仓、连同仓对球的当前分配(分配当前)(表示基于过程500的前一迭代已指派至仓的球)来调用利用模块308。在框510,处理元件108接收来自利用模块308的消费向量(消费仓/#)。在框512,处理元件108以逐个维度的方式将消费向量中指定的值加到当前利用向量利用3|?。
[0072]前行至图6,在框602,处理元件108确定利用3?是否满足所有适用约束。如果为否,在框604,处理元件108取消框512中执行的集聚。但是,如果满足了所有的约束,则在框606,处理元件108存留框512中执行的分配。这些约束包括资源向量中指定的容量约束、冲突约束(如果有的话)、对手约束(如果有的话)等等。
[0073]考虑其中处理元件108已成功放置作为朋友群的一成员的球的特定情形。处理元件108然后可针对该朋友群(以及任何相链接朋友群,如果有的话)的每一个其他成员相继重复框506-606。假定针对该(多个)朋友群的所有成员满足框602,处理元件108将存留这些球的分配及其相关联资源消费。否则,处理元件108将取消与(多个)朋友群相关联的所有分配,即使一些成员能在不超越约束的情况下个别地放置。
[0074]在框608,处理元件108确定其是否已尝试将该球排序中所有的未分配球置入仓s前。如果为否,则在框610,处理元件108返回至框508,其中选择排序中的下一球。然而,如果处理元件108已尝试了所有球,则其前行至框612,其中它确定它已尝试将所有球置入所有仓。如果为否,则在框614,处理元件108返回至框504,其中它选择仓排序中的下一仓。
[0075]假设处理元件108已尝试将所有球装入至所有仓。然后,在框616,处理元件108确定是否剩余任何未分配的球。如果为否,则已已找到完全解,并且处理元件108终止其对解的搜索。但是,如果尚未找到完全解,则处理元件108前行至框618。在框618,处理元件108确定是否已满足终止条件。一个终止条件可对应于搜索时间区间的结束。另一个终止条件可对应于来自用户的终止对解的搜索的明确指令。假设尚未满足终止条件。然后,在框620,处理元件108返回至框502,其中处理元件108将球重新洗牌(并且可任选地,还将仓重新洗牌)。处理元件108然后关于球的新排序(以及可任选地,仓的新排序)重复上述过程500。
[0076]但是,如果满足了终止条件,处理元件108前进至框622。在框622,处理元件108提供它已按照其处理的上一迭代生成的无论什么部分解。即,回想每一个处理元件106将执行如上所述的相同过程500。由此,每一个其他处理元件106将在终止时(假设无法找到完全解)将提供其自己对分配问题的部分解。
[0077]RAF 102可使用各种策略来在处理元件106提供的部分解集合中选择最适合的部分解。在一办法中,RAF 102能选择将大多数球置入仓中的解。在另一办法中,RAF 102能选择留下最大数量的未消费资源容量的解。在另一情形中,RAF 102能选择符合特定难以满足约束的解等等。或者,RAF 102能基于以上上述的两个或多个因素来挑选解。在一实现中,处理元件之一可被委托选择最合需的部分解的任务。在另一实现中,由CPU实现的程序可挑选最合需的部分解。
[0078]图7-8共同示出描述处理元件群组一比方说群组110 —尝试对分配问题求解的一种方式的过程700。在此操作模式中,群组110中的处理元件协同工作以求单个解。每一群组尝试求相对于其他群组的单独解。
[0079]在框702,群组110提供球的排序以及可任选的仓的排序。在框702,群组110在框702中建立的仓的排序中选择下一仓(仓当前)。在框706,群组110选择下一集合的球(多球以供由该群组处理。例如,假设在随机排序中存在20个球,并且在群组中存在5个处理元件。群组110能在20个球的排序中选择下5个球,以供由群组110的相应成员处理。在一实现中,群组110中的处理元件之一能代表群组110中的其他处理元件执行操作702 和 704。
[0080]群组110中的每一个处理元件接着相关于来自多球_的特定球球i执行图7和8中的虚线框所包围的操作。换言之,群组中的每个处理元件尝试将选自多球的不同球装入仓中。群组中的处理元件以并行方式执行这些计算。
[0081]更具体地,在框708,群组中的每个处理元件一比如说处理元件108 —关于仓当前、球1以及分配调用利用函数。在框710,处理元件108接收利用向量消费仓/#。在框712,处理元件108以逐个维度的方式将消费仓/#中指定的值加至利用在框802,处理元件108确定利用3|是否满足所有适用约束。如果为否,则在框804,处理元件108取消框712中执行的集聚。但是,如果完全满足了约束,则在框806,处理元件108存留框712中执行的集聚。
[0082]在框808,群组110执行联合检查以确定框708-806中作出的所有球放置是否是互为相容的。即,每个处理元件在不参考其他处理元件执行的分配的情况下执行框708-806。框808确定处理元件所执行的所有分配是否满足所有适用约束(当一起考虑时)。
[0083]在框810,群组110基于框808中所执行的约束检查的结果确定球从球向仓当Λ的最终放置。例如,如果群组110确定针对所有个别分配所有约束得到了满足,则群组110能存留单独处理元件所执行的个别分配。群组110还以适当方式更新利用如果约束没有都得到满足,则群组可取消个别处理元件所执行的一个或多个分配,并且相应地调整利用当Λ向量。在一实现中,群组110中的处理元件之一能执行框808和809的上述操作。
[0084]B.说明性示例
[0085]RAF 102可被应用于其中项(概念化为球)被指派给项接收槽(概念化为仓)的许多分配问题。为执行此任务,用户编写描述问题域的特性的规范,从而充分利用章节A中所阐述的构造。本章节描述若干问题域,以及用来描述这些域的规范。
[0086]a)将VM指派给服务器,而不考虑带宽需求。图9示出描述第一分配问题的规范。在此情形中,请求者想要在云基础结构中使用4个VM运行应用程序。表格I阐述每个VM的CPU和存储器需求。假设云数据中心提供两个服务器来运行这些VM:服务器SO和服务器SI。表格2标识这两个服务器的CPU和存储器容量。进一步假设以下约束应用于分配问题:(I)在置于服务器之上时,VM的CPU和存储器要求不超过该服务器的容量;以及(2)VM2和VM3是请求者想要置于不同服务器之上的确保容错的副本。
[0087]规范I捕捉上述分配问题。规范的行I将球映射至4个VM(例如,球O = VM0,球i = VM1等等)。规范的行2将仓映射至服务器(例如,仓O =服务器SO以及仓I =服务器SI)。行3和4定义具有4个维度的资源向量。前两个维度标识服务器SO的CPU和存储器容量,而后两个维度标识服务器SI的CPU和存储器容量。
[0088]行6-13阐述规范的利用函数。一旦被实例化,利用函数就实现在图3的上下文中引入的利用模块308。重申的是,利用函数接受当前球选择(球3|?)、当前仓选择(仓当前)以及仓和球的当前分配(分配3|?)。该利用函数计算在球被指派至仓时将消费的资源。注意,该利用函数不应用试探法。RAF 102仅仅“盲”指派球和仓,并且利用函数报告将此球指派至仓的后果。
[0089]更具体地,行6-9在利用数据阵列中编码VM的VM需求(从表格I中获取)。行10初始化消费仓/#向量(图9中仅简化标示为“利用”)。行11和12将所选VM(与所选球相关联)的需求载入消费的适当维度。行13将结果所得的消费*/J#向量返回至(图3)的集聚模块310。(注意规范I不使用分配信息。)
[0090]最后,规范的行14编码以上所阐述的第二约束。即,行14阐述VM2和VM3为对手。为尊重此约束,RAF 102将把VM2和VM3置于分开的服务器上。
[0091]a)将VM指派给服务器,并考虑带宽需求。图10示出描述第二分配问题的规范。与第一示例相像地,假设请求者想要在数据中心使用4个VM运行应用程序。并且,管理员再次指定将两个服务器用来运行VM(S0和SI)。VM需求与图9的表格I中所指定的相同,而服务器容量信息与图9的表格2中所指定的相同。
[0092]在此情形中,进一步假定VM需求现在还指定从每个VM至每个其他VM的带宽需求。进一步假定两个服务器通过单个交换机连接。第一链路(链路O)建模从第一服务器SO至第二服务器SI的业务量,并且第二链路(链路I)建模从第二服务器SI至第一服务器SO的业务量。在一情形中,这两个链路可对应于数据中心中的两个物理单向链路。在另一情形中,这两个链路可指与单个物理链路相关联的不同流,即第一流导向服务器SI,而第二流导向服务器S0。假设链路O具有150的容量,并且链路I具有100的容量。进一步地,此分配问题引入以下新约束:通信VM要置于服务器上,从而不超出连接那些服务器的网络链路的容量。
[0093]规范2捕捉上述分配问题。首先,注意该规范包括图9所示的规范I给予的相同信息。然而,为了简化附图,规范2的摘录忽略此信息。
[0094]在行1,规范2标识资源向量的两个新维度(以及规范I中列出的前4个维度)。即,第4维度列出链路O的容量,而第二维度列出链路I的容量。
[0095]在利用函数内,行3-4描述4个VM构成的集合的带宽需求。例如,行3指示VMO请求10个单元的带宽供从VMO导向VMl的业务量所用。行4指示VMl请求20个单元的带宽供从VMl导向VMO的业务量所用,以此类推。行7和8描述SO和SI之间的路径。S卩,行7描述服务器SO与服务器SI之间的第一路径,而行8描述服务器SI与服务器SO之间的第二路径。每条路径用对关联于该路径的资源向量中的维度的引用作注解。这些路径可用任何方式来发现,例如通过咨询已知配置信息、通过咨询路由表格、通过运行跟踪路线等等。
[0096]行9-15描述利用函数确定在球当* (图10中简单地标示为球)指派至仓当* (图10中简单地标示为仓)之际引发的带宽需求的方式。O球指可能(或可能已经)被指派至仓(在对利用函数的前一调用中)的另一球(球除外)。O仓指储存O球的仓,如果O球实际上已被指派至仓的话。
[0097]更具体地,行10咨询分配信息以确定是否已指派特定的O球。它将O仓定义为储存O球的仓,并且如果尚未指派O球,则它将O仓定义为空值。在行11,利用函数确定O仓是否存在(非空),以及O仓是否没有被储存在与球相同的仓内。如果为是,则在行12和13中,利用函数累加从主存球的服务器导向主存O球的服务器的路径上针对所有链路的全部带宽需求。在行14和15中,利用函数累加从主存O球的服务器导向主存球的服务器的路径上针对所有链路的全部带宽需求。
[0098]利用函数对全部O球重复上述过程。在该过程结束时,消费的带宽相关维度将在逐个链路的基础上详细列举在将所选球指派至所选仓之际所消费的带宽。一般而言,注意,此利用函数仅在两个球都被置于服务器之上时才累加这些球之间的带宽消费。
[0099]图11示出第三分配问题。本例中的分配问题具有与以上关于图10所述相同的特性。然而,本例使用更复杂的策略来对包括服务器SO和SI的物理网络建模。S卩,如代表性图A所示,网络可被概念化为节点的分层结构。叶节点(例如节点4、5、6等)对应于服务器。替代地,在另一解读中,叶节点对应于机架,每个机架储存一个或多个服务器。非叶节点(例如,节点1、2、3等)对应于任何类型的交换机,其将关联于各叶节点的装备耦合在一起。根节点对应于网络中最顶层的交换机。与两个或更多个叶节点相关联的最近公共祖先(LCA)节点对应于那些叶节点的叶节点公共祖先集合中最近公共的祖先。例如,在图A中,根节点也是叶节点4和5的公共祖先,但根节点也是叶节点6的祖先;因此,与根节点相比,节点2是叶节点4和5的较近公共祖先。
[0100]图11列出规范3的一部分,其针对特定球向特定仓的指派确定带宽的分配。(规范3省略规范I所给出的信息以简化描绘。)术语O球和O仓具有与以上关于规范2所阐述相同的含义。进一步地,规范3假设数据中心使用最短的路径路由。这意味着数据中心将使用最有效(例如最短)的路径在任两个VM之间路由业务量。
[0101]在行9_11,利用函数确定O仓是否不是空的,以及O仓是否不是仓。换g之,此检查确定O球是否存在,以及O球和球是否置于不同的仓内。如果此测试符合要求,则利用函数累加针对至LCA节点的路径(PathToLCA)中的所有链路的全部带宽要求。例如,假设叶节点4(图A所示)与主存球的服务器相关联。进一步假设叶节点5与主存O球的服务器相关联。PathToLCA对应于从节点4至关联于节点4和5的最近公共祖先(其对应于节点2)的路径。更具体地,行11考虑自球(导向O球)的流中的带宽需求,以及(自O球)导向球的流中的带宽需求。
[0102]在行12-14,利用函数确定是否O仓等于空,这意味着O球尚未被指派。如果为是,则利用函数储存从主存球(与仓相关联)的服务器至树的根的链路上的全部带宽需求。在执行此操作时,利用函数取球与O球(其中O球尚未被置入)之间的最差可能带宽消费,对应于其中关于图A中的可用路由路径O球被置于离O球“最远”处的情形。
[0103]行15-17在O球最终被置入特定O仓中时执行适当的记帐。例如,当置入球时,假设利用函数原来取未置入O球的最差可能放置。按照上述行12-14,利用函数将通过将从仓至树的根的链路上的带宽份额相加来解决此情形。后来假设O球被置于与球相同的服务器上(意味着这些球被置入同一仓内)。因此,在O球与球之间将不存在带宽成本。行15-17从而取消在行12-14相加的先前计算的带宽份额。
[0104]尽管未在规范3中示出,利用函数在O球被置于与球不同的服务器之上时执行相似的校正,但从球至O球的路径不需要通过根节点。即,该路径通过不是树的根的最近公共祖先(LCA)。鉴于O球在特定服务器上的实际放置,利用函数可去除在行12-14相加的带宽份额的已被证明是过度悲观的部分。
[0105]c)将VM指派至服务器,采用连接服务器的多条路径。接着考虑其中数据中心包括任两个服务器之间的多条路径的情形。这意味着这两个服务器可使用这些路径的任一条来通信。在此情形中,利用函数可包括以下修改:当一 VM(比方说VMx)要被置于服务器(仓)之上时,则对于已被置于不同服务器(O仓)之上的每一个其它VM(比方说VMy)而言,利用函数在从览至VM y的所有路径上累加VM ,与VM y之间的带宽需求,除以服务器VM ,与VM X间路径的数量。
[0106]例如,假设VMjJg使用从VMx导向VMy的三条路径所构成集合中的任一路径与VMy通信,并且VMjg使用从VM y导向VM x的三条路径所构成集合中的任一路径与VM x通信。假设利用函数想要清点从^^至VM y的物理链路上的带宽需求。它首先将从VM ,至VM y的带宽需求除以3 (提供从览至VM y的流的链路的总数量)。然后它将此结果指派给引导从VM x至流的全部三条链路。利用函数可在相反方向上(从执行相同操作。
[0107]d)以虚拟星形拓扑将VM指派至服务器。接着考虑其中数据中心以虚拟星形抽象组织VM的情形。此抽象提供连接所有VM的单个虚拟交换机。但是,底层物理网络可具有任何拓扑,诸如图11所示的树状拓扑。虚拟网络中的每个虚拟链路具有带宽需求B。物理网络中特定物理链路上的所需容量进而由min(m, N - m) *B给出。N指虚拟网络中VM的数量,其中m指处于连接至所考虑链路的子树中VM的数量。例如,在图10中,假设所考虑物理链路为链路1102。该链路连接至主存两个VM (关联于节点4和5)的子树,并且因此在此情形中m为2。“min”运算符涉及选择最小的无论哪一值,即m或N - m。
[0108]此情形的规范提供具有与物理网络中的每一链路相关联的维度以及非共享维度的资源向量。该规范还标识数据中心中的N个VM以及所需带宽值B。该规范还表达每一对服务器之间的路径。
[0109]假设,在特定时间,k个VM已被置于特定服务器之上。当特定新VM(比方说VMz)要被置于此服务器之上时,此服务器之外可能放置的VM的数量为N - k -1。通过使用以上所指定的带宽计算公式,规范可如下计算与此服务器相关联的链路上的带宽使用。如果(k+l)〈(N-k-l),则该链路上的带宽使用为(k+l)*B。否则,该链路上的带宽使用为N- (k+l)*B0
[0110]e)在考虑时变资源利用的情况下将VM指派至服务器。迄今所考虑的示例涉及VM至服务器的静态放置。许多真实场景还考虑VM在数据中心中运行其应用的时间。例如,面向用户的VM(其处置用户的请求)相较于夜晚可在白天执行更多的工作,且因此在白天消费更多的资源。相反,批处理VM(其执行后台计算)在夜晚可执行更多工作,并且因此在夜晚消费更多资源。备用资源在任何服务器上的可用性因此因变于时间而变化。
[0111]为解决此类分配问题,RAF规范可扩展以上定义的资源维度类型,以考虑按时隙的利用。考虑具有CPU容量服务器S0。资源向量可包括针对每一时隙的SO ePU的资源维度,例如SOmi, SOcpoi, SOmi T2等等。每一此类维度的容量与SO _的原始容量相同,假设CPU容量随时间的流逝保持恒定。
[0112]此外,利用函数用资源需求的时变清单替代资源需要的静态清单。例如,对于VM0,CPU需求可指定需求集合。此集合中的每一元素指定特定时隙的VMO的CPU需求。
[0113]为了计算当特定VM被指派给特定服务器时所消费的资源的量,利用函数将在逐个时隙的基础上累加消费。即,例如,特定VM在白天期间大量使用服务器,而另一 VM则在夜晚大量使用服务器。如果置于同一服务器之上,则对这两个服务器的消费将被累加至消费*Λ*的不同维度。因此,RAF 102可确定此联合放置是可允许的,因为它不超过任一维度的容量,而如果两个VM同时运行则联合放置将不被允许。
[0114]在一些情形中,RAF规范还可指定一个或多个软约束。考虑其中服务器被临时允许使其容量在时隙的5% (最多10%)期间超过的说明性规则。规范可使用以下陈述来表达此软约束:溢出:[{s0CPUTQ,S0CPU_T1,...}p = 0.95,b = 10%;...]0 RAF 102 将按以下方式来解读此约束。假设RAF 102尝试将球添加至服务器S0,但是发现这样做将超出资源向量的一个或多个维度的容量。RAF 102然后将检查以确定此偏离是否被规范中的溢出信息所允许。例如,假设该球放置在至少一个时隙内违背了服务器SO的CPU容量。RAF 102将确定:(a)容量是否超过不大于b%;以及(b)群组(SOotux^SOotlti,...}中至少1)%的维度不超过其容量。如果此测试符合要求,则RAF 102将允许该指派。
[0115]f)关于特定作业将VM指派给服务器。在下一示例中,请求者因变于时间作出对服务器资源的请求。这些请求构成具有相应持续时间的作业。RAF 102通过关于特定时隙将作业指派至特定服务器来处置这些请求。为了执行一作业,数据中心等待直至作业开始,然后在该作业的持续时间内在指定服务器之上运行该作业。因此,在此情形中,RAF 102执行调度工作和将VM指派至服务器的双重任务;这些任务是互连的。
[0116]在一办法中,用户能使用定义两种类型的球和两种类型的仓的规范来捕捉上述分配问题。更具体地,如图12所示,代表性RAF规范定义用于接收作业球的作业仓,以及用于接收服务器球的服务器仓。每个作业仓关联于起始时间。一旦RAF 102将作业指派至作业仓,该作业就运行作业请求中所指定数量的连续时隙,从关联于作业仓的时隙起算。进一步地,每个作业关联于为该作业进行工作的一个或多个VM0
[0117]此外,RAF规范定义每个时隙针对每个非共享服务器资源((CPU、存储器等)的资源维度。相似地,RAF规范可定义每个时隙针对每个共享资源(诸如用于每条网络链路的带宽)的资源维度。此外,RAF规范定义针对全部资源容量、每一时隙和每一资源的资源维度,其容量设置成跨所有服务器的集聚资源容量。例如,每一时隙的针对总CPU容量的资源维度对应于该时隙中所有服务器上的总可用CPU容量。
[0118]在操作中,RAF 102将作业球置入仅作业仓中,并且将服务器球置入仅服务器仓中。然而,RAF规范是区分不同类型的球和仓的仅有知识;S卩,RAF 102所提供的核心抽象不参照规范中所提供的其定义来挑选球和仓。因此,为了实施上述放置约束,规范将冲突维度C添加至资源向量。该维度具有任意选择的容量(比方说I)。如果作业球被指派至服务器仓、或者服务器球被指派至作业球,则利用函数将值2指派给消费的容量维度。RAF 102将根据消费的冲突维度超过资源向量的冲突维度的容量(其被设为I)的事实而拒绝该指派。每个处理元件尝试将每一球指派至每一仓。这将确保处理元件将尝试将每一未曾分配的作业球装入每一作业仓中,并且将每一未曾分配的服务器球装入每一服务器仓中。
[0119]更具体地,假设利用函数被请求考虑将作业球装入作业仓的适当性,其中该作业仓与起始时间1;相关联。(进一步假设其中带宽需求在此分配问题中不起作用的简化情形。)利用函数计算该作业的集聚CPU和存储器需求,然后将那些值添加至与时隙TJPk个后续时隙的总CPU消费和总存储器消费相对应的维度,其中k是作业的持续时间。由此,如果作业Ji持续2个时隙,则利用函数使消费向量的资源维度总_CPU_TX、总_CPU_TX+1、总_存储器_τχ和总_存储器_T X+1递增。RAF 102然后将这些值与资源向量的关联维度作比较以标识不可能满足的作业向时隙的指派。如果未违背约束,则RAF 102将该作业指派至指定作业仓。
[0120]现在假设利用函数被请求考虑将特定服务器球添加至特定服务器仓的适当性。利用函数首先检查以确定此服务器球相关联的作业是否已被指派至作业仓。如果为否,则利用函数通过将消费的冲突维度设置为2来中止该指派。替代地,假设与服务器球相关联的作业已获指派,并且该作业在时间Tx开始。利用函数然后针对与作业持续时间相关联的每个时隙,使与关联于服务器仓的服务器(比方说Sm)相对应的消费的资源维度递增。例如,利用函数将使得SmCPU_Tx、SmCPU_Tx+1、Sm存储器_T , S m存储器_T Χ+1维度递增。
[0121]在已经将一个或多个先前作业指派至时隙和服务器之后,RAF 102还可处理随时间流逝以交错方式抵达的请求。RAF 102通过将在新请求时间当前执行的所有作业球钉扎至其对应作业仓(即,其对应的起始时间)来执行此任务。相似地,RAF 102将与执行作业相关联的服务器球钉扎至其相应的服务器仓。RAF 102可通过应用规范中所提供的适当钉扎指令来执行该任务。那些指令指定要尊重在新请求时间执行的作业,而不破坏这些作业。在一替代实现中,RAF102还钉扎已被分配至相应仓、但其中作业尚未开始(意味着作业已被成功调度以在未来的指定时间运行、但在当前不执行)的至少一些作业球和服务器球。
[0122]实际上,当处理新请求时,RAF 102首先通过针对每个被钉扎球调用利用函数来处理所有的被钉扎球。通过这样做,RAF 102相对于当前执行的和/或调度的未来作业来重构消费向量。在完成之后,RAF 102继续基于可用资源将新作业指派至适当仓。
[0123]图13示出归纳上述操作的过程1300。在框1302,RAF 102选取球。在框1304,如果所选球是作业球且所选仓是作业仓,则RAF 102尝试将该作业球装入所选作业仓。在框1306,如果所选球是服务器球而所选仓是服务器仓,则RAF 102尝试将该服务器球装入服务器仓,只要该服务器球的相关联作业球已经被指派至作业仓即可。(注意,规范建立了对应于VM的所选服务器球和特定作业之间的联结。)RAF 102对于所有待决的作业请求重复此进程。在框1308,在接收到新作业请求之际,RAF 102将当前执行作业和/或调度的未来作业钉扎至其相关联的作业仓和服务器仓。RAF 102然后将尝试使用其余的未曾分配作业球和未曾分配服务器球来满足新作业请求。
[0124]g)针对机架知晓副本放置的情形来指派VM。在下一分配问题中,请求者可能想要放置三个数据副本:两个在同一机架上的多分开服务器上,而一个在不同机架上的服务器上。RAF规范可通过定义两种球类型(机架球和服务器球)和两种仓类型(机架仓和服务器仓)来捕捉此问题。RAF规范用两个球来表示每个副本:要置于机架仓上的机架球,以及要置于服务器仓上的服务器球。因此,规范对每个数据项关联6个球。
[0125]RAF 102使用朋友和对手约束来增强以上所定义的放置约束。S卩,规范将机架球I和2描述为朋友,并且将机架球I和3描述为对手。这捕捉副本至机架约束。进一步地,规范陈述服务器球I和2为对手。这具有将同机架副本置于不同服务器上的效果。
[0126]在操作中,RAF 102在指派与感兴趣机架相关联的任何服务器球之前指派机架球。这类似以上陈述的示例(f),其中RAF 102在指派与作业球相关联的任何服务器球之前指派作业球。
[0127]h)将网络路径指派至VLAN IDo在下一示例中,分配问题涉及将网络路径映射至最小数目的VLAN ID,作为多路径协议的一部分。此问题进一步规定指派至VLAN ID的网络路径不能创建回路。RAF 102通过使用球表示路径、并使用仓表示VLAN ID来对此问题建模。进一步地,利用函数包括用于确定将路径添加至VLAN ID是否创建与VLAN中现有路径的回路的逻辑。
[0128]RAF 102不能够直接最小化VLAN的数量。然而,RAF 102能通过以适当下限数量的仓开始、然后迭代地增加仓的数量直至发现解(如果可能的话)来间接地逼近此结果。
[0129]i)将端口映射至交换机。在最后的示例中,分配问题涉及将流映射至交换机的不同端口。即,在此问题中,目标是映射流以使最高负载端口与最低负载端口的流容量之间的差最小化。该规范通过将任两个端口的负载之间的差约束至给定至来逼近该目标。RAF 102在搜索解时迭代地收紧此约束,直至RAF 102无法产生解。
[0130]总之,此直接已陈述了若干示例,作为示例而非限制。RAF 102可应用于许多其它问题环境,诸如:施加路径长度约束的分配问题;多播无线网络问题;广域内容分发网络中的服务器选择问题;企业网络中的VLAN指派等等。
[0131]C.探索操作模式和开拓操作模式
[0132]图14归纳了图1的处理元件106能藉以求解分配问题的两种模式:探索模式和开拓模式。一般而言,图14示出两个三角形包络线;左侧包络线对应于探索模式,而右侧包络线对应于开拓模式。每个包络线进一步描绘多个指派阶段。即,包络线的顶部对应于第一阶段;中部对应于第二阶段;而底部对应于第三阶段。尽管仅示出了三个阶段,但处理可涉及附加阶段。
[0133]在每个阶段中,波浪线表示特定处理元件(例如,特定GPU或多核CPU线程)执行的处理。由此,每个阶段涉及并行工作的4个处理元件。每条波浪线端部的圆圈表示相关联处理元件产生的结果。该结果在不同的相应上下文中可具有不同的含义。在第一上下文中,结果可表示将指定球排序中的所有球指派至特定仓的尝试的结果。例如,在第一阶段,处理元件尝试将球指派至仓O。在第二阶段,处理元件尝试将球指派至仓I。在第三阶段,处理元件尝试将球指派至仓2。在第二上下文中,端部圆圈可表示将所有球指派至所有可能仓的尝试的结果。换言之,在此上下文中,端部圆圈表示对分配问题的解,对应于完全解(其中每一个球被指派至仓)或部分解(其中一个或多个球保持未分配)。在以下说明中,首先假设第一上下文应用于图14的说明。
[0134]首先考虑探索模式的情形,在该图的左侧示出。在第一顶部阶段,每个处理元件独立地尝试将未分配球装入仓0,以达成与其它处理元件不同的结果。(为了简化说明,假设处理元件使用图5-6的第一模式而非图7-8的第二模式计算结果,尽管后者也是一可能的选择。)然后,在第二阶段,每个处理元件尝试将未分配球装入仓1,以达成与其它处理元件不同的结果。RAF 102不评估由处理元件在第一阶段内生成的结果,例如以在4个结果中选择被认为最合乎需要的一个结果。因此,第二阶段的输入条件不取决于任何这种评估。上述进程继续,直至最后一个仓即仓bk被处理。在此处理结束时,每个处理元件会以与其它处理元件不同的方式将球指派至仓。即,解中将不存在共性,除非碰巧导致了该共性。
[0135]现在考虑图14右侧所描绘的开拓模式。第一顶部阶段与探索模式相同地进行;即,每个处理元件独立地尝试将未分配球装入仓0,以达成与其它处理元件不同的结果。RAF102现在在第一阶段所提供的4个结果中挑选被认为最为合乎需要的一结果。最为合乎需要的解可用不同方式来定义。例如,在一情形中,最为合乎需要的结果可对应于放置最大数量球的结果,和/或满足了被认为难以满足的一个或多个约束的结果。在第二阶段,每个处理元件采用已被判定为最合乎需要的球向仓O的指派。在所有阶段结束时,最终的解将针对仓O至k-ι具有相同的球至仓的指派,而对仓k则具有不同的指派。
[0136]现在考虑其中图14的每个端部圆圈表示一完全解的上下文,即其表示处理元件的将所有球指派至所有仓的尝试的结果。因而,在此上下文中,三个阶段表示每个处理元件对分配问题求解的三个尝试。
[0137]在探索模式中,每个处理元件能在每个阶段开始时重新开始,而不考虑前一阶段所提供的解。另一方面,在开拓模式中,每个处理元件的确考虑前一阶段所提供的解(如果前一阶段存在)。RAF 102可用不同方式执行开拓模式。在一办法中,在阶段结束时,RAF102能基于任何一个或多个准则选择被认为最为合乎需要的解。RAF 102然后能以任何方式扰乱该解,诸如通过从至少一个仓移除至少一个球。作为附加或替代,RAF 102能将一个或多个约束指定为相较于其它约束在后续阶段中满足是更为重要的。RAF 102然后能将此输入条件馈送至所有处理元件,从而请求处理元件再次尝试将未分配球装入仓。每个处理元件可尝试通过按照不同相应次序将未分配球装入仓来求解,由此可能产生相较于其它处理元件不同的解。作为替代或附加,RAF 102可以不同方式扰乱来自前一阶段的“最佳”解,诸如通过从仓移除不同集合的球和/或实施不同集合的约束。RAF 102然后可将不同的经扰乱的输入条件馈送至下一阶段中的不同相应处理元件。
[0138]作为替代或附加,RAF 102能逐步地增加其在遭遇不满意的解之际扰乱“最佳”解的程度。例如,RAF 102能在第二阶段移走η个球。如果这无法得到令人满意的解,则RAF102能在第三阶段移走η+ρ个球,依此类推。此退火策略可帮助将现有的最佳解移离搜索空间内的局部最小值。
[0139]探索模式和开拓模式具有不同的相应优点和潜在缺点。探索模式是有用的,因为它相较于开拓模式提供解的更大多样性。此外,探索模式不需要RAF102在每一阶段之后关于哪一结果最为合乎需要作出选择(这在不利用因域而异的试探法考虑的情况下可能是挑战性的判断)。另一方面,开拓模式在对解下钻时会是有用的,尤其当解空间仅提供若干解时。实际上,RAF 102可采用根据探索模式和开拓模式执行的处理的任何组合,包括其中不执行开拓模式处理或不执行探索模式处理的情形。
[0140]图15示出归纳探索模式的操作的过程1500。在单一框1502,RAF 102产生线程I至η(或线程群组)的结果集。如标记1504所示,框1502中的处理不考虑对前一阶段所产生的在先指派结果(如果前一阶段存在的话)的评估。
[0141]图16示出归纳开拓模式的操作的过程1600。在单一框1602,RAF 102再次产生线程I至η(或线程群组)的结果集。如标记1604所示,框1602中的处理现在的确考虑对前一阶段所产生的指派结果(如果前一阶段存在的话)的评估。
[0142]图17示出提供对线程集合或进程群组(例如,GPU线程、多核CPU线程、或某其它处理框架的处理元件)所执行的处理的一般纵览的过程1700。在一情形中,RAF 102可执行求解分配问题的过程1700。但过程1700不限于此。更一般地,任何问题求解框架可使用过程1700来执行对解空间的并行探索,包括与任何问题域中的任何非确定性多项式时间难题(NP难题)相关联的解空间。
[0143]框1702和1704指由第一线程或线程群组执行的处理。在框1702,线程(或线程群组)生成输入数据以供处理。在以上上述的示例中,此处理需要生成球和/或仓的经排序列表。在框1704,线程(或线程群组)尝试基于框1702中提供的输入数据计算解。在上述示例中,此处理需要将从球排序中选出的球置入从仓排序中选出的仓内。框1706和1708对应于由第二线程或线程群组执行的相同操作。框1710和1712对应于由第η线程或线程群组执行的相同操作。
[0144]在框1714,在每一迭代之后,求解问题框架输出一解。该解可对应于完全解(如果找到一个的话);否则,该框架输出部分解。过程1700重复直至求得完全解或达到其它终止条件。该处理可进一步利用探索模式和开拓模式的任何组合,如上所述。
[0145]D.代表性计算功能
[0146]图18阐述了可以被用来实现上文所描述的功能的任何方面的说明性计算功能1800。例如,图18所示的计算功能1800的类型可被用来实现图1的RAF102的任何方面,或者与RAF 102交互的计算机设备的任何方面。在一情形中,计算功能1800对应于主存某类型的并行处理框架(诸如一个或多个GPU模块(例如GPU芯片)、多芯CPU等等)的计算设备。在所有情形中,计算功能1800表示一个或多个物理且有形的处理结构。
[0147]计算功能1800可以包括诸如RAM 1802和ROM 1804等易失性和非易失性存储器以及一个或多个处理设备1806。例如,处理设备1806可包括一个或多个CPU (单核或多核)和至少一个GPU模块1808。计算功能1800还可任选地包括诸如硬盘模块、光盘模块等等之类的各种介质设备1810。当处理设备1806执行由存储器(例如,RAM 1802,ROM 1804或在别处维护的指令时,计算功能1800可以执行上文所标识的各种操作。
[0148]更一般地,指令和其它信息可以被存储在任何计算机可读介质1812上,计算机可读介质包括但不限于静态存储器存储设备、磁存储设备、光存储设备等。术语计算机可读介质还涵盖多个存储设备。在任何情况下,计算机可读介质1812都表示某种形式的物理和有形的实体。
[0149]计算功能1800还包括用于接收各种输入(通过输入模块1816),以及用于提供各种输出(通过输出模块)的输入/输出模块1814。一种特定输出机制可包括呈现模块1818及相关联的图形用户界面(⑶I) 1820。计算功能1800还可以包括用于通过一个或多个通信管道1824与其他设备交换数据的一个或多个网络接口 1822。一条或多条通信总线1826将上述组件通信地耦合在一起。
[0150]通信管道1824可以以任何方式来实现,例如,通过局域网、广域网(例如,因特网)等等,或其任何组合。通信管道1824可包括可由任何协议或协议的组合管理的硬连线的链路、无线链路、路由器、网关功能、名称服务器等等的任何组合。
[0151]图19示出GPU模块1900的细节。在一非限制实现中,GPU模块1900实现由RAF102执行的成批处理。GPU模块1900可由图18的计算功能1800 (例如对应于该附图所示的GPU模块1808)或某其它主机系统主存。
[0152]GPU模块1900包括多个线程(出于简化的目的仅其两个被示出)。例如,GPU模块1900可包括64个线程、128个线程等等。线程I可包括处理组件1902连同存储器组件1904。例如,存储器组件1904可对应于寄存器等等。相似地,线程2可包括处理组件1906连同存储器组件1908。在一实现中,每一线程群组具有单个指令指针。GPU模块1900以群组中的线程都在相同时间但对于不同的输入数据执行同一指令的方式来驱动这些线程。任何单个线程可扔掉特定指令的结果(如果不需要的话)。在一实现中,线程群组中的线程可在某些情形下彼此通信(如双箭头1910指示地)。
[0153]作为替代或除此之外,前述各节中所述的任何功能可至少部分地由一个或多个硬件逻辑组件来执行。作为示例而非限制,计算功能可使用以下的一个或多个来实现:现场可编程门阵列(FPGA);专用集成电路(ASIC);专用标准产品(ASSP);片上系统(SOC);复杂可编程逻辑器件(CPLD)等等。
[0154]最后,说明书在说明性挑战或问题的上下文中描述了各种概念。这种说明方式不构成其他人以此处所指定的方式理解和/或明确表达挑战或问题的许可。
[0155]尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述特定特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式公开的。
【权利要求】
1.一种用于将一集合的项分配至一集合的仓的方法,包括: 接收规范,所述规范以声明性方式描述特定分配问题的各种特性;以及使用所述规范连同域不可知的资源分配框架来确定将所述集合的项分配至所述集合的仓的解, 所述规范与至少一个利用函数相关联,所述利用函数针对所提议的特定项向特定仓的指派描述与所提议的指派相关联的资源的消费, 所述资源分配框架由计算功能实现。
2.如权利要求1所述的方法,其特征在于,所述规范还阐述: 与所述分配问题相关联的真实实体向所述集合的项的映射; 与所述分配问题相关联的真实实体向所述集合的仓的映射;以及 资源向量,其标识与所述分配问题相关联的资源、连同相应资源的容量。
3.如权利要求2所述的方法,其特征在于,所述资源向量包括以下至少之一: 与非共享资源相关联的一个或多个维度; 与共享资源相关联的一个或多个维度;以及 具有向其指派的冲突检查容量值的至少一个冲突维度。
4.如权利要求2所述的方法,其特征在于,所述规范附加地阐述以下至少之一: 至少第一项和第二项之间的朋友关系,所述朋友关系提示如果可能的话,所述资源分配框架将所述第一项和所述第二项指派至同一仓; 至少第一项和第二项之间的对手关系,所述对手关系提示如果可能的话所述资源分配框架将所述第一项和所述第二项指派至不同的各个仓; 钉扎约束,其定义其中在所述资源分配框架所执行的求解操作开始时至少一项被钉扎至至少一个仓的情形;以及 至少一个软约束,所述至少一个软约束描述其中准许至少一个其它约束被违背的条件。
5.如权利要求1所述的方法,其特征在于,所述计算功能由并行操作以求所述解的多个处理元件来实现。
6.如权利要求5所述的方法,其特征在于, 每个处理元件或每一群组的处理元件通过对每次迭代尝试将项装入仓来迭代地尝试求解, 在探索模式中,每次迭代的输入条件不取决于对前一迭代中所提供结果的评估。
7.如权利要求5所述的方法,其特征在于, 每个处理元件或每一群组的处理元件通过对每次迭代尝试将项装入仓来迭代地尝试求解, 在开拓模式中,除第一次迭代外,每次迭代的输入条件取决于对前一迭代中所提供结果的评估。
8.一种用于求解约束问题的问题求解框架,包括: 多个处理元件, 每个处理元件被配置成重复地: 生成与所述约束问题相关联的输入数据;以及 尝试基于所述输入数据计算所述约束问题的解。
9.如权利要求8所述的问题求解框架,其特征在于,所述问题求解框架被配置成使用探索模式和开拓模式的任何组合来操作: 在探索模式中,与特定处理元件的特定迭代相关联的所述输入数据不取决于对前一迭代中所提供结果的评估;以及 在开拓模式中,除第一次迭代外,与特定处理元件的特定迭代相关联的所述输入数据取决于对前一迭代中所提供结果的评估。
10.—种用于存储计算机可读指令的计算机可读存储介质,所述计算机可读指令在由一个或多个处理设备执行时提供一种资源分配框架,所述计算机可读指令包括: 配置成提供一项排序的第一逻辑组件; 配置成在一仓排序中选择下一仓仓的第二逻辑组件; 配置成从所述项排序中选择下一项球的第三逻辑组件; 配置成针对项至仓的当前分配(分配3|?)连同仓和球来调用利用模块的第四逻辑组件; 配置成从所述利用模块接收消费向量消费的第五逻辑组件,所述消费向量消费描述与所提议的球向仓的指派相关联的资源的消费; 配置成将与消费相关联的资源添加至当前利用向量利用的第六逻辑组件,所述当前利用向量利用描述对用于项至仓的当前部分指派的资源的当前利用;以及 配置成确定利用是否满足指定约束,并且如果满足则存留所述第六逻辑组件的结果,如果不满足则取消所述第六逻辑组件的结果的第七逻辑组件, 由所述第一逻辑组件至所述第七逻辑组件执行的操作对不同相应项重复,直至求得解,所述解对应于项至仓的最终指派。
【文档编号】G06F9/50GK104487947SQ201380038734
【公开日】2015年4月1日 申请日期:2013年7月19日 优先权日:2012年7月20日
【发明者】S·古哈, R·巴格万, A·莱 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1