CN116483538A - 一种一致性低延迟的数据中心任务调度方法 - Google Patents

一种一致性低延迟的数据中心任务调度方法 Download PDF

Info

Publication number
CN116483538A
CN116483538A CN202310452110.0A CN202310452110A CN116483538A CN 116483538 A CN116483538 A CN 116483538A CN 202310452110 A CN202310452110 A CN 202310452110A CN 116483538 A CN116483538 A CN 116483538A
Authority
CN
China
Prior art keywords
core
group
tasks
server
task
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310452110.0A
Other languages
English (en)
Inventor
张彤
余秋雨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing University of Aeronautics and Astronautics
Original Assignee
Nanjing University of Aeronautics and Astronautics
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanjing University of Aeronautics and Astronautics filed Critical Nanjing University of Aeronautics and Astronautics
Priority to CN202310452110.0A priority Critical patent/CN116483538A/zh
Publication of CN116483538A publication Critical patent/CN116483538A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种一致性低延迟的数据中心任务调度方法,属于数据中心任务调度技术领域。该方法考虑了请求处理任务在各台服务器上处理的一致性问题,在作业级层面上降低延迟,并结合拥塞检测和核心动态分配算法,完成数据中心任务调度。本发明包括设计一种新的数据中心请求处理任务调度算法,主要包括以下步骤:首先进行任务的集群调度,将任务按照所属作业到达的顺序排序标号,然后由集群调度器按负载均衡原则将任务分派到主机上运行,进而完成任务的主机调度,在任务到达主机后,将任务按照处理时长进行分组,再根据核心动态分配算法以组为单位分配核心,组内任务根据集群调度所赋标号顺序执行,完成调度。

Description

一种一致性低延迟的数据中心任务调度方法
技术领域
本发明属于数据中心任务调度技术领域,具体涉及一种一致性低延迟的数据中心任务调度方法。
背景技术
由于大型数据中心的灵活性和成本优势,越来越多的作业在数据中心中执行。数据中心中的许多作业具有分散-聚合的模式,单个作业需要来自数千个软件服务的响应。特别是随着越来越多的云应用程序从批处理作业转向具有严格延迟要求的服务,为了向用户提供快速响应,需要支持高任务率和微秒级尾部延迟。为了进一步改善数据中心作业的运行,必须专注于有效利用每个大型基础设施中可用的数万台服务器,在快速有效地将任务调度到节点上的同时实现数据中心的高吞吐量和低延迟。
数据中心网络和内存系统越来越具有微秒延迟。在微秒级,任务处理时间的分布可能特别极端,例如,Redis可以在2微秒内处理GET/PUT任务,但更复杂的SCAN和EVAL任务可能需要数百微秒或毫秒才能完成。因此,单个长时间运行的任务可以阻止数百或数千个较短的任务。
为了限制尾延迟,特别是对于短任务,现代数据中心服务器以低利用率运行以保持队列长度,并减少长任务阻塞短任务的可能性。但是这种方法浪费了CPU周期,并且不能保证微秒级数据中心系统始终满足短任务的服务等级目标。最近的内核绕过调度程序通过共享队列和工作窃取提高了利用率,但这些技术仅适用于单一和轻尾的工作负载。对于响应时间分布广泛的工作负载,现有方法利用中断来共享处理器,但是中断的成本太高而无法频繁执行。上述的方法都无法缓解数据中心工作负载的突发到达造成的低尾延迟和高CPU效率之间的紧张关系。工作负载不仅在几分钟到几小时的长时间范围内变化,甚至在短至几微秒的时间范围内变化。
为了解决上述问题,本发明提出了在非常精细时间尺度上重新分配内核的方法,它在任务处理时长的时间尺度上重新分配内核,并且设计了拥塞检测算法确定应用程序何时需要额外的内核,目标是通过为每个分组授予尽可能少的内核来优化CPU效率,同时避免拥塞降低尾延迟。本发明还考虑到由于任务速率高、网络传输时延不确定性等因素导致同一作业的任务到达服务器与执行的顺序不一致,从而造成用户作业完成滞后的问题。本发明将通过集群调度与主机调度联合解决一致性问题。
发明内容
本发明旨在提供一种一致性低延迟的数据中心任务调度方法,在快速有效地将任务调度到节点的同时实现集群的高吞吐量和低延迟。
本发明提供的技术方案如下。
一种一致性低延迟的数据中心任务调度方法,步骤如下:
(1)制定作业的集群调度策略,当作业到达数据中心后,按照作业级先来先服务的规则,将作业按照到达的时间从小到大排序并编号,并将同一个作业中包含的所有任务都标识该序号作为该任务的作业级标识;作业标序后,由集群调度器按负载均衡的原则将任务分派到服务器上运行;
(2)建立主机调度机制,包括任务分类和动态分配核心,对于每个组设置一个队列,每个组中所有任务按照作业级标识从小到大的顺序出队,再由主机调度器将任务分派到该组获得的核心上处理;
所述的任务分类是将任务按照处理时长分类,主机调度器以组为单位进行主机核心分配;
所述的动态分配核心是主机调度器为每组任务初始分配一个核心,在每组任务处理时长的时间粒度上为每组动态分配核心。
进一步的,步骤(1)所述的集群调度策略具体如下:
根据服务器节点的性能参数,首先将数据中心集群中的服务器按照任务的处理特定需求划分服务器组,再将剩下的泛用节点按照服务器的性能参数划分服务器组;
对于服务器的性能计算,采用各服务器节点CPU(C)、内存(M)、磁盘I/O(I)和网络带宽(N)作为服务器的性能评价参数;
当集群中存在n个节点,对于每个节点Si∈{S1,S2,S3,…,Sn}(n>1),服务器综合性能表示为C(Si)∈{C(S1),C(S2),C(S3),…,C(Sn)}(n>1),根据各项性能计算集群中各服务器的综合性能为:
C(Si)=σc×Cc(Si)+σM×CM(Si)+σI×CI(Si)+σN×CN(Si)
其中σi为各个服务器性能的权值参数,可根据集群中的服务器性能自行设定,其和值为1;
其中每个服务器节点各性能权值为:
其中j∈{C,M,I,N}为各性能集合中的一项,Ej(Si)为服务器集群中节点Si的一项初始性能数值;
根据集群中每个服务器的初始性能将服务器进行排序,之后根据节点数量尽可能地进行均匀分组,使得每组服务器节点性能总和接近。
进一步的,步骤(1)中根据各个服务器的实时负载情况对任务进行动态负载均衡分配如下:
(1.1)节点实时负载信息收集
采用服务器节点负载信息收集模块来进行各节点实时负载信息的收集,收集的信息包括某一时刻节点的CPU(C)、内存(M)、磁盘I/O(I)和网络带宽(N)性能参数,以及各性能的利用率;
根据负载变化率ΔD来判断某节点Si在时间t1至t2时间段内的负载信息是否上传,其计算式如下所示:
Di=σc×Ec(Si)+σM×EM(Si)+σI×EI(Si)+σN×EN(Si)
其中σi为各个服务器性能的权值参数,可根据集群中的服务器性能自行设定,其和值为1。Ej(Si)为服务器集群中某一时刻节点Si的一项性能数值,其中j∈{C,M,I,N};
在集群的实际运行环境中设置一个负载信息上报阈值Δd,当服务器计算的负载信息变化率小于该阈值时,那么本次的负载信息就不上报,并且只在该服务器收集模块更新本次数据,用于下一次的本地负载变化率计算;
(1.2)为任务选择服务组
对于特定需求任务类型将任务分配到对应的特定服务器组;对于非特定需求的任务,再将任务分配到平均性能利用率低的服务器组;
根据节点的性能利用率L计算每个服务器组的平均性能利用率计算公式如下:
L(Si)=σc×Wc(Si)+σM×WM(Si)+σI×WI(Si)+σN×WN(Si)
其中Wi代表该节点某项性能的利用率,分别代表工作状态下的CPU利用率、内存利用率、磁盘I/O利用率和网络带宽利用率,得到每个服务器组的平均利用率后,将任务分配到平均性能利用率低的服务器组,该服务器各项性能资源充足;
(1.3)选择分组中的节点
对于组内服务器采用动态加权轮询算法,根据服务器组中的各节点分配概率设置组内服务器的分配权重。
更进一步的,步骤(1.3)中,基于服务器节点性能参数,在服务器组中某节点Si的分配概率Pi的计算公式如下:
将服务器组中的各节点分配概率改进为基于分配概率的分配权重,如下所示,Q(Si)为对应服务器节点Si的分配权重。
其中B为使得B*P>1的权值常数。
进一步的,所述方法的步骤(2)所述的动态分配核心是主机调度器初始为每组任务分配一个核心,并且在调度过程中保证每组任务至少有一个核心;之后在每组任务处理时长的时间粒度上使用拥塞检测算法依次判断每组组内的核心是否有处于拥塞状态的,如果有核心处于拥塞状态则使用核心选择算法来选择一个核心分配给该组;最后主机调度器使用空闲核心检测算法判断是否需要让出组内核心。
(a)对于动态分配核心中的拥塞检测算法具体如下:
2.1.1)对于微秒级的任务组,主机调度器以5μs的时间间隔在组内的每个核心上调用拥塞检测算法;
所述拥塞检测算法根据两个负载源确定核心是否过载:排队的任务和排队的入口数据包;如果在检测算法的两次连续运行中发现任何任务或数据包存在于队列中,则表明数据包或任务排队至少5μs,则认为该核心是拥塞的,并且授予该分组一个额外的内核。
2.1.2)对于毫秒级的任务组,主机调度器以50ms的时间间隔在组内的每个核心上调用拥塞检测算法;
所述拥塞检测算法根据两个负载源确定核心是否过载:排队的任务和排队的入口数据包;如果在检测算法的两次连续运行中发现任何任务存在于队列中,则表明数据包或任务排队至少50ms,则认为该核心是拥塞的,并且授予该分组一个额外的内核。
2.1.3)对于秒级及以上的任务组,主机调度器以5s的时间间隔在组内的每个核心上调用拥塞检测算法;
所述的拥塞检测算法根据CPU利用率确定核心是否过载,当CPU的利用率超过一定的阈值后,证明该核心过载,需要额外分配一个核心。
(b)对于动态分配核心中的核心选择算法具体如下:
2.2.1)主机调度器会首先依次遍历分配给该任务组中所有核心对应的超线程的另一个逻辑核心是否空闲,如果遍历到某一逻辑内核是空闲的,主机调度器会将该空闲核心分配该任务组并结束算法,如果没有空闲的,继续往下执行;
2.2.2)主机调度器会继续遍历该任务组一段时间前让出的核心,如果遍历到某一内核是空闲的,主机调度器会将该空闲核心分配该任务组并结束算法。如果没有空闲的,继续往下执行;
2.2.3)主机调度器就会最后检测系统中现有的空闲核心,随机挑选一个空闲核心分配给该任务组并结束算法;如果没有空闲的,继续往下执行;
最后,如果系统中没有空闲核心,从服务时间比该组长且所拥有的核心数大于1的任务组中随机抢占一个核心分配给该任务组。
(c)对于动态分配核心中的空闲核心检测算法具体如下:
对于分组的某一核心如果其本地队列为空且无法从组内其他的核心窃取到任务,则认为该核心处于空闲状态,会主动通知调度器其处于空闲状态;调度器会时刻接收核心返回的状态信息,接收到核心的空闲状态后,如果该组的核心数多于两个,就会将该核心调出该组并将其设为空闲状态,可供其他分组调用。
更进一步的,步骤(2)对于组内任务调度具体是:
对于每个分组设置一个队列,每个分组中所有任务按照作业序号从小到大顺序出队,再由主机调度器将任务分派到该组核心上处理执行;
对于每个分组组内分配的核心,核心之间通过工作窃取来实现组内负载均衡;在工作窃取下,每个核心都维护一个双端队;
所述核心是从其双端队列的头部执行任务,当没有任务可处理时,它们会从另一个核心的双端队列的尾部窃取任务;
核心首先检查本地运行队列,如果本地运行队列是空的并且没有传入的数据包要处理,则会执行工作窃取。
所述工作窃取具体内容如下:
核心先随机选择组内的一个核心,如果该核心有任务可以窃取,则将一半任务从该核心队列的尾部转移到自己的任务队列;如果核心没有可用的工作,则空闲核心会继续随机选择一个新的核心并重复此过程,直到找到工作或检测到全局终止;
为了确定窃取的完成时间,某一空闲核心必须主动检测所有组内核心都处于空闲状态,并且没有更多的任务可用时才终止窃取;如果核心主动检测完所有组内核心后仍然没有窃取到任务,则认为该核心处于空闲状态,并会主动通知调度器其处于空闲状态。
有益效果:本发明创新性地考虑到由于任务速率高、网络传输时延不确定性等因素导致同一作业的任务到达服务器与执行的顺序不一致,从而造成用户作业完成滞后的问题,仅仅考虑单个任务类型的延迟是不够的,本发明还将在更细粒度的单个用户作业的层面降低集群的延迟。与现有技术相比,实质性特新和显著进步如下:
(1)本发明提出的方法创新性地考虑到任务调度中请求处理的一致性问题,并在作业级层面上降低延迟。
(2)本发明提出的方法将任务按照处理时长分组,并以此为单位分配主机核心,可以减少短任务被长任务阻塞的可能性,同时结合核心动态分配算法,能够显著降低延迟以及提高数据中心的资源利用率。
(3)本发明提出的方法能够应对多种类型工作负载的混合场景,可以很好地处理突发负载情况。
附图说明
图1为本发明的两级调度的示意图;
图2为本发明的数据中心任务调度方法的框架图;
图3为本发明的数据中心任务调度方法的流程图。
具体实施方式
为详细的说明本发明所提供的技术方案,下面结合附图及具体实施例对本发明做进一步的介绍。
结合图1,本发明提供的是一种一致性低延迟的数据中心任务调度方法,其实施包括以下步骤:
步骤S1、完成作业的集群调度:
现在的数据中心通常包含成千上万台服务器,随着网络规模逐渐扩大,访问量呈指数形式增长。快速增长的访问量如果不能及时地被服务器处理,将会严重影响用户的上网体验。甚至还会导致服务器出现一系列的过载,拥堵,宕机,崩溃等问题。因此,如何将任务请求合理地分配到每台服务器并且能够满足最大的服务质量需求是服务器集群系统需要考虑的重要问题之一,而负载均衡则是解决服务器集群系统问题的关键,它能够有效地优化资源使用,最大限度地发挥集群的性能。在本方法中将按照负载均衡原则将任务调度到集群的主机上处理。
步骤S101、为作业设置唯一标识
当作业到来集群后,按照先来先服务准则,将作业按照到来的顺序从小到大排序,并将一个作业里面包含的所有任务都标同一个序号作为该作业任务的唯一标识。
步骤S102、集群调度器按负载均衡的原则分类调度任务
对于服务器集群的负载均衡来说,如何准确评估服务器性能是问题的关键所在,不同的指标对于负载均衡调度选择的判断有着相当大的影响。本发明根据服务器节点的性能参数,使用一种动态负载均衡算法将任务按编号进行集群任务的调度,其算法流程描述如下:
数据中心中不同任务类型对服务器有不同的处理需求,本发明首先将数据中心集群中的服务器按照任务的特定处理需求划分服务器组,再将剩下的泛用节点按照服务器的性能参数划分服务器组。
例如,如对于拥有N个服务器节点的服务器集群,在先根据任务特定处理需求将M个节点分为p组后,再对剩余的N-M个节点进行初始性能计算,并根据其数值尽可能的均分为q组,使得每组服务器节点性能数值总和接近,且每组包含的数值范围更广。该分组逻辑是为了初步地根据任务类型不同将对应任务分配至能够进行针对性处理的小型服务器组中,以满足特定任务的处理需求,加快分配速度及处理效率。而对于非特定需求的任务,则将其分配至涵盖更广范围性能的服务器组中,使得负载分配更均衡。
对于服务器的初始性能计算,本发明中采用的是各服务器节点CPU(C)、内存(M)、磁盘I/O(I)和网络带宽(N)作为服务器的性能评价参数。当集群中存在n个节点,对于每个节点Si∈{S1,S2,S3,…,Sn}(n>1),服务器综合性能:C(Si)∈{C(S1),C(S2),C(S3),…,C(Sn)}(n>1),根据各项性能可计算集群中各服务器的综合性能为:
C(Si)=σc×Cc(Si)+σM×CM(Si)+σI×CI(Si)+σN×CN(Si)
其中σi为各个服务器性能的权值参数,可根据集群中的服务器性能自行设定,其和值为1。其中每个服务器节点各性能权值为:
其中j∈{C,M,I,N}为各性能集合中的一项,Ej(Si)为服务器集群中节点Si的一项初始性能数值。
根据集群中每个服务器的初始性能将服务器进行排序,之后根据节点数量尽可能地进行均匀分组,使得每组服务器节点性能总和接近。
其次,根据各个服务器的实时负载情况对任务进行动态负载均衡分配算法。具体算法如下:
首先,该方法采用服务器节点负载信息收集模块来进行各节点实时负载信息的收集,收集的信息包括某一时刻节点的CPU(C)、内存(M)、磁盘I/O(I)和网络带宽(N)性能参数,以及各性能的利用率。根据负载变化率ΔD来判断某节点Si在时间t1至t2时间段内的负载信息是否上传,其计算式如下所示:
Di=σc×Ec(Si)+σM×EM(Si)+σI×EI(Si)+σN×EN(Si)
其中σi为各个服务器性能的权值参数,可根据集群中的服务器性能自行设定,其和值为1。Ej(Si)为服务器集群中某一时刻节点Si的一项性能数值。
在集群的实际运行环境中设置一个负载信息上报阈值Δd,当服务器计算的负载信息变化率小于该阈值时,说明这段时间内该服务器的负载信息变化过小,那么本次的负载信息就不上报,并且只在该服务器收集模块更新本次数据,用于下一次的本地负载变化率计算。而调度器在T时间段内未收到对应节点的负载信息上报,则沿用之前的负载信息,以此来节省节点负载信息的频繁上报所导致的网络资源消耗。
其次,为任务选择服务组。对于特定需求任务类型将任务分配到对应的特定服务器组。对于非特定需求的任务,再将任务分配到平均性能利用率低的服务器组。
服务器组平均性能利用率计算如下:
收集到对应服务器组的各服务器的实时负载信息后,将根据节点的性能利用率L计算每个服务器组的平均性能利用率计算公式如下:
L(Si)=σc×Wc(Si)+σM×WM(Si)+σI×WI(Si)+σN×WN(Si)
其中Wi代表该节点某项性能的利用率,分别代表工作状态下的CPU利用率、内存利用率、磁盘I/O利用率和网络带宽利用率。得到每个服务器组的平均利用率后,将任务分配到平均性能利用率低的服务器组,该服务器各项性能资源充足。
最后,选择分组中的节点。对于组内服务器采用动态加权轮询算法。该方法根据服务器组中的各节点分配概率设置组内服务器的分配权重。
基于服务器节点性能参数,在服务器组中某节点Si的分配概率Pi的计算公式如下:
将服务器组中的各节点分配概率改进为基于分配概率的分配权重,如下所示,Q(Si)为对应服务器节点Si的分配权重。
其中B为使得B*P>1的权值常数,本方法引入节点当前使用率与组内所有节点使用率平均值的比值来判断某服务器负载情况,当比值大于1时,代表当前节点的使用率已超过平均值,需要适当减小分配给该节点的概率,提高那些未达到平均使用率的节点分配概率,以达到更好的负载均衡效果。该负载均衡算法结合了当前节点的性能参数、实时性能使用率和分配概率的优势,使请求能够尽可能地分配至当前综合负载情况最良好且承受负载能力最佳的服务器,在整体上达成更优秀的负载均衡效果。
步骤S202、完成作业的主机调度。
造成任务有尾部延迟的因素很多,例如网络环境,调度开销,任务堵塞等等,在本发明中主要关注造成尾部延迟的两个原因:核心堵塞以及短任务被长任务阻塞造成的延迟。
在核心堵塞方面,现有的方法在维持微秒级尾延迟的情况下,实现高CPU效率方面做的很差。Linux只能在CPU利用率保持较低时支持微秒级延迟,从而留下足够的空闲内核来快速处理传入的请求,或者通过绕过内核调度程序,例如绕过内核协议栈能够以更高的吞吐量支持微秒级延迟。但是,这些方法仍然会浪费大量的CPU周期,它们不是依靠中断,而是依靠自旋轮询网络接口卡来检测数据包的到达,因此即使没有要处理的数据包,CPU也始终处于使用状态。此外,这些方法还缺乏根据负载动态分配内核的机制,因此必须为它们提供足够的内核来处理峰值负载,就会造成CPU资源的浪费。当今数据中心工作负载的突发到达模式加剧了低尾延迟和高CPU利用率之间的紧张关系,提供的负载不仅在几分钟到几小时的长时间范围内变化,甚至在短至几微秒的时间范围内变化。这种可变性要求服务器始终让额外的核心空闲,以便它们可以在突发期间保持低尾延迟。
短任务被长任务堵塞造成的延迟很常见,对于服务时间分布广泛的工作负载,即使队列很短,长任务也会阻塞短任务,因为长任务很容易长时间占用所有核心。例如一个混合99.5%的0.5微秒的短任务和0.5%的500微秒的长任务的工作负载,其中的一个短任务被一个长任务阻塞可能会导致1000倍处理时长以上的等待时间。最后导致被长任务阻塞的一些短任务将增加该工作负载的平均尾部延迟。
针对上述问题,本发明进一步的实施步骤2,具体步骤如下:
步骤S201、划分任务组。
对数据中心中的任务,可以将任务按照处理时长来划分分组。作业中的任务类型按照处理时长可先大致划分为微秒级任务、毫秒级任务、秒级及以上任务。对于每一级别的任务,可以将任务类型在处理时长范围内更细粒度上划分分组。之后主机调度器将以组为单位进行主机内核心分配。划分分组的目的是在一定程度上可以降低长任务阻塞短任务的可能性,。
步骤S202、动态分配核心方法。
主机调度器初始为每组任务分配一个核心,并且在调度过程中保证每组任务至少有一个核心。之后在每组任务处理时长的时间粒度上使用拥塞检测算法依次判断每组组内的核心是否有处于拥塞状态的,如果有核心处于拥塞状态则使用核心选择算法来选择一个核心分配给该组。主机调度器使用空闲核心检测算法判断是否需要让出组内核心。下面具体介绍拥塞检测算法、空闲核心检测算法以及核心选择算法。
拥塞检测算法:数据中心任务的处理时间跨度大,对于不同级别的任务需要分类使用拥塞检测算法。
对于微秒级的任务组,主机调度器以5μs的时间间隔在组内的每个核心上调用拥塞检测算法。拥塞检测算法根据两个负载源确定核心是否过载:排队的任务和排队的入口数据包。如果在检测算法的两次连续运行中发现任何任务或数据包存在于队列中,则表明数据包或任务排队至少5μs,则认为该核心是拥塞的,并且授予该分组一个额外的内核。
对于毫秒级的任务组,主机调度器以50ms的时间间隔在组内的每个核心上调用拥塞检测算法。拥塞检测算法根据两个负载源确定核心是否过载:排队的任务和排队的入口数据包。如果在检测算法的两次连续运行中发现任何任务存在于队列中,则表明数据包或任务排队至少50ms,则认为该核心是拥塞的,并且授予该分组一个额外的内核。
对于秒级及以上的任务组,主机调度器以5s的时间间隔在组内的每个核心上调用拥塞检测算法。拥塞检测算法根据CPU利用率确定核心是否过载,当CPU的利用率超过一定的阈值后,证明该核心过载,需要额外分配一个核心。
核心选择算法:在决定授予分组哪个内核时,调度器会考虑三个因素:1.超线程效率。英特尔的超线程使两个硬件线程能够在同一个物理内核上运行,这些线程共享处理器资源,例如L1和L2缓存和执行单元,但超线程作为两个独立的逻辑核心公开。2.缓存位置。如果应用程序的状态已经存在于内核的L1/L2缓存中,则它是新授予的,它可以避免许多耗时的缓存未命中。因为超线程共享相同的缓存资源,授予应用程序一个已经运行的内核的超线程对将产生良好的缓存局部性。3.延迟。抢占一个核心并等待它变得可用需要时间,并且浪费了可以用来做有用工作的周期。因此,如果存在空闲内核,调度器总是尽可能授予空闲内核而不是抢占繁忙的内核。调度器的核心选择算法考虑了上述三个因素。
如果某任务组的拥塞检测结果为拥塞,则需要使用核心选择算法给该任务组分配额外的空闲核心。核心选择算法步骤如下:
1)主机调度器会首先依次遍历分配给该任务组中所有核心对应的超线程的另一个逻辑核心是否空闲,如果遍历到某一逻辑内核是空闲的,主机调度器会将该空闲核心分配该任务组并结束算法。如果没有空闲的,继续往下执行。
2)主机调度器会继续遍历该任务组一定时间前让出的核心,如果遍历到某一内核是空闲的,主机调度器会将该空闲核心分配该任务组并结束算法。如果没有空闲的,继续往下执行。
3)主机调度器就会最后检测系统中现有的空闲核心,随机挑选一个空闲核心分配给该任务组并结束算法。如果没有空闲的,继续往下执行。
最后,如果系统中没有空闲核心,可以从服务时间比该组长且所拥有的核心数大于1的任务组中随机抢占一个核心分配给该任务组。
空闲核心检测算法:对于分组的某一核心如果其本地队列为空且无法从组内其他的核心窃取到任务,则认为该核心处于空闲状态,会主动通知调度器其处于空闲状态。调度器会时刻接收核心返回的状态信息,接收到核心的空闲状态后,如果该组的核心数多于两个,就会将该核心调出该组并将其设为空闲状态,可供其他分组调用。目的是保证为每个分组分配的核心数不少于1。
步骤S203,完成组内任务调度:
对于每个分组设置一个队列,每个分组中所有任务按照作业序号从小到大顺序出队,再由主机调度器将任务分派到该组核心上处理执行。
对于每个分组组内分配的核心,核心之间可以通过工作窃取来实现组内负载均衡。在工作窃取下,每个核心都维护一个双端队列。核心从其双端队列的头部执行任务。当没有任务可处理时,它们会从另一个核心的双端队列的尾部窃取任务。
核心首先检查本地运行队列,如果它是空的并且没有传入的数据包要处理,它会执行工作窃取。工作窃取具体内容如下:核心先随机选择组内的一个核心,如果该核心有任务可以窃取,它会将一半任务从该核心队列的尾部转移到自己的任务队列。如果核心没有可用的工作,则空闲核心会继续随机选择一个新的核心并重复此过程,直到找到工作或检测到全局终止。为了确定窃取的完成时间,某一空闲核心必须主动检测所有组内核心都处于空闲状态,并且没有更多的任务可用时才终止窃取。如果核心主动检测完所有组内核心后仍然没有窃取到任务,则认为该核心处于空闲状态,并会主动通知调度器其处于空闲状态。

Claims (10)

1.一种一致性低延迟的数据中心任务调度方法,其特征在于,步骤如下:
(1)制定作业的集群调度策略,当作业到达数据中心后,按照作业级先来先服务的规则,将作业按照到达的时间从小到大排序并编号,并将同一个作业中包含的所有任务都标识该序号作为该任务的作业级标识;作业标序后,由集群调度器按负载均衡的原则将任务分派到服务器上运行;
(2)建立主机调度机制,包括任务分类和动态分配核心,对于每个组设置一个队列,每个组中所有任务按照作业级标识从小到大的顺序出队,再由主机调度器将任务分派到该组获得的核心上处理;
所述的任务分类是将任务按照处理时长分类,主机调度器以组为单位进行主机核心分配;
所述的动态分配核心是主机调度器为每组任务初始分配一个核心,在每组任务处理时长的时间粒度上为每组动态分配核心。
2.根据权利要求1所述的一致性低延迟的数据中心任务调度方法,其特征在于:步骤(1)所述的集群调度策略具体如下:
根据服务器节点的性能参数,首先将数据中心集群中的服务器按照任务的处理特定需求划分服务器组,再将剩下的泛用节点按照服务器的性能参数划分服务器组;
对于服务器的性能计算,采用各服务器节点CPU(C)、内存(M)、磁盘I/O(I)和网络带宽(N)作为服务器的性能评价参数;
当集群中存在n个节点,对于每个节点Si∈{S1,S2,S3,…,Sn}(n>1),服务器综合性能表示为C(Si)∈{C(S1),C(S2),C(S3),…,C(Sn)}(n>1),根据各项性能计算集群中各服务器的综合性能为:
C(Si)=σc×Cc(Si)+σM×CM(Si)+σI×CI(Si)+σN×CN(Si)
其中σi为各个服务器性能的权值参数,可根据集群中的服务器性能自行设定,其和值为1;
其中每个服务器节点各性能权值为:
其中J∈{C,M,I,N}为各性能集合中的一项,Ej(Si)为服务器集群中节点Si的一项初始性能数值;
根据集群中每个服务器的初始性能将服务器进行排序,之后根据节点数量尽可能地进行均匀分组,使得每组服务器节点性能总和接近。
3.根据权利要求1所述的一致性低延迟的数据中心任务调度方法,其特征在于:步骤(1)中根据各个服务器的实时负载情况对任务进行动态负载均衡分配如下:
(1.1)节点实时负载信息收集
采用服务器节点负载信息收集模块来进行各节点实时负载信息的收集,收集的信息包括某一时刻节点的CPU(C)、内存(M)、磁盘I/O(I)和网络带宽(N)性能参数,以及各性能的利用率;
根据负载变化率ΔD来判断某节点Si在时间t1至t2时间段内的负载信息是否上传,其计算式如下所示:
Di=σc×Ec(Si)+σM×EM(Si)+σI×EI(Si)+σN×EN(Si)
其中σi为各个服务器性能的权值参数,可根据集群中的服务器性能自行设定,其和值为1;Ej(Si)为服务器集群中某一时刻节点Si的一项性能数值,其中j∈{C,M,I,N};
在集群的实际运行环境中设置一个负载信息上报阈值Δd,当服务器计算的负载信息变化率小于该阈值时,那么本次的负载信息就不上报,并且只在该服务器收集模块更新本次数据,用于下一次的本地负载变化率计算;
(1.2)为任务选择服务组
对于特定需求任务类型将任务分配到对应的特定服务器组;对于非特定需求的任务,再将任务分配到平均性能利用率低的服务器组;
根据节点的性能利用率L计算每个服务器组的平均性能利用率计算公式如下:
L(Si)=σc×Wc(Si)+σM×WM(Si)+σI×WI(Si)+σN×WN(Si)
其中Wi代表该节点某项性能的利用率,分别代表工作状态下的CPU利用率、内存利用率、磁盘I/O利用率和网络带宽利用率,得到每个服务器组的平均利用率后,将任务分配到平均性能利用率低的服务器组,该服务器各项性能资源充足;
(1.3)选择分组中的节点
对于组内服务器采用动态加权轮询算法,根据服务器组中的各节点分配概率设置组内服务器的分配权重。
4.根据权利要求3所述的一致性低延迟的数据中心任务调度方法,其特征在于:步骤(1.3)中,基于服务器节点性能参数,在服务器组中某节点Si的分配概率Pi的计算公式如下:
将服务器组中的各节点分配权重改进为基于分配概率的分配权重,如下所示,Q(Si)为对应服务器节点Si的分配权重。
其中B为使得B*P>1的权值常数。
5.根据权利要求1所述的一致性低延迟的数据中心任务调度方法,其特征在于:步骤(2)所述的动态分配核心是主机调度器初始为每组任务分配一个核心,并且在调度过程中保证每组任务至少有一个核心;之后在每组任务处理时长的时间粒度上使用拥塞检测算法依次判断每组组内的核心是否有处于拥塞状态的,如果有核心处于拥塞状态则使用核心选择算法来选择一个核心分配给该组;最后主机调度器使用空闲核心检测算法判断是否需要让出组内核心。
6.根据权利要求5所述的一致性低延迟的数据中心任务调度方法,其特征在于:对于动态分配核心中的拥塞检测算法具体如下:
2.1.1)对于微秒级的任务组,主机调度器以5μs的时间间隔在组内的每个核心上调用拥塞检测算法;
所述拥塞检测算法根据两个负载源确定核心是否过载:排队的任务和排队的入口数据包;如果在检测算法的两次连续运行中发现任何任务或数据包存在于队列中,则表明数据包或任务排队至少5μs,则认为该核心是拥塞的,并且授予该分组一个额外的内核。
2.1.2)对于毫秒级的任务组,主机调度器以50ms的时间间隔在组内的每个核心上调用拥塞检测算法;
所述拥塞检测算法根据两个负载源确定核心是否过载:排队的任务和排队的入口数据包;如果在检测算法的两次连续运行中发现任何任务存在于队列中,则表明数据包或任务排队至少50ms,则认为该核心是拥塞的,并且授予该分组一个额外的内核。
2.1.3)对于秒级及以上的任务组,主机调度器以5s的时间间隔在组内的每个核心上调用拥塞检测算法;
所述的拥塞检测算法根据CPU利用率确定核心是否过载,当CPU的利用率超过一定的阈值后,证明该核心过载,需要额外分配一个核心。
7.根据权利要求5所述的一致性低延迟的数据中心任务调度方法,其特征在于:对于动态分配核心中的核心选择算法具体如下:
2.2.1)主机调度器会首先依次遍历分配给该任务组中所有核心对应的超线程的另一个逻辑核心是否空闲,如果遍历到某一逻辑内核是空闲的,主机调度器会将该空闲核心分配该任务组并结束算法,如果没有空闲的,继续往下执行;
2.2.2)主机调度器会继续遍历该任务组一段时间前让出的核心,如果遍历到某一内核是空闲的,主机调度器会将该空闲核心分配该任务组并结束算法。如果没有空闲的,继续往下执行;
2.2.3)主机调度器就会最后检测系统中现有的空闲核心,随机挑选一个空闲核心分配给该任务组并结束算法;如果没有空闲的,继续往下执行;
最后,如果系统中没有空闲核心,从服务时间比该组长且所拥有的核心数大于1的任务组中随机抢占一个核心分配给该任务组。
8.根据权利要求5所述的一致性低延迟的数据中心任务调度方法,其特征在于:对于动态分配核心中的空闲核心检测算法具体如下:
对于分组的某一核心如果其本地队列为空且无法从组内其他的核心窃取到任务,则认为该核心处于空闲状态,则主动通知调度器其处于空闲状态;
调度器会时刻接收核心返回的状态信息,接收到核心的空闲状态后,如果该组的核心数多于两个,将该核心调出该组并将其设为空闲状态,可供其他分组调用。
9.根据权利要求1或5所述的一致性低延迟的数据中心任务调度方法,其特征在于:步骤(2)对于组内任务调度具体是:
对于每个分组设置一个队列,每个分组中所有任务按照作业序号从小到大顺序出队,再由主机调度器将任务分派到该组核心上处理执行;
对于每个分组组内分配的核心,核心之间通过工作窃取来实现组内负载均衡;在工作窃取下,每个核心都维护一个双端队;
所述核心是从其双端队列的头部执行任务,当没有任务可处理时,它们会从另一个核心的双端队列的尾部窃取任务;
核心首先检查本地运行队列,如果本地运行队列是空的并且没有传入的数据包要处理,则会执行工作窃取。
10.根据权利要求9所述的一致性低延迟的数据中心任务调度方法,其特征在于,所述工作窃取具体内容如下:
核心先随机选择组内的一个核心,如果该核心有任务可以窃取,则将一半任务从该核心队列的尾部转移到自己的任务队列;如果核心没有可用的工作,则空闲核心会继续随机选择一个新的核心并重复此过程,直到找到工作或检测到全局终止;
为了确定窃取的完成时间,某一空闲核心必须主动检测所有组内核心都处于空闲状态,并且没有更多的任务可用时才终止窃取;如果核心主动检测完所有组内核心后仍然没有窃取到任务,则认为该核心处于空闲状态,并会主动通知调度器其处于空闲状态。
CN202310452110.0A 2023-04-25 2023-04-25 一种一致性低延迟的数据中心任务调度方法 Pending CN116483538A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310452110.0A CN116483538A (zh) 2023-04-25 2023-04-25 一种一致性低延迟的数据中心任务调度方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310452110.0A CN116483538A (zh) 2023-04-25 2023-04-25 一种一致性低延迟的数据中心任务调度方法

Publications (1)

Publication Number Publication Date
CN116483538A true CN116483538A (zh) 2023-07-25

Family

ID=87211497

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310452110.0A Pending CN116483538A (zh) 2023-04-25 2023-04-25 一种一致性低延迟的数据中心任务调度方法

Country Status (1)

Country Link
CN (1) CN116483538A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116820897A (zh) * 2023-08-31 2023-09-29 山东省地质测绘院 一种集群计算机运行调度控制方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116820897A (zh) * 2023-08-31 2023-09-29 山东省地质测绘院 一种集群计算机运行调度控制方法
CN116820897B (zh) * 2023-08-31 2023-11-21 山东省地质测绘院 一种集群计算机运行调度控制方法

Similar Documents

Publication Publication Date Title
CN105718479B (zh) 跨idc大数据处理架构下执行策略生成方法、装置
CN109901922B (zh) 一种面向多层服务的容器云资源调度优化方法
US8869160B2 (en) Goal oriented performance management of workload utilizing accelerators
JP2940450B2 (ja) クラスタ型コンピュータのジョブスケジュール方法及び装置
US20050055694A1 (en) Dynamic load balancing resource allocation
CN109564528B (zh) 分布式计算中计算资源分配的系统和方法
Tong et al. A load balancing strategy based on the combination of static and dynamic
US11496413B2 (en) Allocating cloud computing resources in a cloud computing environment based on user predictability
JP2002278945A (ja) マルチプロセッサ構成の計算機間におけるトランザクション負荷分散方法及び方式並びにプログラム
CN109697122A (zh) 任务处理方法、设备及计算机存储介质
Ghosh et al. Priority based modified throttled algorithm in cloud computing
CN110221920A (zh) 部署方法、装置、存储介质及系统
CN116483538A (zh) 一种一致性低延迟的数据中心任务调度方法
Hu et al. Job scheduling without prior information in big data processing systems
Xu et al. Prophet: Scheduling executors with time-varying resource demands on data-parallel computation frameworks
Jia et al. A highly efficient data locality aware task scheduler for cloud-based systems
Lin et al. {RingLeader}: efficiently Offloading {Intra-Server} Orchestration to {NICs}
CN106998340A (zh) 一种板卡资源的负载均衡方法及装置
CN112817726B (zh) 一种云环境下基于优先级的虚拟机分组资源调度方法
Chatterjee et al. A new clustered load balancing approach for distributed systems
Liu et al. Computing load aware and long-view load balancing for cluster storage systems
CN116755888A (zh) 一种面向高性能计算云平台的作业调度装置及方法
Nandagopal et al. Hierarchical status information exchange scheduling and load balancing for computational grid environments
Patel et al. An improved approach for load balancing among heterogeneous resources in computational grids
Shukla et al. Load balancing approaches for web servers: A survey of recent trends

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination