一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

任务调度方法、分布式系统及存储介质与流程

2022-06-05 02:10:23 来源:中国专利 TAG:
1.本说明书一个或多个实施例涉及计算机软件
技术领域
:,尤其涉及一种任务调度方法、分布式系统及存储介质。
背景技术
::2.分布式系统是多个数据节点通过通信线路互联而构成的松散耦合的系统,每个数据节点都是一个能够独立处理某项事务的计算设备。随着技术的发展,为了适应于逐渐扩展的数据处理规模,具有多numa节点的计算设备也逐渐应用于分布式系统中。3.numa(非统一内存访问架构,nonuniformmemoryaccessarchitecture)是一种为多处理器的设备设计的内存架构,一个numa节点包含一组处理器(例如多个物理cpu),这组处理器共享同一块本地内存,内存通过内存控制器直接绑定在处理器上。多numa节点中的处理器可以访问全部的系统物理存储器,但是访问本numa节点内的存储器所需要的时间,比访问其他numa节点内的存储器所花的时间要少得多。4.目前,该类具有多numa节点的计算设备的分布式系统存在任务调度不合理导致影响性能的问题。技术实现要素:5.有鉴于此,本说明书一个或多个实施例提供一种任务调度方法、分布式系统及存储介质。6.为实现上述目的,本说明书一个或多个实施例提供技术方案如下:7.根据本说明书一个或多个实施例的第一方面,提出了一种任务调度方法,应用于分布式系统,所述分布式系统包括有多个数据节点,所述数据节点包括有多个numa节点;所述方法包括:8.根据待调度任务所需资源以及各个所述数据节点的可分配资源,确定所述可分配资源大于所述所需资源的至少一个第一目标数据节点;9.对于各个所述第一目标数据节点,根据所述待调度任务所需资源和各个所述numa节点的可分配资源,确定适合所述待调度任务运行的一个或多个目标numa节点;10.根据各个所述第一目标数据节点中的一个或多个目标numa节点的负载,从所述第一目标数据节点中选取第二目标数据节点;所述第二数据节点的所述负载低于至少一半所述第一目标数据节点的所述负载;11.将所述待调度任务部署到所述第二目标数据节点中的一个或多个目标numa节点上。12.根据本说明书一个或多个实施例的第二方面,提出了一种分布式系统,所述分布式系统包括有多个数据节点,所述数据节点包括有一个或多个numa节点;13.所述分布式系统用于执行第一方面所述的方法。14.根据本说明书一个或多个实施例的第三方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面所述方法的步骤。15.本说明书一个或多个实施例提供一种任务调度方法、分布式系统及存储介质,首先从数据节点粒度进行筛选,根据待调度任务所需资源以及各个所述数据节点的可分配资源,确定所述可分配资源大于所述所需资源的第一目标数据节点;接着从数据节点中的numa节点粒度进行筛选,对于所述第一目标数据节点,根据所述待调度任务所需资源和各个所述numa节点的可分配资源,确定适合所述待调度任务运行的一个或多个目标numa节点,进而根据所述第一目标数据节点中的一个或多个目标numa节点的负载,从所述第一目标数据节点中选取所述负载较低的第二目标数据节点;最后在筛选出第二目标数据节点之后,将所述待调度任务部署到所述第二目标数据节点中的一个或多个目标numa节点上。本实施例通过从数据节点粒度到numa节点粒度的多层筛选过程,从numa节点粒度感知的负载情况进行调度,实现了较为精细化地调度,能够在全局筛选出符合任务运行的负载较低的一个或多个目标numa节点,提高任务部署在数据节点上的性能。附图说明16.图1是一示例性实施例提供的一种分布式系统的结构示意图。17.图2是一示例性实施例提供的一种具有numa节点的数据节点的结构示意图。18.图3是一示例性实施例提供的另一种分布式系统的结构示意图。19.图4是一示例性实施例提供的一种任务调度方法的流程示意图。20.图5是一示例性实施例提供的一种部署有任务的数据节点的示意图。21.图6是一示例性实施例提供的一种k8s集群的结构示意图。具体实施方式22.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。23.需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。24.随着技术的发展,为了适应于逐渐扩展的数据处理规模,具有多numa节点的计算设备也逐渐应用于分布式系统中。请参阅图1,分布式系统是多个数据节点100通过通信线路互联而构成的松散耦合的系统,每个数据节点100都是一个能够独立处理某项事务的计算设备,所述计算设备可以是物理设备或者虚拟机。25.numa,即non-uniformmemoryaccessarchitecture,非统一内存访问架构。numa模式是一种分布式存储器访问方式,处理器(例如cpu)可以同时访问不同的存储器地址,大幅度提高并行性。在多numa模式下,一个数据节点(物理机维度的计算设备)包括多个numa节点,一个numa节点包含一组处理器(例如多个物理cpu,每个cpu可以具有多个核或线程)。以处理器为cpu为例,请参阅图2,一个数据节点100包括有多个numa节点10,图2中的n表示大于0的整数;各个numa节点10包括有多个cpu11,图2中以numa节点中有3个cpu示例,numa节点10包含的多个cpu11共享同一块本地内存12,numa节点10内的多个cpu11使用共有的内存控制器,因此numa节点10的所有内存对于本numa节点的所有cpu11都是等同的,而对于其它numa节点中的cpu都是不同的。26.所有numa节点中的处理器都可以访问全部的系统物理存储器,但是访问本numa节点内的存储器所需要的时间,比访问其他numa节点内的存储器所花的时间要少得多。numa节点可分为本地节点(localnode)、邻居节点(neighbournode)和远端节点(remotenode)三种类型:本地节点:对于某个numa节点中的所有cpu,此numa节点称为本地节点。邻居节点:与本地节点相邻的numa节点称为邻居节点。远端节点:非本地节点或邻居节点的numa节点,称为远端节点。邻居节点和远端节点,称作非本地节点(offnode)。可以理解的是,这里说的本地节点、邻居节点和远端节点是指numa维度的节点,而不是物理机维度的数据节点。处理器(cpu)访问不同类型的numa节点内存的速度是不相同的:本地节点》邻居节点》远端节点。访问本地节点的速度最快,访问远端节点的速度最慢,即访问速度与numa节点的距离有关,距离越远访问速度越慢。27.该类具有多numa节点的计算设备的分布式系统在进行任务调度时,根据从数据节点粒度感知的负载情况进行任务调度,当任务在numa节点中部署时容易产生处理器问题(如cpu切换、cpu漂移或者cpu限流等)或者跨numa节点内存访问等问题,显然,任务调度的不合理导致影响性能。28.针对于相关技术中具有多numa节点的计算设备的分布式系统存在任务调度不合理导致影响性能的问题,本说明书实施例提供了一种任务调度方法,首先从数据节点粒度进行筛选,根据待调度任务所需资源以及各个所述数据节点的可分配资源,确定所述可分配资源大于所述所需资源的第一目标数据节点;接着从数据节点中的numa节点粒度进行筛选,对于所述第一目标数据节点,根据所述待调度任务所需资源和各个所述numa节点的可分配资源,确定适合所述待调度任务运行的一个或多个目标numa节点,进而根据所述第一目标数据节点中的一个或多个目标numa节点的负载,从所述第一目标数据节点中选取所述负载较低的第二目标数据节点;最后在筛选出第二目标数据节点之后,将所述待调度任务部署到所述第二目标数据节点中的一个或多个目标numa节点上。本实施例通过从数据节点粒度到numa节点粒度的多层筛选过程,从numa节点粒度感知的负载情况进行调度,实现了较为精细化地调度,能够在全局筛选出符合任务运行的负载较低的一个或多个目标numa节点,提高任务部署在数据节点上的性能。29.在一个示例性的应用场景中,请参阅图3,图3示出了具有多numa节点的计算设备的分布式系统的结构示意图。所述分布式系统包括有多个数据节点100,每个数据节点100都是一个能够独立处理某项事务的计算设备,所述计算设备可以是物理设备或者虚拟机,所述数据节点100包括有多个numa节点10,请参阅图2,所述numa节点10包括有多个共享内存的处理器。其中,所述处理器例如可以是cpu(如图2所示),或者也可以是其他类型的处理器,比如mcu(microcontrollerunit,微控制单元)、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)或者现成可编程门阵列(field-programmablegatearray,fpga)等,可依据实际应用场景进行具体设置。30.在一些实施例中,请参阅图4,图4示出了一种任务调度方法的流程示意图,所述任务调度方法可应用于如图3所示的分布式系统中,所述分布式系统包括有多个数据节点,所述数据节点包括有多个numa节点;所述方法包括:31.在步骤s101中,根据待调度任务所需资源以及各个所述数据节点的可分配资源,确定所述可分配资源大于所述所需资源的至少一个第一目标数据节点。32.在步骤s102中,对于各个所述第一目标数据节点,根据所述待调度任务所需资源和各个所述numa节点的可分配资源,确定适合所述待调度任务运行的一个或多个目标numa节点。33.在步骤s103中,根据各个所述第一目标数据节点中的一个或多个目标numa节点的负载,从所述第一目标数据节点中选取第二目标数据节点;所述第二数据节点的所述负载低于至少一半所述第一目标数据节点的所述负载。34.在步骤s104中,将所述待调度任务部署到所述第二目标数据节点中的一个或多个目标numa节点上。35.本实施例通过从数据节点粒度到numa节点粒度的多层筛选过程,从numa节点粒度感知的负载情况进行调度,实现了较为精细化地调度,能够在全局筛选出符合待调度任务运行的负载较低的一个或多个目标numa节点,提高待调度任务部署在数据节点上的性能。36.其中,步骤s101~步骤s104可由分布式系统中的其中一个数据节点(为方便区分,以下将该数据节点称为控制节点,所述控制节点是物理机维度的计算设备)来执行,由该数据节点进行待调度任务的全局调度过程。对于所述控制节点的选取本实施例对此不做任何限制,可依据实际应用场景进行具体设置;在一个例子中,可以从分布式系统中随机选择一个数据节点作为控制节点,由该控制节点来进行待调度任务的全局调度过程;在另一个例子中,可以根据分布式系统中各个数据节点的总资源,选择总资源最大的一个作为控制节点,由该控制节点来进行待调度任务的全局调度过程;在又一个例子中,所述控制节点是由用户或者系统预先设置的。37.在一些实施例中,所述分布式系统中的各个数据节点可以定时向所述控制节点上报本数据节点的节点信息,所述节点信息为有关于所述数据节点的相关信息,比如所述节点信息包括但不限于所述数据节点的可分配资源、所述数据节点中各个numa节点的可分配资源和/或各个numa节点的负载等等。38.示例性的,比如关于所述数据节点中的各个numa节点的负载,该数据节点可以根据所述numa节点中的多个处理器的利用率的统计值确定所述numa节点的负载,所述统计值包括但不限于平均值、中位数、最大值或者最小值等等。在一个例子中,假设所述numa节点有多个cpu,所述数据节点在获取所述numa节点的多个cpu中的每个cpu的cpu利用率之后,可以根据所有的cpu利用率的平均值确定该numa节点的负载,以便上报给控制节点。39.在进行任务调度时,所述控制节点可以获取待调度任务所需资源,以及从各个数据节点上报的节点信息中获取各个所述数据节点的可分配资源,然后根据待调度任务所需资源以及各个所述数据节点的可分配资源,确定所述可分配资源大于所述所需资源的至少一个第一目标数据节点,该第一目标数据节点即为配额满足所述待调度任务的数据节点,进而可以在所述第一目标数据节点中寻找适合所述待调度任务运行的一个或多个目标numa节点。40.对于确定的各个第一目标数据节点,所述控制节点可以根据所述待调度任务所需资源和各个所述numa节点的可分配资源,确定所述第一目标数据节点中适合所述待调度任务运行的一个或多个目标numa节点。41.在一个可能的实现方式中,在确定适合所述待调度任务运行的一个或多个目标numa节点的过程中,对于各个第一目标数据节点,首先确定负载最低的numa节点的可分配资源是否满足所述待调度任务所需资源;若是,将所述负载最低的numa节点确定为目标numa节点;若否,按照numa节点的负载从小到大的顺序依次加入其它numa节点,直到加入的至少两个numa节点的可分配资源之和满足所述待调度任务所需资源或者所有numa节点均已加入,将所述加入的至少两个numa节点确定为目标numa节点。本实施例中,从负载最低的numa节点可以筛选,有利于快速找到适合待调度任务运行的一个或多个目标numa节点,并且在负载最低的numa节点的可分配资源满足所述待调度任务所需资源的情况下,待调度任务可以部署在该负载最低的numa节点上而无需部署在多个numa节点上,可以进一步减少了cpu频繁切换、跨numa节点内存访问等问题,有利于提高任务部署在数据节点上的性能。42.当然,也可以采用其他方式来确定各个所述第一目标数据节点中适合所述待调度任务运行的一个或多个目标numa节点,本说明书实施例对此不做任何限制,比如在各个第一目标数据节点中按照负载从高到低的顺序筛选适合所述待调度任务运行的一个或多个目标numa节点。43.在确定各个所述第一目标数据节点中适合所述待调度任务运行的一个或多个目标numa节点之后,控制节点可以根据各个所述第一目标数据节点中的一个或多个目标numa节点的负载,从所述第一目标数据节点中选取所述负载较低的第二目标数据节点,比如所述第二数据节点的所述负载低于至少一半所述第一目标数据节点的所述负载,从而保证筛选得到的第二目标数据节点上有足够的资源来运行待调度任务。44.在一种可能的实现方式中,在选取第二目标数据节点的过程中,对于各个所述第一目标数据节点,若所述第一目标数据节点包括一个目标numa节点,则所述控制节点可以根据该目标numa节点的负载确定评估分数。示例性的,所述评估分数等于所述目标节点的负载或者所述评估分数为所述目标节点的负载通过预设运算(比如乘以预设系数)得到。示例性的,所述目标numa节点的负载可以根据该目标numa节点中的多个处理器的利用率的统计值确定,比如所述目标numa节点的负载为该目标numa节点中所有处理器的利用率的平均值。45.若所述第一目标数据节点包括多个目标numa节点,则可以根据多个目标numa节点的负载的统计值确定评估分数。所述统计值包括但不限于平均数、中位数、最大值或者最小值等等;比如可以根据多个目标numa节点的负载的平均值确定评估分数,该评估分数等于所述平均值或者该评估分数为个目标numa节点的负载的平均值通过预设运算(比如乘以预设系数)得到。46.所述评估分数反映了一个或多个目标numa节点的负载高低情况,在确定了各个第一目标数据节点的评估分数之后,可以将评估分数比较低的第一目标数据节点确定为所述第二目标数据节点,从而保证确定的第二目标数据节点上有足够的资源来运行待调度任务。可选地,为了进一步提高待调度任务在数据节点上的性能,可以将所述评估分数最低(反映出负载最低)的第一目标数据节点确定为所述第二目标数据节点。47.在确定了第二目标数据节点之后,所述控制节点可以将所述待调度任务部署到所述第二目标数据节点中的一个或多个目标numa节点上,本实施例能够从全局角度筛选出符合待调度任务运行的一个或多个目标numa节点,提高待调度任务部署在数据节点上的性能,实现较为精细化的调度过程。48.在一个例子中,比如请参阅图5,以2个数据节点100为例进行说明,所述数据节点100包括有多个numa节点,所述numa节点包括有共享内存的多个处理器,所述numa节点上运行有一个或多个任务;其中一个数据节点为控制节点,控制节点首先从2个数据节点中确定可分配资源大于待调度任务所需资源的第一目标数据节点,假设2个数据节点的可分配资源均满足待调度任务所需资源,即2个数据节点均为第一目标数据节点。接着,确定每个数据节点中适合所述待调度任务运行的一个或多个目标numa节点,以及根据适合所述待调度任务运行的一个或多个目标numa节点的负载确定评估分数,假设数据节点1适合所述待调度任务运行的目标numa节点为numa1,对应的评估分数为a;数据节点2为numa1 numa2,对应的评估分数为b;其中,a<b,则可以将数据节点1确定为第二目标数据节点,如图5所示,控制节点可以将待调度任务部署到数据节点1的numa1上。49.在一些实施例中,各个数据节点定时上报的节点信息中包括有所述数据节点的可分配资源,一般情况下,各个数据节点的可分配资源是固定的,比如所述数据节点的可分配资源等于该数据节点的总资源。但是考虑到部署在所述数据节点的numa节点上的任务的实际负载(或者说实际所使用的资源)是动态变化的,可能该任务实际所使用的资源小于分配给该任务的资源,则可能产生资源浪费问题,也有可能该任务实际所使用的资源大于分配给该任务的资源。因此,为了提高数据节点中的资源利用率,可以进行适度超卖,即根据所述数据节点的实际负载情况(或者说实际资源使用情况)和资源分配情况来动态调节该数据节点的可分配资源,使得数据节点能够在空闲时部署更多的任务,提高数据节点的整体资源利用效率。50.则各个数据节点在确定本数据节点的可分配资源时,首先获取所述数据节点的负载,示例性的,所述数据节点的负载可以根据所述数据节点中的多个numa节点的负载的统计值确定,而所述numa节点的负载可以根据本numa节点中的多个处理器的利用率的统计值确定;换句话说,所述数据节点的负载可以根据所述数据节点中的所有处理器的利用率的统计值确定。在一个例子中,比如所述数据节点的负载为:所述数据节点中所有numa节点的负载的平均值。接着,所述数据节点可以根据本数据节点的负载确定是否进行超卖,比如若所述数据节点的负载大于预设阈值,表示部署在所述数据节点的numa节点上的任务的实际所使用资源是比较大的,为了保证已部署任务的正常运行,确定数据节点的稳定性,在这种情况下则不进行超卖或者停止超卖,所述数据节点的可分配资源为第一可分配资源,所述第一可分配资源等于所述数据节点的总资源;若所述数据节点的负载小于或等于所述预设阈值,表示部署在所述数据节点的numa节点上的任务的实际所使用资源可能是少于分配给该任务的资源,则可能产生资源浪费问题,为了提高资源利用率,在这种情况下则可以进行适度超卖,所述数据节点的可分配资源动态调整为第二可分配资源,所述第二可分配资源大于所述第一可分配资源。本实施例中可以根据数据节点的负载动态更新可分配资源信息,为负载低的数据节点增加本无法部署到该数据节点的任务,达到资源的最大化利用。51.可以理解的是,所述预设阈值可依据实际应用场景进行具体设置,本实施例对此不做任何限制,比如所述预设阈值大于50%,比如为70%或者80%等等;又比如所述预设阈值可以根据所述数据节点中已分配资源来确定,比如在所述数据节点的负载是根据numa节点的负载(也即处理器的利用率)来确定的情况下,所述预设阈值为已分配资源与总资源的比值。52.任务调度的期望目标通常是:期望给任务分配的资源和该任务使用的资源接近,假设给任务分配的资源为usage,该任务使用的资源为request,则有而在未进行超卖之前,数据节点中的可分配资源一般等于总资源,设数据节点的总资源为capacity,可分配资源为allocatable,则有结合公式(1)和公式(2)可以得到53.数据节点在进行超卖时,即确定第二可分配资源的过程中,根据公式(3)可以确定所述第二可分配资源的大小与所述数据节点的负载成正相关关系,即是说,在所述数据节点的负载比较低时,即部署在所述数据节点的numa节点中的任务所使用资源较少时,第二可分配资源增大,即第二可分配资源可以设置得更大一些,从而可以在数据节点中部署更多的任务;在所述数据节点的负载比较高时,即部署在所述数据节点的numa节点中的任务所使用资源较多时,第二可分配资源减小,即第二可分配资源可以设置得更小一些,从而避免在数据节点中部署其他任务影响已部署任务的正常运行。54.在一些可能的实施方式中,所述第二可分配资源可以为以下三者中的最小者:①预设超卖比与所述数据节点的总资源的乘积,所述预设超卖比大于1;所述预设超卖比可根据实际应用场景进行具体设置,本实施例对此不做任何限制。②所述数据节点的总资源和总已分配资源的乘积与总使用资源的比值;该比值考虑在数据节点中运行的所有任务,该比值基于上述公式(3)换算得到。③所述数据节点的总资源和属于指定优先级的任务的已分配资源的乘积,与所述属于指定优先级的任务的使用资源的比值;该比值考虑在数据节点中运行的属于指定优先级的任务,该比值基于上述公式(3)换算得到;示例性的,在数据节点中运行有属于第一优先级的任务和属于第二优先级的任务,所述第二优先级的任务的时延要求高于属于第一优先级的任务的时延要求,即属于第二优先级的任务为时延敏感型任务,要求尽可能快的响应,实时性要求高,比如网页加载任务、直播任务等等;属于第一优先级的任务为尽力而为类型任务,比如对于实时性要求不高的数据下载任务等;在一个例子中,为了满足属于第二优先级的任务的实时性要求,需保证属于第二优先级的任务的正常运行,则所述指定优先级可以是所述第二优先级。55.在一个例子中,设第二可分配资源为allocatable2,预设超卖比为w,数据节点的总资源为capacity,总已分配资源为total.usage,总使用资源为total.request,属于指定优先级的任务的已分配资源为ls.usage,所述属于指定优先级的任务的使用资源为ls.request,则本实施例中第二可分配资源从上述三者中取最小值,能够避免第二可分配资源过大导致超额分配资源过多,在突发流量(即部署在数据节点上的任务需要使用更多资源)的时候无法提供充足资源。56.当然,也可以根据实际应用场景选择上述三者中的任意一者作为所述数据节点的第二可分配资源,本实施例对此不足任何限制。57.在一些可能的实施方式中,还可以根据实际应用场景预先设置一可分配资源,该预设的可分配资源小于所述数据节点的总资源且大于所述数据节点的总资源的一半,比如该预设的可分配资源为所述数据节点总资源的80%,数据节点在确定所述第二可分配资源时,若所述三者中的最小者小于预设的可分配资源,则所述第二可分配资源确定为所述预设的可分配资源,本实施例设置一预设值,有效防止第二可分配资源被设置得过小导致所述数据节点有资源但无法分配的情况出现。58.举例来说,比如一个数据节点中有100个cpu,数据节点中部署了1个任务,分配了1个cpu,但是实际上使用了10个cpu,则基于上述计算方式可以得到allocatable2=10(100*1/10=10),但实际上还有90个cpu可以用,这种情况下第二可分配资源被设置得过小。因此可以通过一预设的可分配资源来防止这种情况的发生,比如设置该预设的可分配资源为所述数据节点总资源的80%,也即allocatable2=80个,更接近于真实情况。本实施例中通过设置第二可分配资源取上述三者中的最小者,有利于避免第二可分配资源被设置得过大导致超额分配资源,在上述三者中的最小者仍小于预设的可分配资源时,将第二可分配资源确定为所述预设的可分配资源,有利于避免第二可分配资源被设置得过小导致所述数据节点有资源但无法分配,保证第二可分配资源在合理有效的范围内。59.对于各个数据节点,在确定出新的可分配资源之后,所述数据节点可以在定时上报的节点信息中更新其中的可分配资源信息,达到超卖效果。在一个例子中,比如请参阅5,对于数据节点1的numa1来说,其已部署了3个任务已分配完所有资源,但3个任务的实际使用资源小于已分配资源,则通过上述的超卖策略,动态调整所述数据节点的可分配资源,待调度任务仍然可以部署到数据节点1的numa1上,实现为负载低的数据节点增加本无法部署到该数据节点的任务,达到资源的最大化利用,实现数据节点的超卖效果。60.需要说明的是,本说明书实施例中进行超卖的是数据节点的可分配资源,而数据节点中的numa节点的可分配资源不进行超卖。61.在一些实施例中,在各个数据节点中,在任务运行过程中数据节点可以出现超卖过度,导致有局部的numa热点,即部署在numa上的任务实际使用的资源大于numa节点的总资源。为了消除热点,保证实时性要求较高的任务的顺利运行,所述数据节点可以检测到存在numa节点的负载超过第一预设阈值的情况下,冻结在所述numa节点中运行的属于第一优先级的任务;其中,所述numa节点运行有属于第一优先级的任务和属于第二优先级的任务,所述属于第二优先级的任务的时延要求高于属于第一优先级的任务的时延要求,属于第二优先级的任务为时延敏感型任务,要求尽可能快的响应,实时性要求高,比如网页加载任务、直播任务等等;属于第一优先级的任务为尽力而为类型任务,比如对于实时性要求不高的数据下载任务等;本实施例通过冻结对于实时性要求较低的任务以释放资源,保证了实时性较高的任务的顺利执行。62.示例性的,在冻结属于第一优先级的任务的过程中,所述数据节点确定在所述numa节点上运行的所有属于第一优先级的任务额的使用资源,然后按照使用资源从高到低的顺序依次冻结所述属于第一优先级的任务,直到所述numa节点的负载不超过所述第一预设阈值。本实施例中按照使用资源从高到低的顺序进行冻结,有利于快速释放资源,进一步保证实时性较高的任务的顺利执行。当然,也可以采用其他顺序来冻结所述属于第一优先级的任务,本实施例对此不做任何限制。63.在一个例子中,比如请参阅图5,数据节点2中的numa1节点负载较高,比如超过第一预设值,则数据节点2可以将属于第一优先级的任务(任务1和任务3)冻结掉,图2中灰色表示冻结状态,保证属于第二优先级的任务的顺利执行。64.在一些实施例中,若冻结所有属于第一优先级的任务之后,所述numa节点的负载仍超过所述第一预设阈值,为了保证实时性要求较高的任务的顺利运行,所述数据节点可以将所述numa节点中属于第二优先级的任务迁移到其他numa节点;所述其他numa节点的负载低于本numa节点的负载。本实施例采用属于第一优先级的任务冻结和属于第二优先级的任务迁移相结合的策略,有效解决了可能存在高负载时的numa热点问题,保证了对实时性要求高的任务(属于第二优先级的任务)的顺利运行。65.示例性的,在迁移属于第二优先级的任务的过程中,所述数据节点可以确定在所述numa节点上运行的所有属于第二优先级的任务的使用资源,然后按照使用资源从低到高的顺序依次将所述属于第二优先级的任务迁移到其他numa节点,直到所述numa节点的负载不超过所述第一预设阈值或者所述其他numa节点的负载高于本numa节点的负载。本实施例中考虑到使用资源(比如cpu或者内存占用)越大,在迁移过程中产生的影响也比较大,为了降低这种影响,本说明书实现使用资源从低到高的顺序来进行属于第二优先级的任务的迁移过程,降低迁移过程中产生的波动。当然,也可以采用其他顺序来迁移所述属于第二优先级的任务,本实施例对此不做任何限制。66.在一些实施例中,若所述数据节点的numa节点的负载低于第二预设阈值,则所述数据节点可以唤醒已冻结的所述属于第一优先级的任务;其中,所述第二预设阈值小于所述第一预设阈值,以充分利用数据节点的资源。在一个例子中,比如所述第一预设阈值为数据节点整体利用率80%,第二预设阈值为数据节点整体利用率60%。67.在一示例性的应用场景中,以所述分布式系统为k8s集群为例进行说明,kubernetes,简称k8s,是用8代替8个字符“ubernete”而成的缩写,是一个分布式容器集群管理平台,其为容器化应用提供了部署运行、资源调度、服务发现和动态伸缩等一系列完整功能。kubernetes可以采用集群的形式进行部署,kubernetes集群中的数据节点可以包括但不限于主节点(master)和多个工作节点(node),这些工作节点可以是物理机(如物理服务器)或者虚拟机。应用可以部署在工作节点上,且可以通过配置选择应用部署在某些特定的工作节点上。68.在kubernetes中,pod是kubernetes集群的基本调度单元,包含一组容器和数据卷,pod逻辑上表示某种应用的一个实例。比如一个web站点应用由前端、后端及数据库构建而成,这三个组件将运行在各自的容器中,那么可以创建包含三个容器的pod。69.示例性的,请参阅图6,k8s集群中的数据节点包括主节点(master)和多个工作节点(node),所述工作节点包括有多个numa节点10,每个numa节点10包括共享内存的多个处理器,所述numa节点可以运行一个或多个任务。为了实现本说明书提及的任务调度过程,可以在主节点中部署任务调度模块20,该任务调度模块可由主节点中的处理器来执行;在每个工作节点部署评估模块21,超卖模块22和调整模块23,该评估模块,超卖模块和调整模块可由工作节点中的处理器来执行。70.其中,所述评估模块21被配置为:采集numa节点中的各个处理器的利用率,并根据所述numa节点中的所有处理器的利用率的平均值确定该numa节点的负载信息,比如设numa节点的负载信息为numascore,处理器的利用率为cpuusage,numa节点有i个处理器,i为大于0的整数,则有numascore:=average(cpu1usage、cpu2usage、......、cpuiusage)。71.所述超卖模块22被配置为:根据工作节点的负载情况动态确定所述工作节点的可分配资源,比如若所述工作节点的负载大于预设阈值,所述工作节点的可分配资源为第一可分配资源,所述第一可分配资源等于所述工作节点的总资源;若所述工作节点的负载小于或等于所述预设阈值,所述工作节点的可分配资源为第二可分配资源,所述第二可分配资源大于所述第一可分配资源。72.示例性的,所述第二可分配资源为以下三者中的最小者:①预设超卖比与所述工作节点的总资源的乘积,所述预设超卖比大于1;②所述工作节点的总资源和总已分配资源的乘积与总使用资源的比值;③所述工作节点的总资源和属于指定优先级的任务的已分配资源的乘积,与所述属于指定优先级的任务的使用资源的比值。73.示例性的,限定一预设的可分配资源,所述预设的可分配资源小于所述工作节点的总资源且大于所述工作节点的总资源的一半;若所述三者中的最小者小于预设的可分配资源,则所述第二可分配资源为所述预设的可分配资源。本实施例中通过设置第二可分配资源取上述三者中的最小者,有利于避免第二可分配资源被设置得过大导致超额分配资源,在上述三者中的最小者仍小于预设的可分配资源时,将第二可分配资源确定为所述预设的可分配资源,有利于避免第二可分配资源被设置得过小导致所述工作节点有资源但无法分配,保证第二可分配资源在合理有效的范围内。74.所述超卖模块22能够在工作节点粒度对整体的资源进行动态的超卖,在负载较低时能够在工作节点上更多的部署任务,缓解了整体资源利用率不足的问题,有效提高工作节点的资源使用效率。75.在确定出工作节点中各个numa节点的负载和新的可分配资源之后,所述工作节点可以上报包含numa负载信息、numa节点的可分配资源、工作节点的可分配资源等的节点信息;其中,numa节点的可分配资源一般固定不变,工作节点的可分配资源根据工作节点的负载情况动态变化。由于工作节点中各个numa节点的负载和新的可分配资源是动态变化的,工作节点可以定时上报node信息。76.所述任务调度模块20被配置为:接收各个工作节点上报的node信息;在进行调度决策时,首先根据待调度任务所需资源以及各个所述工作节点的可分配资源,确定所述可分配资源大于所述所需资源的至少一个第一目标工作节点;对于各个所述第一目标工作节点,根据负载从小到大依次罗列每个numa节点,若第一个numa节点的可分配资源满足所述待调度任务所需资源,则直接返回该numa节点的numascore作为评估分数。若不满足,则在结果集中加入第二个numa节点,确定两个numa节点的可分配资源之和满足所述待调度任务所需资源,若满足,则返回两个numascore的均值作为评估分数,若不满足,则在结果集中加入第三个numa节点,依次类推,直到加入的所有numa节点的可分配资源之和满足所述待调度任务所需资源或者所有numa节点均已加入结果集。在确定各个所述第一目标工作节点的评估分数之后,将评估分数最小的第一目标工作节点确定为所述第二目标工作节点,可以将待调度任务部署到所述第二目标工作节点中的一个或多个目标numa节点上。77.所述任务调度模块20能够在集群的众多工作节点和numa中选择出最为合适的numa节点进行调度,解决了大型计算机器上的精细化调度问题,减少了频繁cpu切换、cpu限流、跨numa内存访问等,提高了任务处理性能。78.所述调整模块23被配置为执行以下过程:79.(1)在所述工作节点的numa节点的负载超过第一预设阈值,则触发属于第一优先级的任务冻结流程,罗列部署在该numa上的所有的属于第一优先级的任务,根据所使用资源从高到低进行排序,逐个通过cgroups中的freeze模块将属于第一优先级任务的freezer.state值置为frozen,释放该任务资源。每冻结一个任务后检查该numa节点负载是否降低到所述第一预设阈值以下。若未能降低到所述第一预设阈值以下,则继续执行该步骤,直到该numa节点的负载降低到阈值以下或者属于第一优先级的任务可冻结。80.(2)若冻结所有属于第一优先级的任务之后,所述numa节点的负载仍超过所述第一预设阈值,罗列单独部署在该numa上的所有的属于第二优先级的任务,根据所使用资源从高到低进行排序,依次从低到高修改属于第二优先级的的cpuset,将属于第二优先级的从负载较高的numa节点上迁移到负载较低的numa节点上,直到该numa负载降低到所述第一预设阈值之下或者各个numa节点负载已经较为均衡。81.(3)若所述工作节点的numa节点的负载低于第二预设阈值,所述第二预设阈值小于所述第一预设阈值,逐个通过cgroups中的freeze模块将属于第一优先级的任务的freezer.state值置为thawed,将属于第一优先级的任务逐个唤醒,以充分利用整体的资源利用率。82.所述调整模块23能够在numa出现热点时利用cgroup的特性对属于第一优先级的任务进行冻结操作,在极端情况下能够将属于第二优先级的任务从负载较高的numa上迁移到负载较低的numa上,从而保证属于第二优先级的任务的顺利运行。83.上述列举的模块仅仅是示意性的,其中作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。84.相应的,请参阅图3,本说明实施例还提供了一种分布式系统,所述分布式系统包括有多个数据节点,所述数据节点包括有一个或多个numa节点;85.所述数据节点用于执行上述任意一项所述的方法。86.在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由装置的处理器执行以完成上述方法。例如,非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。87.一种非临时性计算机可读存储介质,当存储介质中的指令由终端的处理器执行时,使得终端能够执行上述方法。88.上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。89.在一个典型的配置中,计算机包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。90.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。91.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。92.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。93.上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。94.在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。95.应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。96.以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献