发明内容
本申请实施例是提供一种计算资源的调度方法、装置、电子设备、计算机可读存储介质以及软件产品,以解决或部分解决现有技术中计算集群的资源算力差异导致的资源浪费、资源调度复杂以及服务容易出现故障的问题。
本申请实施例公开了一种计算资源的调度方法,包括:
获取各个所述计算节点的节点信息,以及针对所述计算节点的归一化模型;
根据所述节点信息与所述归一化模型,获得所述计算节点的目标算力;
根据所述计算节点的资源状态与目标算力,为所述计算节点进行计算资源的调度。
可选地,所述节点信息至少包括型号信息以及配置状态信息,所述配置状态信息包括计算核心数量,所述根据所述节点信息与所述归一化模型,获得所述计算节点的目标算力,包括:
从所述归一化模型中,获取与所述型号信息和所述配置状态信息对应的目标归一化系数;
采用所述目标归一化系数与所述计算核心数量,计算所述计算节点的目标算力;
其中,所述配置状态信息至少还包括超频是否开启、超线程是否开启、单核算力以及相对算力中的一种。
可选地,所述归一化模型通过如下方式生成:
获取针对各个所述计算节点的第一性能测试结果以及第二性能测试结果,所述第一性能测试结果为基于第一性能测试标准的测试结果,所述第二性能测试结果为基于第二性能测试标准的测试结果;
获取针对所述第一性能测试结果与所述第二性能测试结果的比例系数;
采用所述比例系数、所述第一性能测试结果以及所述第二性能测试结果,计算针对所述计算节点的预设归一化系数;
采用各个所述计算节点的节点信息和预设归一化系数,生成所述归一化模型。
可选地,所述根据所述计算节点的资源状态与目标算力,为所述计算节点进行计算资源的调度,包括:
获取所述计算节点的资源申请量以及资源剩余量;
若所述资源申请量小于所述资源剩余量,则按照所述目标算力减少所述计算节点的计算资源;
若所述资源申请量大于所述资源剩余量,则按照所述目标算力维持所述计算节点的计算资源;
若所述计算节点的资源运算完成,则按照所述目标算力增加所述计算节点的计算资源。
可选地,还包括:
获取各个所述计算节点的第一计算资源;
对所述第一资源进行资源类型转换,获得适配于所述目标算力的第二计算资源;
其中,所述按照所述目标算力减少所述计算节点的计算资源,包括:
按照所述目标算力减少所述计算节点的第二计算资源;
其中,所述按照所述目标算力维持所述计算节点的计算资源,包括:
按照所述目标算力维持所述计算节点的第二计算资源;
其中,所述按照所述目标算力增加所述计算节点的计算资源,包括:
按照所述目标算力增加所述计算节点的计算资源。
可选地,还包括:
获取各个所述计算节点的第一核心利用率;
采用所述第一核心利用率与所述目标归一化系数,计算各个所述计算节点的初始核心利用率。
可选地,还包括:
获取与所述计算节点对应的逻辑核拓扑关系;
采用所述初始核心利用率、各个所述计算节点的第一核心利用率以及所述逻辑核拓扑关系,计算各个所述计算节点的第二核心利用率。
本申请实施例还公开了一种计算资源的调度方法,应用于资源调度系统,所述资源调度系统至少包括若干个Node节点以及与所述Node节点对应的Pod容器、资源调度器以及归一化控制器,所述方法包括:
所述归一化控制器获取各个所述Node节点上传的节点信息;
所述归一化控制器根据所述节点信息与预设的归一化模型,获得各个所述Node节点的目标算力;
所述资源调度器根据所述Pod容器的资源状态与所述Node节点的目标算力,为所述Node节点进行计算资源的调度。
可选地,所述节点信息至少包括型号信息以及配置状态信息,所述配置状态信息包括计算核心数量,所述归一化控制器根据所述节点信息与预设的归一化模型,获得各个所述Node节点的目标算力,包括:
所述归一化控制器从预设的归一化模型中,获取与所述型号信息和所述配置状态信息对应的目标归一化系数;
所述归一化控制器采用所述目标归一化系数与所述计算核心数量,计算所述Node节点的目标算力;
其中,所述配置状态信息至少还包括超频是否开启、超线程是否开启、单核算力以及相对算力中的一种。
可选地,所述归一化模型通过如下方式生成:
获取针对各个所述Node节点的第一性能测试结果以及第二性能测试结果,所述第一性能测试结果为基于SPEC-CPU的测试结果,所述第二性能测试结果为基于SPEC-JBB的测试结果;
获取针对所述第一性能测试结果与所述第二性能测试结果的比例系数;
采用所述比例系数、所述第一性能测试结果以及所述第二性能测试结果,计算针对所述Node节点的预设归一化系数;
采用各个所述Node节点的节点信息和预设归一化系数,生成所述归一化模型。
可选地,所述资源调度器根据所述Pod容器的资源状态与所述Node节点的目标算力,为所述Node节点进行计算资源的调度,包括:
所述资源调度器获取目标Pod容器的资源申请量,以及与所述目标Pod容器对应的目标Node节点的资源剩余量;
若所述资源申请量小于所述资源剩余量,则所述资源调度器按照所述目标算力减少所述目标Node节点的计算资源,并将所述目标Pod容器置于所述目标Node节点中运行;
若所述资源申请量大于所述资源剩余量,则所述资源调度器按照所述目标算力维持所述目标Node节点的计算资源;
若所述目标Pod容器的资源运算完成,则所述资源调度器将所述目标Pod容器从所述目标Node节点中移除,并按照所述目标算力增加所述目标Node节点的计算资源。
可选地,所述资源调度系统还包括资源适配器,所述方法还包括:
所述资源适配器获取各个所述Pod容器的第一计算资源;
所述资源适配器对所述第一资源进行资源类型转换,获得适配于所述目标算力的第二计算资源;
其中,所述资源调度器按照所述目标算力减少所述目标Node节点的计算资源,包括:
所述资源调度器按照所述目标算力减少所述目标Node节点的第二计算资源;
其中,所述资源调度器按照所述目标算力维持所述目标Node节点的计算资源,包括:
所述资源调度器按照所述目标算力维持所述目标Node节点的第二计算资源;
其中,所述按照所述目标算力增加所述目标Node节点的计算资源,包括:
按照所述目标算力增加所述目标Node节点的第二计算资源。
可选地,还包括:
所述资源调度器获取各个所述Node节点的CPU利用率;
所述资源调度器采用所述CPU利用率与所述目标归一化系数,计算各个所述Node节点的初始核心利用率。
可选地,还包括:
所述资源调度器获取与所述Node节点对应的逻辑核拓扑关系;
所述资源调度器采用所述初始核心利用率、各个所述Node节点的CPU利用率以及所述逻辑核拓扑关系,计算各个所述Node节点的目标核心利用率。
本申请实施例还公开了一种计算资源的调度装置,包括:
数据获取模块,用于获取各个所述计算节点的节点信息,以及针对所述计算节点的归一化模型;
算力归一化模块,用于根据所述节点信息与所述归一化模型,获得所述计算节点的目标算力;
资源调度模块,用于根据所述计算节点的资源状态与目标算力,为所述计算节点进行计算资源的调度。
可选地,所述节点信息至少包括型号信息以及配置状态信息,所述配置状态信息包括计算核心数量,所述算力归一化模块包括:
归一化系数获取子模块,用于从所述归一化模型中,获取与所述型号信息和所述配置状态信息对应的目标归一化系数;
目标算力计算子模块,用于采用所述目标归一化系数与所述计算核心数量,计算所述计算节点的目标算力;
其中,所述配置状态信息至少还包括超频是否开启、超线程是否开启、单核算力以及相对算力中的一种。
可选地,所述归一化模型通过如下模块生成:
测试结果获取模块,用于获取针对各个所述计算节点的第一性能测试结果以及第二性能测试结果,所述第一性能测试结果为基于第一性能测试标准的测试结果,所述第二性能测试结果为基于第二性能测试标准的测试结果;
比例系数获取模块,用于获取针对所述第一性能测试结果与所述第二性能测试结果的比例系数;
归一化系数计算模块,用于采用所述比例系数、所述第一性能测试结果以及所述第二性能测试结果,计算针对所述计算节点的预设归一化系数;
归一化模型生成模块,用于采用各个所述计算节点的节点信息和预设归一化系数,生成所述归一化模型。
可选地,所述资源调度模块包括:
资源信息获取子模块,用于获取所述计算节点的资源申请量以及资源剩余量;
资源减少子模块,用于若所述资源申请量小于所述资源剩余量,则按照所述目标算力减少所述计算节点的计算资源;
资源维持子模块,用于若所述资源申请量大于所述资源剩余量,则按照所述目标算力维持所述计算节点的计算资源;
资源增加子模块,用于若所述计算节点的资源运算完成,则按照所述目标算力增加所述计算节点的计算资源。
可选地,还包括:
计算资源获取模块,用于获取各个所述计算节点的第一计算资源;
资源类型转换模块,用于对所述第一资源进行资源类型转换,获得适配于所述目标算力的第二计算资源;
其中,所述资源减少子模块具体用于:
按照所述目标算力减少所述计算节点的第二计算资源;
其中,所述资源维持子模块具体用于:
按照所述目标算力维持所述计算节点的第二计算资源;
其中,所述资源增加模块具体用于:
按照所述目标算力增加所述计算节点的计算资源。
可选地,还包括:
第一利用率获取模块,用于获取各个所述计算节点的第一核心利用率;
初始利用率计算模块,用于采用所述第一核心利用率与所述目标归一化系数,计算各个所述计算节点的初始核心利用率。
可选地,还包括:
拓扑关系获取模块,用于获取与所述计算节点对应的逻辑核拓扑关系;
目标利用率计算模块,用于采用所述初始核心利用率、各个所述计算节点的第一核心利用率以及所述逻辑核拓扑关系,计算各个所述计算节点的第二核心利用率。
本申请实施例还公开了一种计算资源的调度系统,所述调度系统至少包括若干个Node节点以及与所述Node节点对应的Pod容器、资源调度器以及归一化控制器;其中,
位于所述归一化控制器的数据获取模块,用于获取各个所述Node节点上传的节点信息;
位于所述归一化控制器的算力归一化模块,用于根据所述节点信息与预设的归一化模型,获得各个所述Node节点的目标算力;
位于所述资源调度器的资源调度模块,用于根据所述Pod容器的资源状态与所述Node节点的目标算力,为所述Node节点进行计算资源的调度。
可选地,所述节点信息至少包括型号信息以及配置状态信息,所述配置状态信息包括计算核心数量;所述算力归一化模块,包括:
归一化系数获取子模块,用于从所述归一化模型中,获取与所述型号信息和所述配置状态信息对应的目标归一化系数;
目标算力计算子模块,用于采用所述目标归一化系数与所述计算核心数量,计算所述Node节点的目标算力;
其中,所述配置状态信息至少还包括超频是否开启、超线程是否开启、单核算力以及相对算力中的一种。
可选地,所述归一化模型通过如下模块生成:
位于所述归一化控制器的测试结果获取模块,用于获取针对各个所述Node节点的第一性能测试结果以及第二性能测试结果,所述第一性能测试结果为基于SPEC-CPU的测试结果,所述第二性能测试结果为基于SPEC-JBB的测试结果;
位于所述归一化控制器的比例系数获取模块,用于获取针对所述第一性能测试结果与所述第二性能测试结果的比例系数;
位于所述归一化控制器的归一化系数计算模块,用于采用所述比例系数、所述第一性能测试结果以及所述第二性能测试结果,计算针对所述Node节点的预设归一化系数;
位于所述归一化控制的归一化模型生成模块,用于采用各个所述Node节点的节点信息和预设归一化系数,生成所述归一化模型。
可选地,所述资源调度模块包括:
资源信息获取子模块,用于获取目标Pod容器的资源申请量,以及与所述目标Pod容器对应的目标Node节点的资源剩余量;
资源减少子模块,用于若所述资源申请量小于所述资源剩余量,则按照所述目标算力减少所述目标Node节点的计算资源,并将所述目标Pod容器置于所述目标Node节点中运行;
资源维持子模块,用于若所述资源申请量大于所述资源剩余量,则按照所述目标算力维持所述目标Node节点的计算资源;
资源增加子模块,用于若所述目标Pod容器的资源运算完成,则将所述目标Pod容器从所述目标Node节点中移除,并按照所述目标算力增加所述目标Node节点的计算资源。
可选地,所述资源调度系统还包括资源适配器;所述资源适配器包括:
计算资源获取模块,用于获取各个所述Pod容器的第一计算资源;
资源类型转换模块,用于对所述第一资源进行资源类型转换,获得适配于所述目标算力的第二计算资源;
其中,所述资源减少子模块具体用于:
按照所述目标算力增加所述目标Node节点的第二计算资源;
其中,所述资源维持子模块具体用于:
按照所述目标算力减少所述目标Node节点的第二计算资源;
其中,所述资源增加子模块具体用于:
按照所述目标算力增加所述目标Node节点的第二计算资源。
可选地,所述资源调度器包括:
第一利用率获取模块,用于获取各个所述Node节点的CPU利用率;
初始利用率计算模块,用于采用所述CPU利用率与所述目标归一化系数,计算各个所述Node节点的初始核心利用率。
可选地,所述资源调度器包括:
拓扑关系获取模块,用于获取与所述Node节点对应的逻辑核拓扑关系;
目标利用率计算模块,用于采用所述初始核心利用率、各个所述Node节点的CPU利用率以及所述逻辑核拓扑关系,计算各个所述Node节点的目标核心利用率。
本申请实施例还公开了一种电子设备,包括:
一个或多个处理器;和
存储有指令的一种计算机可读存储介质,当由所述一个或多个处理器执行时,使得所述电子设备执行如上所述的方法。
本申请实施例还公开了一种计算机可读存储介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如上所述的方法。
本申请实施例还公开了一种软件产品,包括计算机程序/指令,其中,当所述计算机程序/指令被执行时,实现执行如上所述的方法。
本申请实施例包括以下优点:
在本申请实施例中,可以应用于计算集群,计算集群可以包括若干个计算节点,则在运行过程中,可以获取各个计算节点的节点信息,以及针对计算节点的归一化模型,接着根据节点信息与归一化模型,计算各个计算节点的目标算力,然后根据计算节点的资源状态与目标算力,为计算节点进行计算资源的调度,通过归一化模型可以对不同计算节点的算力进行归一化,得到相同标准下各个计算节点的算力,实现算力的归一化,解决了算力异构的问题,并且通过对算力归一化后的计算节点进行资源调度,可以有效保证资源的利用率,保证线上服务的正常运行。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
作为一种示例,计算集群可以包括若干个计算节点,不同的计算节点所对应的算力可以相同,也可以不同,则由于存在“算力异构”的情况,使得运维人员在对计算节点进行算力的配置过程中,需要以最小算力的计算节点作为标准,对其他计算节点的算力进行配置,从而容易造成运算资源的大量浪费,并且,对不同算力的计算节点进行维护,容易给运维人员带来较大的负担,使得资源调度变得非常复杂,还容易由于错误的资源分配导致线上服务出现故障。
在一种场景下,计算集群可以为IDC,在IDC中可以包括若干个CPU,随着采购和下线,每隔一定时间都会有一定数量的机器被置换,而由于CPU的架构、制程工艺精度等更新换代,不同型号的CPU容易出现性能的差异,从而导致IDC出现算力差异,即“算力异构”的问题。
在另一种场景下,例如用于电子商务、大数据运算、AI训练等应用的计算集群,计算集群可以为若干个不同终端(服务器)组成的计算机集群,不同的终端(服务器)由于配置不同,也容易出现终端之间的“算力异构”的问题。
由此可见,在计算集群中,无论是整机终端(服务器),还是单个CPU,均容易由于“算力异构”的问题,给计算集群带来运算资源浪费,维护困难,资源分配复杂以及服务出现异常的问题。对此,本申请实施例的核心构思之一在于针对不同算力的计算节点,定义一套单位量纲,打平异构机型计算能力的差异,得到在相同标准下不同计算节点的算力,实现计算集群的算力归一化,解决了集群算力异构的问题,同时通过对算力归一化后的计算节点进行资源调度,可以有效保证资源的利用率,进而保证线上服务的正常运行。
需要说明的是,本申请实施例中以计算集群为IDC,计算节点为CPU进行示例性说明,可以理解的是,还可以适用于对分布式服务器的资源调度进行算力归一化处理,以及资源调度的场景,本申请对此不作限制。
具体的,参照图1,示出了本申请实施例中提供的一种计算资源的调度方法实施例的步骤流程图,具体可以包括如下步骤:
步骤101,获取各个所述计算节点的节点信息,以及针对所述计算节点的归一化模型;
在本申请实施例中,在计算集群中可以包括若干个不同的计算节点,则不同的计算节点由于性能不同,容易出现“算力异构”的情况,则在计算集群运行的过程中,可以获取各个计算节点的节点信息,以及针对计算节点的归一化模型。其中,归一化模型可以为用于对计算节点进行算力归一化的模型,其可以将各个计算节点的算力转换为相同标准下的算力,以便基于归一化后的算力对计算节点进行资源调度。
对于归一化模型的构建,可以先获取针对各个计算节点的第一性能测试结果以及第二性能测试结果,第一性能测试结果为基于第一性能测试标准的测试结果,第二性能测试结果为基于第二性能测试标准的测试结果,接着获取针对第一性能测试结果与第二性能测试结果的比例系数,通过该比例系数可以对不同的测试标准的占比进行区分,保证归一化模型的有效性。然后可以采用比例系数、第一性能测试结果以及第二性能测试结果,计算针对计算节点的预设归一化系数,并采用各个计算节点的节点信息和预设归一化系数,生成归一化模型。
可选地,第一性能测试标准可以为SPEC-CPU,第二性能测试标准可以为SPECjbb,计算节点可以为CPU,则对于归一化模型的构建,可以基于多组benchmark的评测数据,包括SPEC-CPU的Int测试集以及SPECjbb测试集,根据测试集的CPU性能评测结果,可以得出不同CPU型号对应的基本算力数据。
需要说明的是,测试标准可以为针对计算节点进行设置的测试条件,例如,针对终端、服务器、CPU等,可以根据其硬件(软件)信息等,设置不同的测试条件,从而在相同的测试条件下,对不同性能的终端、服务器、CPU等进行测试,得到对应的测试结果,以便根据测试结果对计算节点进行性能分析。
其中,SPEC-CPU可以包括IntRate、IntSpeed、FpRate、FpSpeed四个测试子集:Int和Fp对应不同指令运算的测试集/测试场景,Int测试的运算类型特征,其与云上应用更为接近,而Fp测试以图形学、科学计算的测试场景为主。Rate和Speed的测试场景的主要区别在于并行性设置,rate的测试指标是一定时间执行完成的任务数(吞吐量);而speed测试对应固定并行度的多线程负载,测试指标是每个case执行完成的时间(速度)。
SPECJBB模拟了一个商超Java应用的后端,测试流程包括HBIR(High BoundInjection Rate,高束缚注入速率)搜索、RT曲线构建、验证、建模、报告几个流程,衡量指标是后端应用处理事务的关键吞吐率(critical-jOPS)和最大吞吐率(max-jOPS),并同时支持单JVM(Java Virtual Machine,虚拟机)、多JVM、以及分布式环境下的评测。
可选地,对于SPEC-CPU,在云计算场景中的应用包括web服务、数据查询等,则在本申请实施例中,可以选取IntRate的结果作为评价指标;对于SPECJBB,由于归一化模型是针对单个计算节点的算力归一化,则可以选择单JVM场景中的最大吞吐率作为评价指标,可以理解的是,在其他应用场景中,还可以选择其他指标作为评价指标,本申请对此不作限制。
在具体实现中,归一化模型可以为基于SPEC-CPU中针对多组测试集的聚合算法,采用两组benchmark的几何加权结果,通过如下公式:
其中,ACU可以用于表示归一化模型的算力评分,δ可以用于表示不同测试标准所描述的各类指标的影响占比,在确定影响占比系数δ之后,可以通过上述公式计算不同CPU对应的归一化系数。参考下表1所示,δ为0.5,即SPEC-CPU与SPECjbb对模型的影响占比相同的情况下,所得到归一化模型:
CPU型号 |
Turbo |
HT |
Phy Cores |
Logic Cores |
Single |
Total |
A |
off |
off |
52 |
52 |
1.59 |
82.91 |
A |
off |
on |
52 |
104 |
1.01 |
104.53 |
A |
on |
off |
52 |
52 |
1.87 |
97.41 |
A |
on |
on |
52 |
104 |
1.23 |
128.03 |
表1
其中,Turbo可以为计算节点Turbo(超频技术)的开启情况;HT可以为计算节点HyperThread(超线程技术)的开启情况;Phy Cores可以为计算节点对应的CPU物理核心数量;Logic Cores可以为计算节点对应的CPU逻辑核心数量(开启超线程时,相较PhyCores增大了一倍);Single可以为单个逻辑核心相较于基准型号的相对算力比值;Total可以整机相较于基准型号的相对算力,从而可以将上述表单作为归一化模型,使得在计算集群运行过程中,通过计算节点的节点信息,即可从归一化模型中确定对应的目标算力,实现计算节点的算力归一化处理。
步骤102,根据所述节点信息与所述归一化模型,获得所述计算节点的目标算力;
在本申请实施例中,节点信息可以包括计算节点的型号信息以及配置状态信息等。其中,型号信息可以用于表示计算节点的性能、规格等,通过型号信息一方面可以区分不同的计算节点,还可以用于对计算节点的性能进行简单评估,例如型号越新,表示性能越好(需要说明的是,具体的性能并不以型号的差异进行评估,此处仅作示例);配置状态信息可以包括超频是否开启、超线程是否开启、计算核心数量、单核算力以及相对算力中的一种。对于计算核心数量,可以包括物理核心数量以及逻辑核心数量,物理核心数量可以为计算节点CPU物理核心的数量,逻辑核心数量可以为计算节点CPU逻辑核心的数量。
在具体实现中,可以从归一化模型中,获取与型号信息和配置状态信息对应的目标归一化系数,接着采用目标归一化系数与计算核心数量(在本申请实施例中计算核心数量可以为计算节点的CPU物理核心数量),计算计算节点的目标算力。例如,可以通过查表的方式,从归一化模型中获取与计算节点对应的归一化系数,假设计算节点上报的CPU信号为A,CPU物理核心数量为100,配置状态信息包括:HT=On,Turbo=on,则通过上表可以查询得到该计算节点所对应的归一化系数为1.23,采用归一化系数与CPU数量可以得到该计算节点的目标算力为123,从而通过上述方式可以根据计算节点的节点信息从归一化模型中得到对应的目标算力。
需要说明的是,对于计算节点的算力,可以定义一个用于描述CPU算力的“基本计算单元”ACU,作为归一化的单位。该单位的来源可以为选取一款CPU作为标准样,其他CPU根据自身的算力情况,在此标准样上进行多方位评测实验结果,得到对应的归一化系数,即得到归一化模型,本申请对此不作限制。
步骤103,根据所述计算节点的资源状态与目标算力,为所述计算节点进行计算资源的调度。
当得到计算节点的目标算力后,可以根据计算节点的资源状态进行计算资源的调度,包括增加计算资源或减少计算资源或保持计算资源不变等,从而通过归一化模型可以对不同计算节点的算力进行归一化,得到相同标准下各个计算节点的算力,实现算力的归一化,解决了算力异构的问题,并且通过对算力归一化后的计算节点进行资源调度,可以有效保证资源的利用率,保证线上服务的正常运行。
在具体实现中,可以获取计算节点的资源申请量以及资源剩余量,若资源申请量小于资源剩余量,则按照目标算力减少计算节点的计算资源;若资源申请量大于资源剩余量,则按照目标算力维持计算节点的计算资源;若计算节点的资源运算完成,则按照目标算力增加计算节点的计算资源,从而对于富余算力的计算节点,分配更多的计算资源,对于算力匮乏的计算节点,减少计算资源,有效提高了计算集群中资源的调度,充分利用不同算力的计算节点对计算资源进行处理,保证资源的利用率。
其中,资源申请量可以表示计算节点运行时计算资源的累加量,资源剩余量可以为计算节点的资源总量与资源申请量之间的差值,对于资源总量,可以通过归一化系数、CPU核心数量(即物理核心数量),是否开启超频以及是否开启超线程技术等确定,例如可以分别设置对应的权重系数,接着根据加权结果得到计算节点的资源总量。在进行计算资源的调度之前,还可以获取各个计算节点当前的第一计算资源,然后对第一计算资源进行资源类型转换,获得适配于目标算力的第二计算资源,然后若资源申请量小于资源剩余量,则按照目标算力减少计算节点的第二计算资源;若资源申请量大于资源剩余量,则按照目标算力维持计算节点的第二计算资源;若计算节点的运算完成后,则按照目标算力增加计算节点的第二计算资源,从而通过对计算资源进行资源类型转换,可以保证两个不同维度的账本数据运算的准确性。
在本申请的一种可选实施例中,通过对计算节点的算力进行归一化处理后,可以有效解决计算集群中计算节点“算力异构”的问题,同时针对计算节点算力异构对利用率的干扰,可以通过归一化利用率对计算节点算力归一化后的使用情况进行评价。
在具体实现中,可以获取各个计算节点的第一核心利用率,接着采用第一核心利用率与目标归一化系数,计算各个计算节点的初始核心利用率。由于计算节点超线程技术的影响,应用的吞吐率与其CPU利用率往往呈现非线性的关系,则可以通过数据拟合的方式,构建超线程逻辑核利用率与真实利用率之间的关系,对归一化利用率作进一步的修正,可以获取与计算节点对应的逻辑核拓扑关系,接着采用初始核心利用率、各个计算节点的第一核心利用率以及逻辑核拓扑关系,计算各个计算节点的第二核心利用率。
可选地,对于一个CPU,其可以包括多个物理核,当CPU开启了超线程,则一个物理核可以被分为n个逻辑核,n可以为超线程的数量。当物理核开启了超线程后,虽然逻辑核在数量上大大增加,但对应的算力提升并非简单的线性增加,主要是因为同一个物理核的两个逻辑核会共享一些硬件,因此,对于核心利用率的校正模型,可以在考虑自身逻辑核CPU利用率的同时,也考虑同一物理核对应的另一个逻辑核的CPU利用率,若对端逻辑核相对空闲,表示这部分共享硬件被当前逻辑核占用,则在修正拟合的过程中,上调利用率,反之,则下调利用率,实现对计算节点的核心利用率的校正,从而通过对计算节点的核心利用率进行计算、校正等,可以有效得到归一化后各个计算节点的算力使用情况,以便进行计算资源的分配。
在一种示例中,对于ACU利用率的原始计算公式可以为:
ACU利用率=ACU时间/pod.request
其中,分子可以为ACU标准核对应的CPU时间,即进程占用的CPU时钟周期,计算公式可以为:
ACU时间=CPU时间*归一化系数
分母可以为计算节点的资源申请量(即申请的“核数”),从而可以得到ACU利用率的计算公式为:
ACU利用率=ACU利用率*归一化系数
通过上述公式可以得到计算节点的初始核心利用率,还需要通过利用率修正模型进行利用率的修正,利用率修正模型可以为:
ACU_Util_Fixed=Func_Util(ACU_Util_Origin,{CPU_Core_Util})
其中ACU_Util_Origin为修正前的利用率,CPU_Core_Util为各CPU逻辑核的利用率数据,Func_Util表示通过数据拟合构建的模型,从而实现对计算节点的核心利用率的校正,从而通过对计算节点的核心利用率进行计算、校正等,可以有效得到归一化后各个计算节点的算力使用情况,以便进行计算资源的分配。
需要说明的是,本申请实施例包括但不限于上述示例,可以理解的是,本领域技术人员在本申请的思想指导下,还可以将计算资源的调度应用于电子商务、大数据运算、AI训练等场景,例如,在大数据运算场景中,针对计算集群中不同计算节点(终端或服务器)的算力,可以先通过归一化模型对各个计算节点进行算力归一化,接着根据归一化后的算力进行资源调度,从而充分利用计算集群中各个设备的算力,有效保证资源的利用率;在AI训练场景中,由于需要处理的数据量十分庞大,则同样可以在计算集群中实现数据资源的AI训练,其资源调度过程可以参考上述过程,在此不再赘述。在上述场景中,每个作业可以包含若干个子任务,每个子任务可以申请一定数量的计算资源(CPU),并运算在对应的计算节点(终端或服务器)中,从而通过对不同的“CPU”进行统一管理以实现算力的有效利用,保证资源的利用率。
在本申请实施例中,可以应用于计算集群,计算集群可以包括若干个计算节点,则在运行过程中,可以获取各个计算节点的节点信息,以及针对计算节点的归一化模型,接着根据节点信息与归一化模型,计算各个计算节点的目标算力,然后根据计算节点的资源状态与目标算力,为计算节点进行计算资源的调度,通过归一化模型可以对不同计算节点的算力进行归一化,得到相同标准下各个计算节点的算力,实现算力的归一化,解决了算力异构的问题,并且通过对算力归一化后的计算节点进行资源调度,可以有效保证资源的利用率,保证线上服务的正常运行。
参照图2,示出了本申请实施例中提供的一种计算资源的调度方法实施例的步骤流程图,应用于资源调度系统,所述资源调度系统至少包括若干个Node节点以及与Node节点对应的Pod容器、资源调度器以及归一化控制器,具体可以包括如下步骤:
步骤201,所述归一化控制器获取各个所述Node节点上传的节点信息;
在本申请实施例中,参照图3,示出了本申请实施例中提供的资源调度系统的结构示意图,资源调度系统可以包括若干个Node节点与Node节点对应的Pod容器、资源调度器、归一化控制器以及资源适配器。可选地,Pod容器与Node节点可以位于元数据管理中,由资源调度器负责对Pod与Node节点进行调度。
其中,资源调度器可以用于对计算资源进行调度,以及负责Pod容器与Node节点之间的匹配,同时维护系统中的资源账本数据;归一化控制器中配置有归一化模型,可以对各个Node节点的算力进行归一化;资源适配器可以用于对计算资源进行资源类型转换,如将适配于CPU运算的资源类型转换为归一化运算的资源类型,以便保证将应用Pod容器的资源申请转换为归一化的模式;Pod容器表示服务应用的一个副本,即表示同一个应用的多个进程实例,例如,有一千个网页请求发送到后端,后端会有100个相同的进程来分担处理这些请求,则后端的每一个进程就表示一个副本;Node节点可以运行多个Pod容器,根据每个Node节点的算力情况,资源调度器可以在系统中的Node节点上调配Pod容器。
在具体实现中,在资源调度系统运行的过程中,归一化控制器可以获取各个Node节点的节点信息,并将节点信息输入归一化模型,得到各个Node节点的目标算力,然后将各个Node节点的目标算力传输至资源调度器,资源调度器可以根据Pod容器的资源状态与Node节点的目标算力进行计算资源的调度,同时在资源调度的过程中,资源适配器可以对计算资源的资源类型进行转换,以适配于归一化模型的运算方式,从而通过归一化模型可以对不同Node节点的算力进行归一化,得到相同标准下各个Node节点的算力,实现算力的归一化,解决了算力异构的问题,并且通过对算力归一化后的Node节点进行资源调度,可以有效保证资源的利用率,保证线上服务的正常运行。
可选地,对于归一化控制器中的归一化模型,可以通过获取针对各个Node节点的第一性能测试结果以及第二性能测试结果,第一性能测试结果为基于SPEC-CPU的测试结果,第二性能测试结果为基于SPEC-JBB的测试结果,接着获取针对第一性能测试结果与第二性能测试结果的比例系数,然后采用比例系数、第一性能测试结果以及第二性能测试结果,计算针对Node节点的预设归一化系数,以及采用各个Node节点的节点信息和预设归一化系数,生成归一化模型。
步骤202,所述归一化控制器根据所述节点信息与预设的归一化模型,获得各个所述Node节点的目标算力;
在本申请实施例中,节点信息可以包括CPU的型号信息以及配置状态信息等。其中,型号信息可以用于表示CPU的性能、规格等,通过型号信息一方面可以区分不同的CPU,还可以用于对CPU的性能进行简单评估,例如型号越新,可以表示性能越好(需要说明的是,具体的性能并不以型号的差异进行评估,此处仅作示例);配置状态信息可以包括超频是否开启、超线程是否开启、计算核心数量、单核算力以及相对算力中的一种。对于计算核心数量,可以包括CPU物理核心数量以及CPU逻辑核心数量,物理核心数量可以为计算节点CPU物理核心的数量,逻辑核心数量可以为计算节点CPU逻辑核心的数量。
对各个Node节点进行算力的归一化过程中,归一化控制器可以从预归一化模型中,获取与型号信息和配置状态信息对应的目标归一化系数,并采用目标归一化系数与计算核心数量(在本申请实施例中计算核心数量可以为计算节点的CPU物理核心数量),计算Node节点的目标算力。其中,配置状态信息至少包括超频是否开启、超线程是否开启、物理核心数量、逻辑核心数量、单核算力以及相对算力中的一种。
例如,可以通过查表的方式,从归一化模型中获取与Node节点对应的归一化系数,假设计算节点上报的CPU信号为A,CPU数量为100,配置状态信息包括:HT=On,Turbo=on,则通过上表可以查询得到该Node节点所对应的归一化系数为1.23,采用归一化系数与CPU物理核心数量可以得到该Node节点的目标算力为123,从而通过上述方式可以根据Node节点的节点信息从归一化模型中得到对应的目标算力。
步骤203,所述资源调度器根据所述Pod容器的资源状态与所述Node节点的目标算力,为所述Node节点进行计算资源的调度。
完成对各个Node节点算力的归一化处理后,资源适配器获取各个Pod容器的第一计算资源,并对第一资源进行资源类型转换,获得适配于目标算力的第二计算资源,接着针对每一个Pod容器以及与Pod容器对应的Node节点,资源调度器可以获取Pod容器的资源申请量以及与Pod容器对应的Node节点的资源剩余量,若资源申请量小于资源剩余量,则资源调度器按照目标算力减少Node节点的第二计算资源,并将Pod容器置于Node节点中运行;若资源申请量大于资源剩余量,则资源调度器按照目标算力维持Node节点的第二计算资源;若Pod容器的资源运算完成,则可以将该Pod容器从Node节点中移除,并按照目标算力增加Node节点的计算资源,从而通过归一化模型可以对不同Node节点的算力进行归一化,得到相同标准下各个Node节点的算力,实现算力的归一化,解决了算力异构的问题,并且通过对算力归一化后的Node节点进行资源调度,可以有效保证资源的利用。
需要说明的是,Node节点的资源总量(Node.Total),可以根据归一化系数、CPU核心数量,是否开启超频以及是否开启超线程技术等参数确定,Node节点的资源分配量(Node.Allocated)可以为运行在Node节点中Pod容器的资源申请量的累加值,资源剩余量(Node.Free),可以为资源总量与资源分配量之间的差值。
在本申请的一种可选实施例中,资源调度器还可以获取各个Node节点的CPU利用率,并采用CPU利用率与目标归一化系数,计算各个Node节点的初始核心利用率。进一步,资源调度器获取与Node节点对应的逻辑核拓扑关系,并采用初始核心利用率、各个Node节点的CPU利用率以及逻辑核拓扑关系,计算各个Node节点的目标核心利用率,从而通过对计算节点的核心利用率进行计算、校正等,可以有效得到归一化后各个计算节点的算力使用情况,以便进行计算资源的分配。
需要说明的是,本申请实施例以资源调度系统为例进行示例性说明,相关内容可以参考上一实施例,可以理解的是,计算资源的调度还可以适用于计算集群,本申请对此不作限制。
在本申请实施例中,可以应用于资源调度系统,资源调度系统可以包括若干个Node节点、Pod容器、资源调度器以及归一化控制器,则在资源调度系统运行的过程中,归一化控制器可以获取各个Node节点上传的节点信息,接着根据节点信息与预设的归一化模型,获得各个Node节点的目标算力,资源调度器可以根据Pod容器的资源状态与Node节点的目标算力,为Node节点进行计算资源的调度,通过归一化模型可以对不同Node节点的算力进行归一化,得到相同标准下各个Node节点的算力,实现算力的归一化,解决了算力异构的问题,并且通过对算力归一化后的Node节点进行资源调度,可以有效保证资源的利用率,保证线上服务的正常运行。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
参照图4,示出了本申请实施例提供的一种计算资源的调度装置的结构框图,具体可以包括如下模块:
数据获取模块401,用于获取各个所述计算节点的节点信息,以及针对所述计算节点的归一化模型;
算力归一化模块402,用于根据所述节点信息与所述归一化模型,获得所述计算节点的目标算力;
资源调度模块403,用于根据所述计算节点的资源状态与目标算力,为所述计算节点进行计算资源的调度。
在本申请的一种可选实施例中,所述节点信息至少包括型号信息以及配置状态信息,所述配置状态信息包括计算核心数量,所述算力归一化模块402包括:
归一化系数获取子模块,用于从所述归一化模型中,获取与所述型号信息和所述配置状态信息对应的目标归一化系数;
目标算力计算子模块,用于采用所述目标归一化系数与所述计算核心数量,计算所述计算节点的目标算力;
其中,所述配置状态信息至少包括超频是否开启、超线程是否开启、单核算力以及相对算力中的一种。
在本申请的一种可选实施例中,所述归一化模型通过如下模块生成:
测试结果获取模块,用于获取针对各个所述计算节点的第一性能测试结果以及第二性能测试结果,所述第一性能测试结果为基于第一性能测试标准的测试结果,所述第二性能测试结果为基于第二性能测试标准的测试结果;
比例系数获取模块,用于获取针对所述第一性能测试结果与所述第二性能测试结果的比例系数;
归一化系数计算模块,用于采用所述比例系数、所述第一性能测试结果以及所述第二性能测试结果,计算针对所述计算节点的预设归一化系数;
归一化模型生成模块,用于采用各个所述计算节点的节点信息和预设归一化系数,生成所述归一化模型。
在本申请的一种可选实施例中,所述资源调度模块403包括:
资源信息获取子模块,用于获取所述计算节点的资源申请量以及资源剩余量;
资源减少子模块,用于若所述资源申请量小于所述资源剩余量,则按照所述目标算力减少所述计算节点的计算资源;
资源维持子模块,用于若所述资源申请量大于所述资源剩余量,则按照所述目标算力维持所述计算节点的计算资源;
资源增加子模块,用于若所述计算节点的资源运算完成,则按照所述目标算力增加所述计算节点的计算资源。
在本申请的一种可选实施例中,还包括:
计算资源获取模块,用于获取各个所述计算节点的第一计算资源;
资源类型转换模块,用于对所述第一资源进行资源类型转换,获得适配于所述目标算力的第二计算资源;
其中,所述资源减少子模块具体用于:
按照所述目标算力减少所述计算节点的第二计算资源;
其中,所述资源维持子模块具体用于:
按照所述目标算力维持所述计算节点的第二计算资源;
其中,所述资源增加模块具体用于:
按照所述目标算力增加所述计算节点的计算资源。
在本申请的一种可选实施例中,还包括:
第一利用率获取模块,用于获取各个所述计算节点的第一核心利用率;
初始利用率计算模块,用于采用所述第一核心利用率与所述目标归一化系数,计算各个所述计算节点的初始核心利用率。
在本申请的一种可选实施例中,还包括:
拓扑关系获取模块,用于获取与所述计算节点对应的逻辑核拓扑关系;
目标利用率计算模块,用于采用所述初始核心利用率、各个所述计算节点的第一核心利用率以及所述逻辑核拓扑关系,计算各个所述计算节点的第二核心利用率。
参照图5,示出了本申请实施例提供的一种计算资源的调度系统的结构框图,所述调度系统至少包括若干个Node节点以及与所述Node节点对应的Pod容器、资源调度器、资源适配器以及归一化控制器;
位于所述归一化控制器的数据获取模块,用于获取各个所述Node节点上传的节点信息;
位于所述归一化控制器的算力归一化模块,用于根据所述节点信息与预设的归一化模型,获得各个所述Node节点的目标算力;
位于所述资源调度器的资源调度模块,用于根据所述Pod容器的资源状态与所述Node节点的目标算力,为所述Node节点进行计算资源的调度。
在本申请的一种可选实施例中,所述节点信息至少包括型号信息以及配置状态信息,所述配置状态信息包括计算核心数量;所述算力归一化模块包括:
归一化系数获取子模块,用于从所述归一化模型中,获取与所述型号信息和所述配置状态信息对应的目标归一化系数;
目标算力计算子模块,用于采用所述目标归一化系数与所述计算核心数量,计算所述Node节点的目标算力;
其中,所述配置状态信息至少包括超频是否开启、超线程是否开启、单核算力以及相对算力中的一种。
在本申请的一种可选实施例中,所述归一化模型通过如下模块生成:
位于所述归一化控制器的测试结果获取模块,用于获取针对各个所述Node节点的第一性能测试结果以及第二性能测试结果,所述第一性能测试结果为基于SPEC-CPU的测试结果,所述第二性能测试结果为基于SPEC-JBB的测试结果;
位于所述归一化控制器的比例系数获取模块,用于获取针对所述第一性能测试结果与所述第二性能测试结果的比例系数;
位于所述归一化控制器的归一化系数计算模块,用于采用所述比例系数、所述第一性能测试结果以及所述第二性能测试结果,计算针对所述Node节点的预设归一化系数;
位于所述归一化控制的归一化模型生成模块,用于采用各个所述Node节点的节点信息和预设归一化系数,生成所述归一化模型。
在本申请的一种可选实施例中,所述资源调度模块包括:
资源信息获取子模块,用于获取目标Pod容器的资源申请量,以及与所述目标Pod容器对应的目标Node节点的资源剩余量;
资源减少子模块,用于若所述资源申请量小于所述资源剩余量,则按照所述目标算力减少所述目标Node节点的计算资源,并将所述目标Pod容器置于所述目标Node节点中运行;
资源维持子模块,用于若所述资源申请量大于所述资源剩余量,则按照所述目标算力维持所述目标Node节点的计算资源;
资源增加子模块,用于若所述目标Pod容器的资源运算完成,则将所述目标Pod容器从所述目标Node节点中移除,并按照所述目标算力增加所述目标Node节点的计算资源。
在本申请的一种可选实施例中,所述资源调度系统还包括资源适配器;所述资源适配器包括:
计算资源获取模块,用于获取各个所述Pod容器的第一计算资源;
资源类型转换模块,用于对所述第一资源进行资源类型转换,获得适配于所述目标算力的第二计算资源;
其中,所述资源减少子模块具体用于:
按照所述目标算力增加所述目标Node节点的第二计算资源;
其中,所述资源维持子模块具体用于:
按照所述目标算力减少所述目标Node节点的第二计算资源;
其中,所述资源增加子模块具体用于:
按照所述目标算力增加所述目标Node节点的第二计算资源。
在本申请的一种可选实施例中,所述资源调度器包括:
第一利用率获取模块,用于获取各个所述Node节点的CPU利用率;
初始利用率计算模块,用于采用所述CPU利用率与所述目标归一化系数,计算各个所述Node节点的初始核心利用率。
在本申请的一种可选实施例中,所述资源调度器包括:
拓扑关系获取模块,用于获取与所述Node节点对应的逻辑核拓扑关系;
目标利用率计算模块,用于采用所述初始核心利用率、各个所述Node节点的CPU利用率以及所述逻辑核拓扑关系,计算各个所述Node节点的目标核心利用率。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请实施例还提供了一种电子设备,包括:
一个或多个处理器;和
其上存储有指令的一种计算机可读存储介质,当由所述一个或多个处理器执行时,使得所述电子设备执行本申请实施例所述的方法。
本申请实施例还提供了一种计算机可读存储介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行本申请实施例所述的方法。
本申请实施例还公开了一种软件产品,包括计算机程序/指令,其中,当所述计算机程序/指令被执行时,实现执行如上所述的方法。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的机器可读介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种计算资源的调度方法和一种计算资源的调度装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。