具体实施方式
算力网络(Computing Force Network)是指一种通过某种协议将多个计算节点集群互联,形成一个大的虚拟的集群,对外提供统一的用户使用接口的算力网络平台。目前,借助于已有计算节点集群的计算资源可组织形成更大的算力网络,这些计算节点集群可能来自不同的厂商,位于不同的地区,如此,算力网络的厂商不需要花费高昂的成本建设数据中心,只需要租用第三方闲置的计算资源即可对外提供服务。
图1是本申请实施例提供的一种可能的算力网络10的架构示意图。如图1所示,算力网络10包括算力网络调度平台130、一个或多个计算节点集群(computer cluster)(图1仅示出两个计算节点集群140、150,但本申请不限定于此)。
算力网络调度平台130,是算力网络10的入口,各个计算节点集群如140、150可通过在算力网络调度平台130注册的方式加入算力网络10对外提供计算资源。示例的,算力网络调度平台130可提供算力网络10的全局资源的统一视图,用户可将作业提交至算力网络调度平台130,由算力网络调度平台130执行作业调度,如将作业调度至计算节点集群140和/或计算节点集群150。示例性的,算力网络调度平台130可包括算力网络10的全局资源信息,该全局资源信息用于描述算力网络10包括哪些计算节点集群,每个计算节点集群加入算力网络10的计算资源的数目。可选的,还可以包括每个计算节点的信息,如计算节点的节点标识等。可选的,还可以包括每个计算节点集群的算力特征,比如CPU密集型、GPU密集型、内存密集型等。在一种可选的实施方式中,算力网络调度平台130可结合调度策略、计算节点集群的算力特征进行作业调度。如,计算节点集群140为CPU密集型,计算节点集群150为内存密集型,用户提交的调度策略指示将作业调度至内存密集型的计算节点集群,则算力网络调度平台130将作业调度至计算节点集群150。
计算节点集群是指一组松散或紧密连接在一起工作的计算节点,通常用于执行大型作业。部署集群通常是通过并发度提升总体性能,比速度或可用性相当的单台计算节点的成本效益要高。各个计算节点之间通过网络相互连接,每个计算节点运行自己的操作系统实例。在大多数情况下,每台计算节点使用相同的硬件和相同的操作系统,在某些情况下,也可以在不同的硬件上使用不同的操作系统。
接下来以一个计算节点集群如140为例进行介绍,图2是本申请实施例提供的一种计算节点集群140的示意图。如图2所示,计算节点集群140包括多个计算节点,如100A、100B、100C、100D和100E。这些计算节点用于提供计算资源。就一个计算节点来说,它可以包括多个处理器或处理器核,每个处理器或者处理器核可能是一个计算资源,因此一个计算节点可以提供多个计算资源。当然,计算资源还包括如内存等其他资源,具体不做限定。计算节点100A、100B、100C、100D和100E之间通过网络112互联。另外,计算节点143作为调度器也连接到网络112。在操作中,调度器143可以控制提交给计算节点的作业的执行。
作业可以从任何合适的源头提交给计算节点集群140。本申请实施例不限定提交作业的位置,也不限定用户提交作业的具体机制。在图2中,例如,算力网络调度平台130向计算节点集群提交作业138。在该实例中,算力网络调度平台130通过网络120连接到计算节点集群140,网络120可以是因特网,或者其他网络。因此,算力网络调度平台130可以从远程位置向计算节点集群140提交作业。又例如,用户132可以向计算节点集群140提交作业136。具体的,在该示例中,用户132操作客户端计算机134以向计算节点集群140提交作业136。类似的,用户132通过网络121连接到计算机即140,网络121可以是因特网或其他网络。这里的作业通常是需要较多计算资源并行处理的大型作业,本实施例不限定作业的性质和数量。一个作业可能包括多个计算任务,大多数任务是并发或并行执行的,这些任务可以分配给多个计算资源执行。
需要说明的是,图2为保持简洁仅示出5个计算节点,实际上一个计算节点集群通常包括大量计算节点,本申请对此不做限定。另外需要说明的是,图2仅示出了计算节点和调度器,一个计算节点集群可包括比图2更多或更少的节点,比如,还可以包括登录节点等,用户132可操作客户端计算机134登录至登录节点提交作业,本申请对计算节点集群、算力网络10的架构均不做限定。
如图3所示,在一种实施方式中,计算节点集群140还可以包括适配器141,通常适配器141是算力网络调度平台130提供的适配于调度器143的软件,也可以是硬件。示例性地,适配器141可安装于计算节点集群中的某一节点(如登录节点或计算节点)中,算力网络调度平台130可通过适配器141与计算节点集群内的调度器143通信。如算力网络调度平台130通过适配器141获取调度器143对计算节点进行监控所产生的指标数据。又如算力网络调度平台130将作业及作业的数据通过适配器141发送至调度器143。调度器143根据作业的来源将作业调度至对应的计算节点上执行。
在算力网络场景中,通常计算节点集群140通过对一部分计算资源整体打包的方式提供给算力网络调度平台130,供算力网络调度平台130对外提供算力服务。如此可以将计算节点集群140内的计算资源划分为两类,共享资源和非共享资源。如图3所示,共享资源指加入算力网络10的计算资源,应由算力网络调度平台130独占使用,供用户向算力网络调度平台130提交的作业(如作业138)使用。非共享资源是指未加入任何算力网络,由计算节点集群140自身对外提供服务,供用户直接提交至计算节点集群的作业(如作业136)使用。
如图2所示,对于算力网络调度平台130提交的作业138,调度器143应将作业138提交至计算节点集群140中,归属于算力网络调度平台130的共享资源上执行。而对于本地提交的作业136,调度器143应将作业136提交至计算节点集群140中的非共享资源上执行。除此之外,调度器143还可以用于对计算节点集群内的各计算节点进行性能指标的监控,包括各种物理资源和虚拟资源的监控,如Host及VM的CPU占用率、内存占用率、网络流量以及磁盘IO等。
其中,算力网络调度平台在不同计算节点集群内的适配器具有不同标号,计算节点集群150内的适配器151、计算机集群160内的适配器161可参见适配器141的介绍,此处不再赘述。另外,不同算力网络调度平台在同一个计算节点集群内可分别具有对应的适配器,如图4中,计算节点集群150包括与算力网络调度平台130对应的适配器151,以及与算力网络调度平台131对应的适配器152。计算节点集群150内的调度器153、计算机集群160内的调度器163可参见调度器143的介绍,此处不再赘述。
值得注意的是,不同于弹性伸缩技术,计算节点集群140打包给算力网络调度平台130的计算资源的数量通常是固定的,不会随着算力网络调度平台130提交的作业量而扩容或缩容。可以理解为,即使共享资源空闲,也会为算力网络调度平台130预留,以保证算力网络调度平台130提交的作业具有稳定的可用计算资源。比如,计算节点集群140内的计算节点1至计算节点10为加入算力网络10的共享资源,那么算力网络调度平台130提交的作业将会被调度至计算节点1至计算节点10上处理。若计算节点1至计算节点10没有可用的计算资源,则算力网络调度平台130只能将作业调度至其他计算节点集群或等待计算节点1至计算节点10有可用的计算资源。
理论上,加入算力网络10的共享资源由算力网络调度平台130独占使用,但实际上,算力网络调度平台130只具有共享资源的使用权限,而没有管理权限,比如,算力网络调度平台130不可随意在租赁的计算节点内安装软件或硬件,计算节点实际上还是由其归属的计算节点集群140的厂商管理,因此,调度器143能够将非算力网络调度平台130提交的作业调度至算力网络调度平台130的共享资源上。参见图4所示,调度器143可以将用户提交至计算节点集群140的作业如作业136调度至算力网络调度平台130的共享资源执行。调度器143也可以将其他算力网络调度平台如131的作业调度至算力网络调度平台130的共享资源执行。这些情况均属于对算力网络调度平台130的共享资源的不正当占用,然而,算力网络调度平台130只能被动使用计算资源,并不能感知到计算节点集群140对自身共享资源的异常占用。其中,异常占用可包括资源超卖的情况,资源超卖是指计算节点集群将同一个计算资源同时租赁给两个及以上的算力网络调度平台。目前,亟需一种方法来识别计算节点集群对共享资源的占用,防止计算资源被超卖。
参见图5所示,在一种相关技术中提出,在所有共享资源对应的计算节点中安装探针,通过探针监控这些计算节点是否被异常占用。然而这种方式存在几个技术难点,如探针具有侵入性,计算节点集群140的厂商通常不会接受这种方式。另外,由于探针不能识别哪些进程运行的是合法作业(指算力网络调度平台130提交的作业),哪些进程运行的是非法作业(指非算力网络调度平台130提交的作业),因此,即使能够在计算节点内安装探针,也很难通过一套逻辑识别共享资源是否被异常占用。
另一种相关技术方式中提出,基于区块链技术监督、识别是否存在资源超卖的问题。区块链是一种比较特殊的分布式数据库,使用点对点传输、加密算法、共识机制等计算机技术实现。链上的区块信息对于链上的每个节点都是公开透明的,链上的每个节点存储相同的区块链信息,该区块链信息包括一笔或多笔记账,每一笔账可记录哪些计算节点加入哪个算力网络调度平台。参见图6所示,算力网络调度平台130和计算节点集群140、150、160加入到同一个区块链,如此,算力网络调度平台130便可以获知加入该区块链上的每个节点。然而,当一个计算节点集群加入到多个不同的区块链网络时,便无法实现同一记账,如图7所示,计算节点集群150同时加入到算力网络调度平台130和算力网络调度平台131,然而,算力网络调度平台130基于区块链1无法感知到算力网络调度平台131的存在,同样,算力网络调度平台131基于区块链2无法感知到算力网络调度平台130的存在。也就是说,要使用区块链技术识别资源超卖的问题,前提是需要有一个公认的区块链平台,同时算力网络中所有的计算节点集群和算力网络调度平台都加入到这个统一的区块链中,才能实现计算资源的统一记账,目前还未实现。
本申请提供了资源检测方法,该方法可以在各计算节点集群现有架构的基础上实施,不会引入新的软件或工具,仅利用现有工具和能力,通过对计算节点进行监控产生的指标数据进行分析,就可以实现对资源占用的评估。
如下结合图8,以该资源检测方法应用于图2所示的系统为例,对本申请实施例提供的资源检测方法进行详细说明。图8为本申请实施例提供的一种资源检测方法的流程示意图。为便于说明,以一个计算节点集群如140和算力网络调度平台130为例进行介绍。如图8所示,该方法可包括:
步骤801,算力网络调度平台130获取计算节点集群140内加入算力网络10的各计算节点的指标数据。
该指标数据为针对计算节点集群140内加入算力网络调度平台130的计算节点进行监控产生的数据。
在一种实施方式中,调度器143对计算节点集群140内的计算节点的性能指标进行监控,所得的数据即为指标数据。示例性地,调度器143内部署有监控模块,监控模块负责实时或周期性的采集计算节点的各项性能指标,以获得每个计算节点的指标数据。这里的每个计算节点可以是计算节点集群140内的每个计算节点,或者,还可以计算节点集群140内加入算力网络调度平台130的每个计算节点,此处不做限定。
其中,指标数据包括但不限于下列中的一项或多项:
(1)计算资源的性能指标。
计算资源包括但不限于处理器、内存等。
其中,处理器包括中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)、数据计算单元(data processing unit,DPU)、特殊应用集成电路(application specific integrated circuit,ASIC)、系统级芯片(system onchip,SOC)、可编程门阵列(field programmable gate array,FPGA)、嵌入式神经网络处理器(neural network processing unit,NPU)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件、人工智能芯片、片上芯片等。
每个计算节点可以包括一个或多个处理器,多个处理器可以为多个相同类型的处理器,也可以为多个不同类型的处理器,例如,多个处理器为多个CPU。又例如,该多个处理器为一个或多个CPU以及一个或多个GPU,等等。其中,每个CPU又可以具有一个或多个CPU核。本实施例不对CPU的数量,以及CPU核的数量进行限定。
计算资源的性能指标用于指示计算资源的使用情况。以CPU为例,指示CPU使用情况的性能指标包括但不限于下列中的一项或多项:CPU利用率、CPU占用率、CPU空闲率等。为便于说明,如下均以利用率为例进行说明。当计算节点包括多个处理器时,调度器143可以以处理器为粒度,采集每个处理器的性能指标,比如,若计算节点包括CPU和GPU,调度器143可对CPU利用率、GPU利用率进行监控,指标数据可包括在一段时间内采集的CPU利用率的多个采样值,以及在该段时间内采集的GPU利用率的多个采样值。
内存是指可与处理直接交换数据的内部存储器,内存包括易失性存储器(volatile memory),例如RAM、DRAM等,也可以包括非易失性存储器(non-volatilememory),例如存储级内存(storage class memory,SCM)等,或者易失性存储器与非易失性存储器的组合等。
内存的性能指标用于指示内存使用情况,示例性的,内存的性能指标包括但不限于下列中的一项或多项:内存利用率、内存使用量、内存空闲量等。
(2)IO的性能指标。
IO的性能指标用于指示IO接口的使用情况,包括但不限于下列中的一项或多项:IO读速率、IO写速率等。
在本申请实施例中,调度器143可从多个维度对各性能指标进行监控,比如,以CPU利用率为例,调度器143可以对计算节点的CPU利用率进行监控,得到计算节点的CPU利用率。再细粒度地,调度器143还可以针对计算节点中运行的作业的CPU利用率进行监控,得到作业的CPU利用率。应注意,作业的CPU利用率是指根据计算节点上运行的作业所消耗的CPU资源,计算得到的CPU利用率,而计算节点的CPU利用率是指基于计算节点上消耗的全部CPU资源,计算得到的CPU利用率。可以理解为,计算节点的CPU利用率属于计算节点的负载信息,作业的CPU利用率属于作业的负载信息。
类似的,对于其他性能指标,如内存利用率,调度器143可以对计算节点的内存利用率进行监控,得到计算节点的内存利用率。调度器143还可以对计算节点上运行的作业的内存利用率进行监控,得到作业的内存利用率。同理,计算节点的内存利用率属于计算节点的负载信息,作业的内存利用率属于作业的负载信息。
也就是说,本申请中,指标数据包括计算节点的总负载(也可称为节点负载)信息和作业负载信息。其中,总负载信息是以计算节点为粒度,对计算节点的各项性能指标进行监控产生的数据。作业负载信息是以作业为粒度,对计算节点上运行的每项作业的各项性能指标进行监控产生的数据。示例性的,总负载信息包括:计算节点的CPU利用率、GPU利用率、NPU利用率、内存利用率、IO读速率和IO写速率。作业负载信息包括作业的CPU利用率、GPU利用率、CPU利用率、内存利用率、IO读速率和IO写速率。
在一种实施方式中,适配器141可实时或周期性获取(通常周期性获取即可)调度器143采集的指标数据,并(主动)将采集的指标数据上报(发送)给算力网络调度平台130。应注意,适配器141只能获取属于算力网络调度平台130的计算节点的指标数据,并且,这些计算节点上运行的作业可能不是来自算力网络调度平台130的作业,然而适配器141不能够获取该计算节点上运行的非算力网络调度平台130分配的作业的负载信息。换句话说,适配器141只能获取加入算力网络调度平台130的计算节点的指标数据,且该指标数据包括该计算节点的负载信息和该计算节点上运行的算力网络调度平台130分配的作业的负载信息。
在另一种实施方式中,算力网络调度平台130实时或周期调用适配器141,以获取属于算力网络调度平台130的计算节点的指标数据。这样,适配器141不需要主动上报指标数据。
需要说明的是,上述列举的指标数据仅为示例,本申请实施例中的指标数据可包括针对计算节点的任何性能指标进行监控产生的数据。
步骤802,算力网络调度平台130将获取的每个计算节点的指标数据作为资源评估模型的输入数据,以得到资源评估模型的输出结果,该输出结果用于指示计算节点的资源是否被异常占用。
示例性的,算力网络调度平台130以计算节点为单位,分别判断每个计算节点的资源是否被异常占用。以一个计算节点为例,在一种实施方式中,算力网络调度平台130将该计算节点的指标数据输入至资源评估模型,得到该资源评估模型的输出结果。示例性的,该资源评估模型用于根据计算节点的指标数据,计算该计算节点中非作业负载的占比,基于该非作业负载的占比判断该计算节点资源是否被异常占用,如非作业负载的占比超过设定阈值,则确定该计算节点在这段时间内(可称为一次评估时间/评估间隔)的资源被异常占用,可选的,算力网络调度平台130更新该计算节点的资源异常次数,如将该计算节点的资源异常次数+1。或者,非作业负载的占比未超过设定阈值(记为第一阈值),则确定计算节点的资源未被异常占用。
非作业负载的占比可通过下列方式确定:根据计算节点的指标数据,计算该指标数据中指示的一项或多项性能指标中每一项性能指标的非作业负载占总负载的比例,每个性能指标被赋予一个权重值,基于一项或多项性能指标中每项性能指标的非作业负载占总负载的比例及该项性能指标对应的权重值计算该计算节点的非作业负载的占比。其中,一项性能指标的非作业负载为该项性能指标的总负载与该项性能指标的全部作业负载之差。
举例来说,某计算节点的指标数据包括K项性能指标中每项性能指标的总负载和作业负载,K取正整数。假设K大于1,则该K项性能指标记可记为第1项、第2项、...、第K项。针对该指标数据所包括的第m项性能指标,计算该计算节点针对第m项性能指标对应的非作业负载与总负载的比值。m取遍1至K,以得到K项性能指标中每一项性能指标对应的非作业负载与总负载的比值。每项性能指标对应的非作业负载与总负载的比值被赋予一个权重值。基于该计算节点的K项性能指标分别对应的非作业负载与总负载的比值、以及各项性能指标的非作业负载与总负载的比值分别对应的权重值,确定该计算节点的非作业负载占该计算节点的总负载的占比。
示例性的,该计算节点的非作业负载占该计算节点的总负载的占比满足于下述公式:
ωcpu+ωmem+ωior+ωiow+......=1 公式2
其中,Δpt表示本次评估时间内非作业负载的占比;
K项性能指标包括但不限于:CPU利用率、内存利用率IO读速率、IO写速率;
总负载信息包括cpu-host、mem-host、ior-host、iow-host;其中,cpu_host表示计算节点的CPU利用率;mem_host表示计算节点的内存利用率;ior-host表示计算节点的IO读速率;iow_host表示计算节点的IO写速率;作业负载信息包括cpu_jobi、mem_jobi、ior_jobi、iow_jobi;其中,cpu_jobi表示该计算节点上一项作业的CPU利用率;mem_jobi表示该计算节点上一项作业的内存利用率;ior_jobi表示该计算节点上一项作业的IO读速率;iow_jobi表示该计算节点上一项作业的IO写速率;
ωcpu表示cpu利用率的权重;ωmem表示内存利用率的权重;ωior表示IO读速率的权重;ωiow表示IO写速率的权重。
上述示例中,若Δpt大于或等于第一阈值,则记录该计算节点在本次评估时间内资源被异常占用。或者,若Δpt小于第一阈值,则记录该计算节点在本次评估时间内资源未被异常占用。
举例来说,计算节点A的指标数据包括:计算节点A的总负载信息和作业负载信息,其中,总负载信息包括计算节点A的CPU利用率(如为cpu_host)、内存利用率(如为mem_host)、IO读速率(如为ior_host)和IO写速率(如为iow_host)。
作业负载信息包括计算节点A中:作业1的CPU利用率(如为cpu_job1)、作业2的CPU利用率(如为cpu_job2)、作业1的内存利用率(如为mem_job1)、作业2的内存利用率(如为mem_job2)、作业1的IO读速率(如为ior_job1)、作业2的IO读速率(如为ior_job2)、作业1的IO写速率(如为iow_job1)、作业2的IO写速率(如为iow_job2)。
则计算节点A中:
假设ωcpu=0.4;ωmem=0.4;ωior=0.1;ωiow=0.1。
示例性的,计算节点A的非作业负载的占比为:
假设第一阈值=30%,若Δpt≥30%,则确定计算节点A在本次评估时间内资源被异常占用;若Δpt<30%,则确定计算节点A在本次评估时间内资源未被异常占用。
需要说明的是,上述公式1仅为举例,在不同的应用场景中,Δpt的计算公式可比公式1具有更多或更少的参数项,并且不同的应用场景中,第一阈值可以不同,本申请对此均不做限定。
示例性的,上述信息可体现在计算节点集群的配置信息中,该配置信息包括但不限于下列中的一项或多项:该计算节点集群对应的非作业负载的占比Δpt的计算方式、及该计算方式中包括的每个性能指标对应的权重、第一阈值、第二阈值。不同的计算节点集群可对应不同的配置信息可能是完全相同的,或者不完全相同,或不完全相同。
步骤803,算力网络调度平台130检测各计算节点在一个评估周期内的资源异常次数达到设定阈值(记为第二阈值)时,触发告警。
可以理解为,算力网络调度平台130可以周期性执行资源异常检测,参见图9A示出了一个评估周期,在一个评估周期内,算力网络调度平台130执行多次资源异常检测,以检测该计算节点在该评估时间内资源是否被异常占用,具体检测方法请参见步骤802的描述,此处不再赘述。其中,相邻两次检测的间隔时间记为评估间隔。当一个评估周期内,该计算节点的资源异常次数达到第二阈值时,可以触发告警。否则,不触发告警。比如,检测间隔即一次评估时间为5分钟,评估周期为1小时,即在一个评估周期内执行12次资源异常检测,假设第二阈值为10,若在一个评估周期内资源异常次数达到10次时,触发告警,并将该计算节点的资源异常次数清零,可选的,开启一个新的评估周期。也就是说,一个评估周期的时长是不固定的,当资源异常次数达到第二阈值时即可结束该评估周期,应注意,一个评估周期的设定时长是固定值,但一个评估周期的实际时长可能小于设定时长,如上述示例中,一个评估周期的设定时长为1小时,而该评估周期的实际时长范围为50分钟~1小时。另外应注意,由于评估周期的实际时长不固定,因此,各计算节点的评估周期的起点可能并不相同。上述设计,通过时间维度提高资源占用评估准确性,当在一段时间内多次检测到资源异常时,再进行告警,避免短时间内出现异常或突变导致的评估误报。
示例性地,告警方式包括:通过语音、图像、动画、视频等一种或多种方式进行告警,且告警可以显示在算力网络调度平台130的运维人员的设备中,该告警还可以显示在计算节点集群的运维人员的设备中。该设备可以是手机、台式计算机、笔记本电脑、ipad等设备,具体不做限制。另外,该告警还可以进行持久化存储,以便运维人员查看。
通过上述设计,算力网络调度平台130获取计算节点集群中加入算力网络调度平台130的每个计算节点的指标数据,针对每个计算节点,将计算节点的指标数据作为资源评估模型的输入数据,由资源评估模型判断该计算节点的资源是否被异常占用。上述方法,无入侵性,不需要在计算节点集群部署新的组件、工具,不会破坏或影响计算节点集群的现有架构,用户(指计算节点集群的拥有者)接受度高。该方法也不使用区块链技术,不存在一个计算节点集群加入两个算力网络无法识别的问题。另外,本申请中,资源评估模型配置灵活,通过多种维度(性能指标的类型、性能指标的权重值、第一阈值、第二阈值、评估时间等)评估资源占用情况,提高评估准确性,避免通过单一维度评估造成评估不准确的问题。还可基于不同计算节点集群的业务特征配置资源评估模型,所有配置均可通过算力网络调度平台同一配置,提供一种更加简便、灵活的资源检测方法。
如下结合图9B和图10提供一种资源检测方法的完整流程。
图9B为本申请实施例提供的一种资源检测任务的启动方法流程示意图。该方法可以由算力网络调度平台130执行,如图9B所示,该方法可包括:
步骤901,算力网络调度平台130获取算力网络10的组网信息,该组网信息用于指示加入算力网络10的各计算节点集群。可选的,组网信息还包括各计算节点集群的配置信息。配置信息在上文已介绍过,此处不再赘述。
步骤902,算力网络调度平台130检测是否有未进行资源异常检测的计算节点集群,如果有,则执行步骤903;否则,退出该流程。
本实施例中,算力网络调度平台130可针对算力网络10中的任一计算节点集群进行资源异常检测,该任一计算节点集群可以是算力网络10中归属于第三方数据中心的部分或全部计算节点集群中的每个计算节点集群。
算力网络调度平台130逐一对各计算节点集群进行资源异常检测,比如,图1所示的系统中,算力网络调度平台130可从获取的,加入算力网络调度平台130的所有计算节点集群:计算节点集群140和计算节点集群150中,选择一个计算节点集群如计算节点集群140进行资源异常检测,之后再选择计算节点集群150进行资源异常检测。
步骤903,算力网络调度平台130选择一个未进行资源异常检测计算节点集群(如计算节点集群140),基于该计算节点集群的配置信息初始化资源评估模型。
示例性地,每个计算节点集群的配置信息可参见前述介绍,此处不再赘述。使用计算节点集群的配置信息初始化资源评估模型可包括:基于配置信息中包括的用于计算非作业负载的占比的算法(比如公式1)、算法中各项性能指标对应的权重值、以及第一阈值、第二阈值中的一项或多项参数值来设置资源评估模型中的对应参数。其中,配置信息中未携带的参数值可以是缺省值,比如,计算节点集群140的配置信息不包括第一阈值和第二阈值,初始化后资源评估模型中的第一阈值和第二阈值为默认值。
步骤904,算力网络调度平台130启动该计算节点集群(如计算节点集群140)的资源异常检测任务,并跳转至步骤902,以继续下一个计算节点集群(如计算节点集群150)。
示例性地,启动计算节点集群的资源异常检测任务包括:周期性启动资源评估模型,即使用初始化后的资源评估模型,周期性对该计算节点集群内每个加入算力网络调度平台130的计算节点进行资源异常检测。其中,资源异常检测间隔即为评估间隔。
上述方法中,可以同时启动多个资源评估模型,以并行或并发对多个计算节点集群进行资源异常检测,提高检测效率。或者,可以串行对多个计算节点集群进行资源异常检测。具体不做限定。
假设步骤904首先启动计算节点集群140的资源异常检测任务,图10示出了计算节点集群140的资源异常检测任务启动后的方法流程,该方法可由算力网络调度平台130执行,如图10所示,该方法可包括:
步骤1001,获取计算节点集群140内加入算力网络调度平台130的任一计算节点的指标数据。
计算节点集群140内加入算力网络调度平台130的任一计算节点即算力网络10的厂商从该计算节点集群租赁的任一计算节点,该任一计算节点可以是计算节点集群140内加入算力网络调度平台130的部分或全部计算节点中的每个计算节点集群。
步骤1002,判断节点队列是否为空,如果不为空,则选择一个计算节点,后续对该计算节点进行资源异常检测,如果为空,则退出该流程。
节点队列包括该计算节点集群140内加入算力网络调度平台130的部分或全部待检测的计算节点。在未执行步骤1002之前,节点队列包括该计算节点集群140内加入算力网络调度平台130的全部计算节点。可以理解为,算力网络调度平台130对该计算节点集群140内加入算力网络调度平台130的全部计算节点进行遍历,以检测各计算节点是否存在资源被异常占用的情况。
步骤1003,基于该计算节点的指标数据,获取该计算节点各项性能指标中每项性能指标对应的总负载。
步骤1004,基于该计算节点的指标数据,计算该计算节点各项性能指标中每个性能指标的作业负载之和。
比如, 具体参见前述的说明,此处不再赘述。
步骤1005,计算该计算节点的非作业负载的占比。
步骤1003~步骤1005请参见步骤902的描述,此处不再赘述。
步骤1006,判断该计算节点的非作业负载的占比是否超过第一阈值,若超过,则执行步骤1007,否则,跳转至步骤1002,以检测下一个计算节点。
步骤1007,将该计算节点的资源异常次数加1。
步骤1008,检测在一个评估周期内,该计算节点的资源异常次数是否超过第二阈值,如果是,则执行步骤1009;否则,跳转至步骤1002,以检测下一个计算节点。
步骤1009,触发针对该计算节点的告警,并清除该计算节点的资源异常次数。
步骤1006~步骤1009请参见步骤903的描述,此处不再赘述。
需要说明的是,图10示出的为一种对计算节点进行串行检测的流程,实际应用中,还可以对多个计算节点进行并行或并发检测,具体不做限定。
基于与方法实施例同一技术构思,本申请实施例还提供了一种计算装置,该计算设备可用于实现上述图8-图10任一方法实施例中算力网络调度平台130的功能,因此也能实现上述方法实施例所具备的有益效果。如图11所示,计算装置1100包括获取模块1101、处理模块1102;可选的,还包括检测模块1103。
获取模块1101,用于获取从算力网络系统所包括的任一计算节点集群中租赁的任一计算节点的指标数据,该指标数据包括对所述任一计算节点进行监控所产生的数据;具体实现方式请参见图8中的步骤801的描述,此处不再赘述。
处理模块1102,用于将所述任一计算节点的指标数据作为资源评估模型的输入数据,将所述资源评估模型的输出结果作为资源评估结果,所述资源评估结果用于指示所述任一计算节点的资源是否被异常占用。具体实现方式请参见图8中的步骤802的描述,此处不再赘述。
在一种可能的实现方式中,所述指标数据包括所述任一计算节点中的一项或多项性能指标中每项性能指标对应的总负载及作业负载。相应的,所述处理模块1102可以基于资源评估模型在计算所述任一计算节点的非作业负载占所述任一计算节点的总负载的占比,具体用于:针对所述指标数据包括的第m项性能指标,计算所述任一计算节点针对所述第m项性能指标对应的非作业负载与总负载的比值;其中,所述任一计算节点针对所述第m项性能指标对应的非作业负载,基于所述第m项性能指标对应的总负载和作业负载确定;所述i取遍1至N,所述N为正整数,且所述N为所述任一计算节点的性能指标数量;基于所述任一计算节点的各项性能指标对应的非作业负载与总负载的比值、以及各项性能指标分别对应的权重值,确定所述任一计算节点的非作业负载占所述任一节点的总负载的占比。具体实现方式请参见图10中的步骤1003-步骤1005的描述,此处不再赘述。
在一种可能的实现方式中,所述资源评估模型的输出结果为所述任一计算节点的非作业负载占所述任一计算节点的总负载的占比,若所述占比超过第一阈值,则所述资源评估结果指示所述任一计算节点的资源被异常占用;否则,指示所述任一计算节点的资源未被异常占用。具体实现方式请参见图10中的步骤1006的描述,此处不再赘述。
在一种可能的实现方式中,所述性能指标包括下列中的一项或多项:用于指示处理器使用情况的性能指标、用于指示内存使用情况的性能指标、用于指示输入输出IO接口使用情况的性能指标。
在一种可能的实现方式中,用于指示处理器使用情况的性能指标包括下列中的至少一项:处理器利用率、处理器占用率;用于指示内存使用情况的性能指标包括下列中的至少一项:内存使用量、内存使用率;用于指示IO接口使用情况的性能指标包括下列中的至少一项:IO读速率、IO写速率。
在一种可能的实现方式中,所述检测模块1103还用于:检测一个预设时长内所述任一计算节点被异常占用的次数,当所述次数达到第二阈值时,则触发告警。具体实现方式请参见图8中的步骤803的描述,或参见图10中的步骤1008的描述,此处不再赘述。
示例性的,接下来以计算装置1100中的处理模块1102为例,介绍处理模块1102的实现方式。类似的,获取模块1101、检测模块1103的实现方式可以参考处理模块1102的实现方式。
当通过软件实现时,处理模块1102可以是运行在计算机设备上的应用程序或代码块。其中,计算机设备可以是物理主机、虚拟机、容器等计算设备中的至少一种。进一步地,上述计算机设备可以是一台或者多台。例如,处理模块1102可以是运行在多个主机/虚拟机/容器上的应用程序。需要说明的是,用于运行该应用程序的多个主机/虚拟机/容器可以分布在相同的可用区(availability zone,AZ)中,也可以分布在不同的AZ中。用于运行该应用程序的多个主机/虚拟机/容器可以分布在相同的区域(region)中,也可以分布在不同的region中。其中,通常一个region可以包括多个AZ。
同样,用于运行该应用程序的多个主机/虚拟机/容器可以分布在同一个虚拟私有云(virtual private cloud,VPC)中,也可以分布在多个VPC中。其中,通常一个region可以包括多个VPC,而一个VPC中可以包括多个AZ。
当通过硬件实现时,处理模块1102中可以包括至少一个计算设备,如服务器等。或者,处理模块1102也可以是利用专用集成电路(application-specific integratedcircuit,ASIC)实现、或可编程逻辑器件(programmable logic device,PLD)实现的设备等。其中,上述PLD可以是复杂程序逻辑器件(complex programmable logical device,CPLD)、现场可编程门阵列(field-programmable gate array,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合实现。
处理模块1102包括的多个计算设备可以分布在相同的AZ中,也可以分布在不同的AZ中。处理模块1102包括的多个计算设备可以分布在相同的region中,也可以分布在不同的region中。同样,处理模块1102包括的多个计算设备可以分布在同一个VPC中,也可以分布在多个VPC中。其中,所述多个计算设备可以是服务器、ASIC、PLD、CPLD、FPGA和GAL等计算设备的任意组合。
本申请还提供一种计算设备1200。如图12所示,计算设备1200包括:总线1202、处理器1204、存储器1206和通信接口1208。处理器1204、存储器1206和通信接口1208之间通过总线1202通信。计算设备1200可以是服务器或终端设备。应理解,本申请不限定计算设备1200中的处理器、存储器的个数。
总线1202可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图12中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。总线1202可包括在计算设备1200各个部件(例如,存储器1206、处理器1204、通信接口1208)之间传送信息的通路。
处理器1204可以包括中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)、微处理器(micro processor,MP)或者数字信号处理器(digital signal processor,DSP)等处理器中的任意一种或多种。
存储器1206可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)。处理器1204还可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM),快闪存储器,机械硬盘(hard diskdrive,HDD)或固态硬盘(solid state drive,SSD)。
存储器1206中存储有可执行的程序代码,处理器1204执行该可执行的程序代码以分别实现前述获取模块1101、处理模块1102的功能,从而实现数据调度方法。也即,存储器1206上存有计算装置1200用于执行本申请提供的数据调度方法的指令。
通信接口1208使用例如但不限于网络接口卡、收发器一类的收发模块,来实现计算设备1200与其他设备或通信网络之间的通信。
本申请实施例还提供了一种计算设备集群。该计算设备集群包括至少一台计算设备。该计算设备可以是服务器,例如是中心服务器、边缘服务器,或者是本地数据中心中的本地服务器。在一些实施例中,计算设备也可以是台式机、笔记本电脑或者智能手机等终端设备。
如图13所示,所述计算设备集群包括至少一个计算设备1200。计算设备集群中的一个或多个计算设备1200中的存储器1206中可以存有相同的计算装置1100用于执行本申请提供的数据调度方法的指令。
在一些可能的实现方式中,该计算设备集群中的一个或多个计算设备1200也可以用于执行计算装置1100用于执行本申请提供的数据调度方法的部分指令。换言之,一个或多个计算设备1200的组合可以共同执行计算装置1100用于执行本申请提供的数据调度方法的指令。
需要说明的是,计算设备集群中的不同的计算设备1200中的存储器1206可以存储不同的指令,用于执行计算装置1100的部分功能。也即,不同的计算设备1200中的存储器1206存储的指令可以实现获取模块1101、处理模块1102、检测模块1103中的一个或多个模块的功能。
本申请实施例还提供了一种包含指令的计算机程序产品。所述计算机程序产品可以是包含指令的,能够运行在计算设备上或被储存在任何可用介质中的软件或程序产品。当所述计算机程序产品在至少一个计算机设备上运行时,使得至少一个计算机设备执行上述图8至图10任一实施例中的算力网络调度平台130所执行的数据调度方法,参见图8-图10任一实施例中各步骤的描述,此处不再赘述。
本申请实施例还提供了一种计算机可读存储介质。所述计算机可读存储介质可以是计算设备能够存储的任何可用介质或者是包含一个或多个可用介质的数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。该计算机可读存储介质包括指令,所述指令指示计算设备执行上述图8至图10任一实施例中的算力网络调度平台130所执行的数据调度方法,参见图8-图10任一实施例中各步骤的描述,此处不再赘述。
通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
可选的,本申请实施例中的计算机执行指令也可以称之为应用程序代码,本申请实施例对此不作具体限定。
本领域普通技术人员可以理解:本申请中涉及的第一、第二等各种数字编号仅为描述方便进行的区分,并不用来限制本申请实施例的范围,也表示先后顺序。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。“至少一个”是指一个或者多个。至少两个是指两个或者多个。“至少一个”、“任意一个”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个、种),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。“多个”是指两个或两个以上,其它量词与之类似。此外,对于单数形式“a”,“an”和“the”出现的元素(element),除非上下文另有明确规定,否则其不意味着“一个或仅一个”,而是意味着“一个或多于一个”。例如,“a device”意味着对一个或多个这样的device。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包括一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
本申请实施例中所描述的各种说明性的逻辑单元和电路可以通过通用处理器,数字信号处理器,专用集成电路(ASIC),现场可编程门阵列(FPGA)或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合的设计来实现或操作所描述的功能。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。
本申请实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件单元、或者这两者的结合。软件单元可以存储于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于ASIC中。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包括这些改动和变型在内。