1.本技术涉及高性能计算技术领域,尤其涉及一种slurm集群伸缩方法、系统及设备。
背景技术:
2.slurm(simple linux utility for resource management)调度器,是一个用于linux和unix内核系统的免费、开源的任务调度工具,是目前高性能计算hpc(high performance computing)领域中常用的资源管理工具。
3.随着hpc+云的发展,云超算行业也逐渐迎来变化,如何借助slurm调度器的任务调度能力,充分发挥云资源的弹性优势,成为一个极大的挑战。目前slurm调度器的power saving省电模式支持slurm调度器控制slurm集群内的计算节点进行开关机,但是这给slurm调度器带来了非常大的工作压力。尤其是大规模集群的场景下,频繁大量的弹性资源管理工作极大增加了slurm调度器的负载,导致slurm调度器的稳定性严重不足。
技术实现要素:
4.本技术的多个方面提供一种slurm集群的伸缩方法、系统及设备,用以提高slurm集群的伸缩灵活性和/或效率。
5.本技术实施例提供一种slurm集群的伸缩系统,包括slurm调度器和多个伸缩组,单个伸缩组配置为管理一组云服务器实例,不同伸缩组适配不同的实例定制需求;
6.所述slurm调度器,用于从预置的多个任务队列中为目标任务确定适配的目标队列,每个任务队列关联一个伸缩组;若所述目标队列下的可用计算节点不足,则在所述目标队列下为所述目标任务唤起新计算节点,并通知所述目标队列关联的目标伸缩组;在所述新计算节点准备就绪后,使用所述新计算节点运行所述目标任务;
7.所述目标伸缩组,用于为所述新计算节点生产对应的云服务器实例,以扩增所述目标队列下的可用计算节点。
8.本技术实施例还提供一种slurm集群的伸缩方法,包括:
9.接收任务处理请求,所述任务处理请求中指定有待处理的目标任务;
10.从预置的多个任务队列中为目标任务确定适配的目标队列,每个任务队列关联一个伸缩组,单个伸缩组配置为管理一组云服务器实例,不同伸缩组适配不同的实例定制需求;
11.若所述目标队列下的可用计算节点不足,则在所述目标队列下为所述目标任务唤起新计算节点,并通知所述目标队列关联的目标伸缩组,以供所述目标伸缩组为所述新计算节点生产云服务器实例以扩增所述目标队列下的可用计算节点;
12.在所述新计算节点准备就绪后,使用所述新计算节点运行所述目标任务。
13.本技术实施例还提供一种slurm集群的伸缩方法,包括:
14.接收目标伸缩组在为slurm调度器唤起的新计算节点生产云服务器实例之后发出
的通知,其中,所述目标伸缩组为所述slurm调度器从多个任务队列中为目标任务确定出的目标队列所关联的伸缩组,每个任务队列关联一个伸缩组,单个伸缩组配置为管理一组云服务器实例,不同伸缩组适配不同的实例定制需求;
15.控制所述新计算节点分别进行初始化;
16.在确定所述新计算节点完成初始化后,通知所述slurm调度器,以使所述slurm调度器获知其唤起的新计算节点已准备就绪。
17.本技术实施例还提供一种slurm调度器,包括存储器、处理器和通信组件;
18.所述存储器用于存储一条或多条计算机指令;
19.所述处理器与所述存储器和所述通信组件耦合,用于执行所述一条或多条计算机指令,以用于:
20.通过所述通信组件接收任务处理请求,所述任务处理请求中指定有待处理的目标任务;
21.从预置的多个任务队列中为目标任务确定适配的目标队列,每个任务队列关联一个伸缩组,单个伸缩组配置为管理一组云服务器实例,不同伸缩组适配不同的实例定制需求;
22.若所述目标队列下的可用计算节点不足,则在所述目标队列下为所述目标任务唤起新计算节点,并通过所述通信组件通知所述目标队列关联的目标伸缩组,以供所述目标伸缩组为所述新计算节点生产云服务器实例以扩增所述目标队列下的可用计算节点;
23.在所述新计算节点准备就绪后,使用所述新计算节点运行所述目标任务。
24.本技术实施例还提供一种管控节点,包括存储器、处理器和通信组件;
25.所述存储器用于存储一条或多条计算机指令;
26.所述处理器与所述存储器和所述通信组件耦合,用于执行所述一条或多条计算机指令,以用于:
27.通过所述通信组件接收目标伸缩组在为slurm调度器唤起的新计算节点生产云服务器实例之后发出的通知,其中,所述目标伸缩组为所述slurm调度器从多个任务队列中为目标任务确定出的目标队列所关联的伸缩组,每个任务队列关联一个伸缩组,单个伸缩组配置为管理一组云服务器实例,不同伸缩组适配不同的实例定制需求;
28.控制所述新计算节点分别进行初始化;
29.在确定所述新计算节点完成初始化后,通过所述通信组件通知所述slurm调度器,以使所述slurm调度器获知其唤起的新计算节点已准备就绪。
30.在本技术实施例中,引入伸缩组来与slurm调度器进行配合,由伸缩组来承担弹性资源管理工作,而slurm调度器可专注于任务调度工作,从而可有效降低slurm调度器的负载压力,改善slurm调度器的稳定性,集群的伸缩不再受限于slurm调度器的处理能力,因此,可有效提升伸缩的效率;而且,通过在slurm调度器中配置多个任务队列,并为每个任务队列关联一个伸缩组,不同伸缩组可适配不同的实例定制需求,基于此,可从队列层面灵活规划资源,并基于不同任务的资源需求,灵活地、有针对性地在相关的任务队列下进行资源伸缩,支持slurm调度器将任务调度到适配的资源上,最大化发挥资源价值,避免因资源与任务需求不适配而导致资源浪费。
附图说明
31.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
32.图1为本技术一示例性实施例提供的一种slurm集群的伸缩系统的结构示意图;
33.图2为本技术一示例性实施例提供的一种伸缩方案的逻辑示意图;
34.图3为本技术一实施例实施例提供的一种应用场景的示意图;
35.图4为本技术另一示例性实施例提供的一种slurm集群的伸缩方法的流程示意图;
36.图5为本技术另一示例性实施例提供的另一种slurm集群的伸缩方法的流程示意图;
37.图6为本技术又一示例性实施例提供的一种slurm调度器的结构示意图;
38.图7为本技术又一示例性实施例提供的一种管控节点的结构示意图。
具体实施方式
39.为使本技术的目的、技术方案和优点更加清楚,下面将结合本技术具体实施例及相应的附图对本技术技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
40.目前,频繁大量的弹性资源管理工作极大增加了slurm调度器的负载,导致slurm调度器的稳定性严重不足。为此,本技术的一些实施例中:引入伸缩组来与slurm调度器进行配合,由伸缩组来承担弹性资源管理工作,而slurm调度器可专注于任务调度工作,从而可有效降低slurm调度器的负载压力,改善slurm调度器的稳定性,集群的伸缩不再受限于slurm调度器的处理能力,因此,可有效提升伸缩的效率;而且,通过在slurm调度器中配置多个任务队列,并为每个任务队列关联一个伸缩组,不同伸缩组可适配不同的实例定制需求,基于此,可从队列层面灵活规划资源,并基于不同任务的资源需求,灵活地、有针对性地在相关的任务队列下进行资源伸缩,支持slurm调度器将任务调度到适配的资源上,最大化发挥资源价值,避免因资源与任务需求不适配而导致资源浪费。
41.以下结合附图,详细说明本技术各实施例提供的技术方案。
42.图1为本技术一示例性实施例提供的一种slurm集群的伸缩系统的结构示意图。图2为本技术一示例性实施例提供的一种伸缩方案的逻辑示意图。如图1所示,该系统包括:slurm调度器10和多个伸缩组20。
43.本实施例中,伸缩组是具有相同应用场景、遵循相同规则的云服务器实例的集合。云服务器实例可理解为一台虚拟服务器,内含cpu、操作系统、网络配置、磁盘等基础的组件,这些组件的功能可通过实际的物理资源来实现。伸缩组具有自我管理能力和与其它对象之间的交互能力。单个伸缩组配置为管理一组云服务器实例。本实施例中,不同伸缩组可适配不同的实例定制需求,而本实施例中,实例定制需求可由集群用户通过在slurm调度器10中定制任务队列而示意出。
44.slurm集群中包含多个计算节点(实质为虚拟节点),slurm集群是通过任务队列来进行管理资源利用的,基于此,本实施例中,从slurm调度器10的角度来说,slurm调度器10可根据集群用户的定制要求创建多个任务队列,不同任务队列可适配不同的任务形态。例
如,任务队列a可配置为4核队列,这可透出任务队列a的实例定制需求为需要4核cpu的云服务器实例。再例如,任务队列b可配置为gpu队列,这透出任务队列b的实例定制需求为需要gpu的云服务器实例。又例如,任务队列c可配置为用户a队列,这透出任务队列c的实例定制需求为需要只为用户a服务的云服务器实例。另外,slurm调度器10还可设定各个任务队列的配置参数,配置参数可包括但不限于计算节点的数量、所需云服务器实例的规格、所允许的使用用户等。这样,通过设置多个任务队列,可更加灵活地适配不同的任务,从而使任务能够获得适配的计算资源,进而提高任务处理效率。
45.在创建slum集群的过程中,本实施例中,可为每一个任务队列分别组建伸缩组20,这样,每个任务队列关联一个伸缩组20,而每个任务队列关联的伸缩组20与其透出的实例定制需求相适配。例如,可为前文示例中的任务队列a组建一伸缩组20,该伸缩组20可管理一组4核cpu的云服务器实例。另外,本实施例中,从slurm调度器10的角度来说,每一个任务队列下部署有多个计算节点(实质为虚拟节点),slurm调度器10可通过调度单个任务队列下的计算节点来处理该任务队列中的任务,而无需关注计算节点背后的物理资源。据此,基于任务队列与伸缩组20之间的关联关系,可将slurm调度器10角度的计算节点(实质为虚拟节点)关联至云服务器实例,再通过云服务器实例关联至实际的物理资源,从而实现slurm调度器10中的计算节点到实际的物理资源之间的映射。基于此,slurm调度器10只需从计算节点的层面进行任务调度即可,而无需关注云服务器实例层面和/或实际的物理资源层面,这可有效降低slurm调度器10中的任务调度复杂度,缓解slurm调度器10的负载压力。而从伸缩组20的角度来看,由于其是关联在任务队列下的,因此,其可按照slurm调度器10对任务队列的伸缩需求,在任务队列下进行资源伸缩管理,从而与slurm调度器10配合实现slurm集群的伸缩。
46.基于此,本实施例中,slurm调度器10,可接收任务处理请求,其中任务处理请求中可指定待处理的目标任务。slurm调度器10可从预置的多个任务队列中为目标任务确定适配的目标队列。可知,目标队列是slurm集群中多个任务队列中的其中一个。实际应用中,任务处理请求中还可为目标任务指定目标队列,这种情况下,slurm调度器10可按照任务处理请求,将目标任务调配至目标队列下。当然,本实施例并不限于此,任务处理请求中也可携带目标任务对应的任务需求,包括但不限于对cpu核数的需求、计算节点数量的需求等,这中情况下,slurm调度器10可根据目标任务的任务需求为目标任务分配与其任务需求适配的目标队列。
47.之后,slurm调度器10可判断目标队列下的可用计算节点是否充足。其中,本实施例中,可用计算节点是指已经生产有云服务器实例的计算节点,也即是,已经关联上实际物理资源的计算节点。在本实施例的slurm集群伸缩场景中,目标队列下可包含多个计算节点,并可由伸缩组20为slurm集群中的计算节点生产或释放云服务器实例,基于此,本实施例中,在伸缩组20为计算节点生产的云服务器实例就绪的情况下,可将这类计算节点描述为可用计算节点,而在伸缩组20将计算节点的云服务器实例释放的情况下,可将这类计算节点描述为不可用计算节点。slurm调度器10可维护目标队列包含的多个计算节点的状态,以表征出可用计算节点和不可用计算节点。
48.对slurm调度器10来说,若确定目标队列下的可用计算节点不足,则可在目标队列下为目标任务唤起新计算节点,并通知目标队列关联的目标伸缩组20。正如前文提及的,目
标队列下也包含有不可用计算节点,这里,slurm调度器10在目标队列下的可用计算节点不足的情况下,从目标队列下选取部分不可用计算节点进行唤起,我们将选取的这部分不可用计算节点描述为新计算节点,应当理解的是,这里新计算节点并不代表在目标队列中加入初始规模之外的更多计算节点。实际应用中,可通过在slurm调度器10的power saving省电模式下自定义resume脚本来支持slurm调度器10与伸缩组20之间的配合逻辑,slurm调度器10可在确定目标队列下的可用计算节点不足的情况下调用resume脚本,通过运行resume脚本可驱使slurm调度器10执行上述的唤起新计算节点、通知目标伸缩组20等操作。
49.对于目标伸缩组20来说,可为新计算节点生产对应的云服务器实例。这样,slurm调度器10唤起的新计算节点可通过云服务器实例映射至实际的物理资源,从而变为可用计算节点,slurm调度器10可修改新计算节点的状态为可用计算节点,例如,设置为power_up状态。基于此,slurm调度器10可在新计算节点准备就绪后,使用新计算节点运行目标任务,也即是,将目标任务调度至新计算节点上进行处理。这样,通过目标伸缩组20为新计算节点生产对应的云服务器实例,可扩增目标队列下的可用计算节点。同样,通过slurm调度器10与伸缩组20的配合,还可为其它任务进行任务队列下的可用计算节点扩增,因此,从slurm集群的角度来看,通过slurm调度器10与伸缩组20的配合,可实现slurm集群中可用资源的自动扩增,也即是,可在slurm集群内按需自动扩增可用计算节点的数量。
50.以上描述了目标队列下的可用计算节点不足的情况下,在目标队列下进行可用计算节点扩增的技术方案。以下将对slurm集群中的可用资源的自动回收方案进行说明。
51.对于slurm调度器10来说,可监测slurm集群中各个可用计算节点上的负载情况,如果发现slurm集群中存在需要关闭的可用计算节点,则可与伸缩组20进行配合,来回收可用计算节点。其中,确定可用计算节点需要关闭的条件可包括但不限于空闲时间超过预设时长等。slurm调度器10可确定需要关闭的可用计算节点各自所属的任务队列,为便于区分,我们将需要关闭的可用计算节点各自所属的任务队列描述为待更新任务队列。slurm调度器10向各个待更新任务队列所关联的伸缩组20通知所需关闭的可用计算节点,被通知到的伸缩组20可将对应的云服务器实例释放,也即切断这些需要关闭的可用计算节点与实际的物理资源之间的映射,从而确实slurm调度器10将需要关闭的可用计算节点的状态变为已关闭,例如设置为power_down状态。这样,slurm集群可通过调用待更新任务队列各自关联的伸缩组20将对应的云服务器实例释放,从而缩减待更新任务队列下的可用计算节点。从slurm集群的角度来看,通过slurm调度器10和伸缩组20之间的配合,可及时回收集群中需要关闭的可用计算节点,从而按需缩减集群中的可用计算节点。实际应用中,可通过在slurm调度器10的power saving省电模式下自定义suspand脚本来支持slurm调度器10与伸缩组20之间的配合逻辑,slurm调度器10可在确定slurm集群中存在需要关闭的可用计算节点的情况下调用suspand脚本,通过运行suspand脚本可驱使slurm调度器10执行上述的确定待更新任务队列、通知目标伸缩组20等操作。
52.这样,通过slurm调度器10和伸缩组20的配合,可实现在slurm集群中按需自动调整可用计算节点的数量,从而实现对slurm集群的自动伸缩。
53.据此,本实施例中,引入伸缩组来与slurm调度器进行配合,由伸缩组来承担弹性资源管理工作,而slurm调度器可专注于任务调度工作,从而可有效降低slurm调度器的负载压力,改善slurm调度器的稳定性,集群的伸缩不再受限于slurm调度器的处理能力,因
此,可有效提升伸缩的效率;而且,通过在slurm调度器中配置多个任务队列,并为每个任务队列关联一个伸缩组,不同伸缩组可适配不同的实例定制需求,基于此,可从队列层面灵活规划资源,并基于不同任务的资源需求,灵活地、有针对性地在相关的任务队列下进行资源伸缩,支持slurm调度器将任务调度到适配的资源上,最大化发挥资源价值,避免因资源与任务需求不适配而导致资源浪费。
54.在上述或下述实施例中,还可在slurm集群中部署管控节点30。
55.在目标伸缩组20为目标队列下唤起的新计算节点生产完云服务器实例之后,可通知管控节点30。实际应用中,伸缩组20可通过生命周期挂钩来通知管控节点30,当然,本实施例并不限于此。对于管控节点30来说,可控制这些新计算节点分别进行初始化;在确定新计算节点完成初始化后,通知slurm调度器10,以使slurm调度器10获知其唤起的新计算节点已准备就绪。其中,本实施例中,可在管控节点30控制这些新计算节点分别进行初始化的环节中,提供灵活的初始化配置能力,也即是,管控节点30可按照集群用户自定义的初始化配置方案来控制这些新计算节点分别进行初始化,从而使得slurm集群中的可用计算节点符合集群用户的需求。
56.本实施例中,管控节点30在在控制新计算节点进行初始化的过程中,至少可从以下几个方面支持新计算节点的初始化:
57.1、向新计算节点通知所需挂载的存储位置,以供新计算节点对存储位置进行初始化。管控节点30可判断新计算节点所需挂载的存储位置,例如nas等,并分别通知给新计算节点,这样,新计算节点可按照管控节点30的通知对存储位置进行初始化。
58.2、控制新计算节点拉取对应的后处理脚本,以供新计算节点基于对应的后处理脚本进行定制化配置。其中,后处理脚本用于承载集群用户针对计算节点的定制化配置参数。集群用户可为不同计算节点定制后处理脚本,并在后处理脚本中定制配置参数,这样,可支持集群用户灵活地按需指定计算节点的初始化方案,使得可用计算节点充分适配集群用户的需求。对于新计算节点来说,可运行对应的后处理脚本,按照其中的定制化配置参数进行初始化配置。
59.3、接收新计算节点发送的心跳通知。新计算节点可向管控节点30发送心跳通知,以向管控节点30通报自身的活动状态,这样管控节点30可
60.当然,管控节点30对新计算节点的初始化支持能力并不限于上述几个方面,还可支持更多的方面。这样,基于管控节点30,可支持集群用户对slurm集群中的可用计算节点的初始化状态进行定制,从而支持集群用户更多地参与对计算节点的管控,这可使得slurm集群中的可用计算节点更加符合集群用户的使用需求,改善用户体验,尤其是上述的第2方面中,集群用户可按需灵活加入所需的初始化方案,使得slurm集群拥有了更加灵活的配置能力。另外,管控节点30还可通过数据库等方式维护slurm集群中各个计算节点的状态信息,并在新计算节点完成初始化后,更新新计算节点的状态信息,以实时掌握slurm集群中各个计算节点的状态,从而更好地对slurm集群中的计算节点进行管控。
61.本实施例中,各个新计算节点在完成上述的初始化操作后,可向管控节点30报告其初始化已完成,管控节点30在收到报告后,可通知slurm调度器10,这样,slurm调度器10可基于管控节点30的通知而获知其唤起的新计算节点已准备就绪。实际应用中,承接前文提及的resume脚本,这里管控节点30可向resume脚本中配置新计算节点已完成初始化的通
知,这样,slurm调度器10可通过运行resume脚本来获知其唤起的新计算节点已准备就绪,当然,本实施例并不限于这种通知方式。
62.在上述实施例提及的可用计算节点回收过程中,管控节点30也可参与控制可用计算节点的回收过程。在此过程中,需要关闭的可用计算节点所属的待处理任务队列各自所关联的伸缩组20,可在释放完相应的云服务器实例后,通知管控节点30,实际应用中,伸缩组20可通过生命周期挂钩来将释放完的云服务器实例通知至管控节点30,当然,本实施例并不限于此。管控节点30可控制需要关闭的可用计算节点执行与回收相关的处理操作,包括但不限于接收可用计算节点发送的已完成回收通知等。管控节点30在确定需要关闭的可用计算节点已经完成回收的情况下,可通知slurm调度器10,以是slurm调度器10获知slurm集群中的相关可用计算节点已回收并将已回收的可用计算节点的状态修改为已关闭。通过管控节点30的配合,使得可用计算节点的回收过程更加可控和灵活。
63.另外,管控节点30还可监测已生产的云服务器实例的状态;若发现指定类型的云服务器实例被回收,则可通知slurm调度器10,以使slurm调度器10及时更新这类云服务器实例所对应的可用计算节点的状态。其中,指定类型的云服务器实例可以是因非用户行为而可被回收的实例,或者说是,会发生slurm调度器10无法感知到的回收事件的实例。指定类型的云服务器实例可包括但不限于spot实例,这些类型的云服务器实例可能因资源到期而发生自动回收现象,slurm调度器10并无法感知到这些类型的云服务器实例已经发生回收,进而可能影响slurm调度器10的正常任务调度。对此,本实施例中,管控节点30可在发现指定类型的云服务器实例被回收的情况下,采用至少以下集中管控方案来保证slurm调度器10的正常任务调度:
64.1、通知slurm调度器10将已回收的指定类型的云服务器实例对应的可用计算节点的状态修改为已关闭。正如上文提及的,slurm调度器10无法感知指定类型的云服务器实例已经被回收的事件,因此,从slurm调度器10的角度来看,这类云服务器实例所对应的可用计算节点仍关联有云服务器实例,仍映射有实际的物理资源,而事实并非如此,因此,这类节点实质是没有活性的,无法处理任何任务,如果不改变,这类节点将被浪费。在该管控方案中,通过管控节点30通知slurm调度器10这类云服务器实例已经被回收,可驱使slurm调度器10将这类云服务器实例对应的可用计算节点的状态修改为已关闭。这样,这类云服务器实例对应的可用计算节点在slurm调度器10中的认知中将变为不可用计算节点,slurm调度器10可在后续时间内正常地重新唤起这类节点,以通过伸缩组20为这列节点生产新的云服务器实例。
65.2、调用已回收的指定类型的云服务器实例所在的伸缩组20创建新的云服务实例来替换已回收的指定类型的云服务器实例,并通知slurm调度器10。在该管控方案中,管控节点30可将替换事件通知slurm调度器10,以驱使slurm调度器10更新相关可用计算节点所关联的云服务器实例。替换后的云服务器实例不再是指定类型的云服务器实例,因此,可支持slurm调度器10的正常任务调度。
66.通过管控节点30的介入,可避免因slurm调度器10无法感知指定类型的云服务器节点发生的回收事件而导致相关的可用计算节点无法正常使用,这可有效避免浪费这类节点,保持slurm集群中可用计算节点的活性。
67.在上述或下述实施例中,还可基于管控节点30扩大slurm集群的规模。
68.在一种实现方式中,管控节点30可接收针对目标队列的节点规模调整指令,向slurm调度器10注册目标队列下需要增加的计算节点;控制slurm调度器10执行队列层面的重启操作,以使slurm调度器10更新目标队列下的计算节点。
69.在该实现方式中,针对目标队列的节点规模调整指令可由集群用户发起,例如,集群用户可通过在用户终端中进行针对目标队列的节点规模调整操作,而触发用户终端向管控节点30发起针对目标队列的节点规模调整指令。节点规模调整指令中可指定需要增加的计算节点的数量、名称、规格等信息,管控节点30可按照节点规模调整指令向slurm调度器10注册目标队列下需要增加的计算节点,对于slurm调度器10来说,由于仅发生了队列层面的计算节点变化,因此,仅需执行队列层面的重启操作即可,而无需重启整个slurm调度器10,这可有效保证slurm调度器10的稳定性,减少在slurm集群中扩大节点规模的代价。
70.在另一种实现方式中,管控节点30可在slurm集群创建过程中,向slurm调度器10注册符合其集群规模的多个计算节点以及集群规模之外的多个预备节点,其中,预备节点在slurm调度器10中的的状态为未启用节点;若接收到针对slurm集群的集群规模调整指令,则从多个预备节点中选择待加入节点;控制slurm调度器10在不重启的情况下将待加入节点的状态修改与正常计算节点的状态一致。
71.在该实现方式中,可在创建slurm集群伊始,即在slurm集群中预埋多于集群规模的更多计算节点。例如,若slurm集群的集群规模要求为100个计算节点,则在该实现方式中,可在创建slurm集群时在slurm集群中预埋500个计算节点,其中,100个是集群规模内的计算节点,这100个计算节点在slurm调度器中的状态可配置为已启动,这样,在当前集群规模下,slurm调度器可基于这100个已启动的计算节点进行正常任务调度。另外400个计算节点则可作为预备节点,这400个计算节点在slurm调度器中的状态可配置为未启用,这样,正常情况下,slurm调度器不会将任务调度到这400个预备节点上。而若slurm调度器接收到管控节点发送的集群规模调整指令,则slurm调度器可按照集群规模调度指令中指定的需要增加的计算节点的数量、名称、规格等信息,从400个预备节点中选择待加入节点,并将待加入节点的状态修改为已启用即可,并无需重启整个slurm调度器。
72.经过上述两种实现方式扩大slurm集群的规模后,slurm集群可在接收到新任务的情况下,按需将任务调度到新增加至slurm集群中的计算节点,这些新增加的计算节点可正常映射至实际的物理资源,从而进行任务处理。
73.据此,本实施例中,可基于管控节点,实现slurm集群规模的调整,而且,可有效减少slurm集群规模调整所需的代价,slurm调度器仅需执行队列层面的重启或者完全不需重启,这可有效保证slurm调度器的稳定性。
74.图3为本技术一实施例实施例提供的一种应用场景的示意图。
75.参考图3,当用户将作业1提交到队列a,slurm调度器可判断作业1需要的节点资源,并调用本实施例提供的resume脚本确保相关节点处于就绪状态。
76.当用户提交作业后会有如下几步:
77.slurm调度器根据作业请求进行节点资源分配,并将运行作业1的节点列表传入resume脚本;
78.resume脚本根据传入的节点信息,调用队列a关联的伸缩组b生产云服务器实例;
79.伸缩组b生产出云服务器实例后通过生命周期挂钩通知管控节点;
80.管控节点接收到消息后进行数据库更新,并控制相关节点执行初始化操作;
81.待节点完成初始化后,节点处于allocated状态,slurm调度器将其置为powering_up状态,节点可自动开始运行作业1;
82.当作业运行结束,slurm集群中部分节点处于空闲状态,slurm调度器会判断需要关机的节点并调用本实施例提供的suspand脚本,当节点需要关机时会有如下操作:
83.slurm调度器判断需要关闭的节点列表,并将其传入suspand脚本;
84.suspand脚本根据传入的节点信息,调用相关的伸缩组将对应的云服务器实例释放;
85.相关的伸缩组释放相应节点后通过生命周期挂钩通知管控节点;
86.管控节点接收到消息后进行数据库更新,并可知相关节点执行释放操作;
87.待节点释放完毕后,节点处于idle状态,slurm调度器将节点设置为powered_down状态。
88.当伸缩组b中存在spot实例被回收,会有如下操作:
89.伸缩组b通过生命周期挂钩通知管控节点发生spot实例回收事件;
90.管控节点控制伸缩组b生产新的云服务器实例来替换已回收的spot实例,并通知slurm调度器;
91.slurm调度器可更新已回收spot实例对应的可用计算节点所关联的云服务器实例,且该可用计算节点仍处于idle状态,可继续正常承载新任务。
92.图4为本技术另一示例性实施例提供的一种slurm集群的伸缩方法的流程示意图,该方法可由前述系统实施例中的slurm调度器执行。参考图4,该方法包括:
93.步骤400、接收任务处理请求,任务处理请求中指定有待处理的目标任务;
94.步骤401、从预置的多个任务队列中为目标任务确定适配的目标队列,每个任务队列关联一个伸缩组,单个伸缩组配置为管理一组云服务器实例,不同伸缩组适配不同的实例定制需求;
95.步骤402、若目标队列下的可用计算节点不足,则在目标队列下为目标任务唤起新计算节点,并通知目标队列关联的目标伸缩组,以供目标伸缩组为新计算节点生产云服务器实例以扩增目标队列下的可用计算节点;
96.步骤403、在新计算节点准备就绪后,使用新计算节点运行目标任务。
97.在一可选实施例中,该方法还包括:
98.接收管控节点发送的新计算节点已完成初始化的通知,以获知所唤起的新计算节点已准备就绪;
99.其中,通知为管控节点控制新计算节点分别进行初始化并确定新计算节点完成初始化的情况下发出的。
100.在一可选实施例中,该方法还包括:
101.若发现slurm集群中存在需要关闭的可用计算节点,则确定需要关闭的可用计算节点各自所属的待更新任务队列;
102.调用待更新任务队列各自关联的伸缩组将对应的云服务器实例释放,以缩减待更新任务队列下的可用计算节点。
103.值得说明的是,上述关于slurm集群的伸缩方法各实施例中的技术细节,可参考前
述的系统实施例中关于slurm调度器的相关描述,为节省篇幅,在此不再赘述,但这不应造成本技术保护范围的损失。
104.图5为本技术另一示例性实施例提供的另一种slurm集群的伸缩方法的流程示意图。该方法可由前述系统实施例中的管控节点执行。参考图5,该方法可包括:
105.步骤500、接收目标伸缩组在为slurm调度器唤起的新计算节点生产云服务器实例之后发出的通知,其中,目标伸缩组为slurm调度器从多个任务队列中为目标任务确定出的目标队列所关联的伸缩组,每个任务队列关联一个伸缩组,单个伸缩组配置为管理一组云服务器实例,不同伸缩组适配不同的实例定制需求;
106.步骤501、控制新计算节点分别进行初始化;
107.步骤502、在确定新计算节点完成初始化后,通知slurm调度器,以使slurm调度器获知其唤起的新计算节点已准备就绪。
108.在一可选实施例中,步骤控制新计算节点进行初始化的过程,包括:
109.向新计算节点通知所需挂载的存储位置,以供新计算节点对存储位置进行初始化;和/或,
110.控制新计算节点拉取对应的后处理脚本,以供新计算节点基于对应的后处理脚本进行定制化配置,后处理脚本用于承载集群用户针对计算节点的定制化配置参数;和/或,
111.接收新计算节点发送的心跳通知。
112.在一可选实施例中,该方法还包括:
113.在slurm集群创建过程中,向slurm调度器注册符合其集群规模的多个计算节点以及集群规模之外的多个预备节点,其中,预备节点在slurm调度器中的的状态为未启用;
114.若接收到针对slurm集群的集群规模调整指令,则从多个预备节点中选择待加入节点;
115.控制slurm调度器在不重启的情况下将待加入节点的状态修改为已启用。
116.在一可选实施例中,该方法还包括:
117.监测已生产的云服务器实例的状态;
118.若指定类型的云服务器实例被回收,则通知slurm调度器将已回收的指定类型的云服务器实例对应的可用计算节点的状态修改为已关闭,或者,调用已回收的指定类型的云服务器实例所在的伸缩组创建新的云服务实例来替换已回收的指定类型的云服务器实例,并通知slurm调度器;
119.其中,指定类型的云服务器实例包括会发生slurm调度器无法感知到的回收事件的云服务器实例。
120.在一可选实施例中,该方法还包括:
121.接收针对目标队列的节点规模调整指令,向slurm调度器注册目标队列下需要增加的计算节点;
122.控制slurm调度器执行队列层面的重启操作,以使slurm调度器更新目标队列下的计算节点。
123.值得说明的是,上述关于slurm集群的伸缩方法各实施例中的技术细节,可参考前述的系统实施例中关于管控节点的相关描述,为节省篇幅,在此不再赘述,但这不应造成本技术保护范围的损失。
124.另外,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤400至步骤403的执行主体可以为设备a;又比如,步骤401和402的执行主体可以为设备a,步骤403的执行主体可以为设备b;等等。在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如801、802等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。
125.图6为本技术又一示例性实施例提供的一种slurm调度器的结构示意图。如图6所示,该slurm调度器可包括:存储器60、处理器61以及通信组件62。
126.处理器61,与存储器60和通信组件62耦合,用于执行存储器60中的计算机程序,以用于:
127.通过通信组件62接收任务处理请求,任务处理请求中指定有待处理的目标任务;
128.从预置的多个任务队列中为目标任务确定适配的目标队列,每个任务队列关联一个伸缩组,单个伸缩组配置为管理一组云服务器实例,不同伸缩组适配不同的实例定制需求;
129.若目标队列下的可用计算节点不足,则在目标队列下为目标任务唤起新计算节点,并通过通信组件62通知目标队列关联的目标伸缩组,以供目标伸缩组为新计算节点生产云服务器实例以扩增目标队列下的可用计算节点;
130.在新计算节点准备就绪后,使用新计算节点运行目标任务。
131.本实施例中,值得说明的是,在云架构下,slurm调度器的实现形式可以是云网络中的一个节点,该节点可以是云服务器、虚拟机等,本实施例并不限定slurm调度器必须是一台物理设备。
132.在一可选实施例中,处理器61还用于:
133.接收管控节点发送的新计算节点已完成初始化的通知,以获知所唤起的新计算节点已准备就绪;
134.其中,通知为管控节点控制新计算节点分别进行初始化并确定新计算节点完成初始化的情况下发出的。
135.在一可选实施例中,处理器61还用于:
136.若发现slurm集群中存在需要关闭的可用计算节点,则确定需要关闭的可用计算节点各自所属的待更新任务队列;
137.调用待更新任务队列各自关联的伸缩组将对应的云服务器实例释放,以缩减待更新任务队列下的可用计算节点。
138.进一步,如图6所示,该slurm调度器还包括:电源组件63等其它组件。图6中仅示意性给出部分组件,并不意味着slurm调度器只包括图6所示组件。
139.值得说明的是,上述关于slurm调度器各实施例中的技术细节,可参考前述的系统实施例中关于slurm调度器的相关描述,为节省篇幅,在此不再赘述,但这不应造成本技术保护范围的损失。
140.图7为本技术又一示例性实施例提供的一种slurm调度器的结构示意图。如图7所示,该slurm调度器可包括:存储器70、处理器71以及通信组件72。
141.处理器71,与存储器70和通信组件72耦合,用于执行存储器70中的计算机程序,以用于:
142.通过通信组件72接收目标伸缩组在为slurm调度器唤起的新计算节点生产云服务器实例之后发出的通知,其中,目标伸缩组为slurm调度器从多个任务队列中为目标任务确定出的目标队列所关联的伸缩组,每个任务队列关联一个伸缩组,单个伸缩组配置为管理一组云服务器实例,不同伸缩组适配不同的实例定制需求;
143.控制新计算节点分别进行初始化;
144.在确定新计算节点完成初始化后,通知slurm调度器,以使slurm调度器获知其唤起的新计算节点已准备就绪。
145.本实施例中,值得说明的是,管控节点可以是slurm集群中常驻的管理节点,该节点可以是云服务器、虚拟机等,本实施例并不限定管理节点必须是一台物理设备。
146.在一可选实施例中,处理器71在控制新计算节点进行初始化的过程中,可用于:
147.向新计算节点通知所需挂载的存储位置,以供新计算节点对存储位置进行初始化;和/或,
148.控制新计算节点拉取对应的后处理脚本,以供新计算节点基于对应的后处理脚本进行定制化配置,后处理脚本用于承载集群用户针对计算节点的定制化配置参数;和/或,
149.接收新计算节点发送的心跳通知。
150.在一可选实施例中,处理器71还用于:
151.在slurm集群创建过程中,向slurm调度器注册符合其集群规模的多个计算节点以及集群规模之外的多个预备节点,其中,预备节点在slurm调度器中的的状态为未启用;
152.若接收到针对slurm集群的集群规模调整指令,则从多个预备节点中选择待加入节点;
153.控制slurm调度器在不重启的情况下将待加入节点的状态修改为已启用。
154.在一可选实施例中,处理器71还用于:
155.监测已生产的云服务器实例的状态;
156.若指定类型的云服务器实例被回收,则通知slurm调度器将已回收的指定类型的云服务器实例对应的可用计算节点的状态修改为已关闭,或者,调用已回收的指定类型的云服务器实例所在的伸缩组创建新的云服务实例来替换已回收的指定类型的云服务器实例,并通知slurm调度器;
157.其中,指定类型的云服务器实例包括会发生slurm调度器无法感知到的回收事件的云服务器实例。
158.在一可选实施例中,处理器71还用于:
159.接收针对目标队列的节点规模调整指令,向slurm调度器注册目标队列下需要增加的计算节点;
160.控制slurm调度器执行队列层面的重启操作,以使slurm调度器更新目标队列下的计算节点。
161.进一步,如图7所示,该管控节点还包括:电源组件73等其它组件。图7中仅示意性给出部分组件,并不意味着管控节点只包括图7所示组件。
162.值得说明的是,上述关于管控节点各实施例中的技术细节,可参考前述的系统实
施例中关于管控节点的相关描述,为节省篇幅,在此不再赘述,但这不应造成本技术保护范围的损失。
163.相应地,本技术实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被执行时能够实现上述方法实施例中可由slurm调度器或管控节点执行的各步骤。
164.上述图6和7中的存储器,用于存储计算机程序,并可被配置为存储其它各种数据以支持在计算平台上的操作。这些数据的示例包括用于在计算平台上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。
165.上述图6和7中的通信组件,被配置为便于通信组件所在设备和其他设备之间有线或无线方式的通信。通信组件所在设备可以接入基于通信标准的无线网络,如wifi,2g、3g、4g/lte、5g等移动通信网络,或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。
166.上述图6和7中的电源组件,为电源组件所在设备的各种组件提供电力。电源组件可以包括电源管理系统,一个或多个电源,及其他与为电源组件所在设备生成、管理和分配电力相关联的组件。
167.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
168.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
169.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
170.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一
个方框或多个方框中指定的功能的步骤。
171.在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
172.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
173.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
174.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
175.以上所述仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。