CN111782379A - 基于完成效率的数据中心作业调度方法及系统 - Google Patents

基于完成效率的数据中心作业调度方法及系统 Download PDF

Info

Publication number
CN111782379A
CN111782379A CN202010763695.4A CN202010763695A CN111782379A CN 111782379 A CN111782379 A CN 111782379A CN 202010763695 A CN202010763695 A CN 202010763695A CN 111782379 A CN111782379 A CN 111782379A
Authority
CN
China
Prior art keywords
job
jobs
completion
scheduling
time
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.)
Granted
Application number
CN202010763695.4A
Other languages
English (en)
Other versions
CN111782379B (zh
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.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
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 National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN202010763695.4A priority Critical patent/CN111782379B/zh
Publication of CN111782379A publication Critical patent/CN111782379A/zh
Application granted granted Critical
Publication of CN111782379B publication Critical patent/CN111782379B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/23Clustering techniques
    • G06F18/232Non-hierarchical techniques
    • G06F18/2321Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions
    • G06F18/23213Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions with fixed number of clusters, e.g. K-means clustering
    • 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
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Probability & Statistics with Applications (AREA)
  • Artificial Intelligence (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Evolutionary Computation (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明属于大数据分析作业调度领域,公开了一种基于作业完成效率的作业调度方法及系统,包括以下步骤:1、输入一批作业及作业的资源需求和作业完成时间;2、将所有作业按照作业完成时间进行对齐生成多个作业组;3、对多个所述作业组中的作业进行打包生成多个作业集;4、对打包后的作业集根据最密作业集优先调度方法进行调度;5、输出作业调度顺序。通过作业完成时间对齐、作业打包、调度优化这三个步骤来增加作业完成效率、提高系统吞吐量。本发明使用谷歌集群数据做了仿真实验,实验结果验证了该方案的有效性。该方案和最短作业优先调度策略相比,减小23.19%的平均作业完成时间,提升了42.19%的系统吞吐量。

Description

基于完成效率的数据中心作业调度方法及系统
技术领域
本发明属于大数据分析作业调度领域,尤其涉及一种基于完成效率的数据中心作业调度方法及系统。
背景技术
作业调度涉及到如何决策作业的执行顺序:对一批作业来说,什么作业应该并行执行、什么作业应该顺序执行等。这是比资源分配更复杂、更深层次的问题。在大型公共数据中心内,同时执行多个大数据分析作业逐渐成为一种趋势。在这类数据中心内,多个大数据分析作业的作业调度问题是一项影响到数据中心计算集群性能(如系统吞吐量)的挑战。
对于单台计算机来说,大数据分析作业是一项难以完成的计算工作。这是因为作业的输入是一个数据量很大的文件。在单台计算机上处理数据量庞大的文件可能会导致内存溢出(out-of-memory)等错误。基于MapReduce的并行计算框架通过把大数据文件切分为多个数据分区、将这些数据分区分发给并行执行的计算任务,来加快大数据分析作业的执行过程。Spark是对基于MapReduce的并行计算框架的一种开源的实现。将Spark部署在数据中心后,计算节点之间通过数据中心网络相互连接成为一个计算集群。在这个Spark计算集群内,数据中心用户可以向集群提交大数据分析作业。Spark计算集群会负责整个大数据分析作业的执行过程,包括资源分配、任务调度等。
对于Spark集群的用户来说,从作业提交到返回计算结果的时间代表了用户的作业时延。在共享型的数据中心内,Spark集群会接受来自不同用户提交的作业,集群管理者常采用多作业场景下的调度方法来减少作业完成时间。在过去很长一段时间里,基于最短作业优先(shortest-job-first,SJF)策略的调度方法一直被认为是实现最小平均作业完成时间的调度方法。通过基于大规模真实集群的实验证实了SJF方法比其他作业调度方法实现更小的平均作业完成时间。但是该方法在调度作业的过程中,SJF方法不会依据作业的资源需求来做调度决策,仅凭作业的完成时间来判断。由于缺少对计算资源的计算,最短作业优先调度策可能会优先执行资源消耗大的作业。这些作业占用太多Spark集群的计算资源,并且其他作业由于缺乏充足的计算资源而延长作业完成时间。最终,导致作业执行的并行化程度降低,并降低系统吞吐量,即单位时间内Spark集群完成的作业数量。针对上述的SJF方法的局限性,需要设计一种兼顾作业时间和作业资源需求的调度方法,以便在较短的时间内完成更多的作业、增大作业完成效率。
为了在较短的时间内完成更多的作业,需要通过设计有效的作业打包方法来增大作业并行执行的程度。现有的作业打包方法如Tetris会采集作业的资源需求和计算节点上可用的资源余量。在涉及到多种类型资源的情况下,将作业的资源需求和机器的资源余量表示为向量的形式。Tetris会计算这两类向量的内积运算,将内积值作为作业的打包分数。Tetris会优先调度打包分数高的作业,以便提高不同类型的资源的利用率。然而,该作业打包方法没有考虑到被打包在一起的作业的完成时间。这样打包作业并不能把作业完成时间缩短。
发明内容
本发明要解决的技术问题是怎样进行作业调度从而既能够增加作业完成效率又能够提高系统吞吐量,提出了一种基于完成效率的数据中心作业调度方法及系统。
为解决该问题,本发明所采用的技术方案是:
一种基于完成效率的数据中心作业调度方法,包括以下步骤:
步骤1:输入一批作业及作业的资源需求和作业完成时间;
步骤2:将所有作业按照作业完成时间进行对齐生成多个作业组;
步骤3:对多个所述作业组中的作业进行打包生成多个作业集;
步骤4:对打包后的作业集根据最密作业集优先调度方法进行调度;
步骤5:输出作业调度顺序。
进一步地,步骤2中将所有作业按照作业完成时间进行对齐生成多个作业组的方法是时间聚类算法。
进一步地,所述时间聚类算法具体为:
步骤2.1:预估聚类的作业组数;
步骤2.2:初始化每个作业组的中心点;
步骤2.3:计算一个作业到每个作业组中心点的距离,将该作业分到最近的那个作业组;
步骤2.4:在所有作业进行分组后,根据每个作业组里的作业完成时间重新计算作业组的中心点并更新,如果中心点不再更新,输出作业分组,否则,返回步骤2.3,重新对每个作业进行分组,所述作业组的中心点为一个作业组里所有作业的平均作业完成时间。
进一步地,所述聚类的作业组数预估值为:
Figure BDA0002613783670000031
其中C为计算集群资源容量,Rm为第m个作业的资源需求大小,M为作业的数量。
进一步地,步骤3中对多个所述作业组中的作业进行打包生成作业集的方法是:
步骤3.1:将所有作业组按照每组的平均作业完成时间递增排列;
步骤3.2:对每个作业组里的作业按照所需资源大小递增排列;
步骤3.3:根据集群资源剩余容量从平均作业完成时间小的作业组开始按照资源需求大小从小到大挑选多个作业打包成一个作业集,在一个作业集中剩余的资源容量不足以放下一个作业时,将作业组里未打包的作业按照所需资源大小从小到大根据集群资源剩余容量再打包到另外一个作业集中,以此类推,直到所有作业组中的作业都被打包到不同的作业集中。
进一步地,步骤4中所述最密作业集优先调度方法是指:
步骤4.1:输入一批已经打包好的作业集;
步骤4.2:根据每个作业集的时间长度和作业数量,计算每个作业集的完成效率,所述作业集的完成效率是指作业集中的作业数量和时间长度的比值,作业集的时间长度是指该作业集中最长作业的作业完成时间;
步骤4.3:根据作业完成效率,对作业集进行排序;
步骤4.4:优先给具有最高完成效率的作业集里的作业分配计算资源。
本发明还提供了一种基于完成效率的数据中心作业调度系统,包括处理器,以及与所述处理器连接的存储器,所述存储器存储有一种基于完成效率的数据中心作业调度方法的程序,所述程序执行时实现上面所述方法的步骤。
本发明还提供了一种计算机可读介质,存储计算机程序,所述计算机程序可被处理器执行以实现上面所述方法的步骤。
本发明还提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上面所述方法的步骤。
与现有技术相比,本发明所取得的有益效果是:
本发明基于完成效率的数据中心作业调度方法,通过作业完成时间对齐、作业打包、调度优化这三个步骤来增加作业完成效率、提高系统吞吐量。这三个步骤环环相扣,共同影响提高了调度效率。本发明使用谷歌集群数据做了仿真实验,实验结果验证了该方案的有效性。该方案和最短作业优先调度策略相比,减小23.19%的平均作业完成时间,提升了42.19%的系统吞吐量。和多资源类型的打包调度方法Tetris相比,该方案提高了55.4%的作业完成效率。
附图说明
图1为本发明系统流程图;
图2为一种对比调度方案示意图;(a)最短作业优先调度策略;(b)为一种启发式作业调度策略;
图3为Tetris打包作业的示意图;
图4为作业完成时间的累积分布示意图;
图5为谷歌集群数据示意图;
图6为测试所用作业的时间长度分布;
图7为系统吞吐量;
图8为Tetris调度结果:平均作业完成时间是1696.3秒;
图9为SJF调度结果:平均作业完成时间是1695.4秒;
图10为DJSF调度结果:平均作业完成时间是1302.2秒;
图11为作业完成时间的加速比对比图,(a)DJSF方法相比于SJF方法的加速比,(b)DJSF方法相比于Tetris方法的加速比;
图12为比较Tetris方法和基于k均值聚类的作业完成效率。
具体实施方式
首先介绍本发明通过分析最短作业优先策略的局限性和作业打包问题,从而启发本发明的发明思路。
对最短作业优先策略的局限性进行分析,如图2(a)显示最短作业优先策略的案例。在该案例中,一共有5个作业需要调度:作业1的完成时间是4秒;作业2、作业3、作业4、作业5的完成时间是4.2秒。最短作业优先调度策略会先调度作业1,再调度其他作业。然而,作业1会占用集群的所有计算资源。这导致其他作业被延后。最终,最短作业优先调度策略的平均作业完成时间是7.36秒。在该案例中,最短作业优先调度方法没有实现预期的最小平均作业完成时间。图2(b)显示了另一种启发式的作业调度方法,该方法没有优先调度时间最短的作业1。考虑到作业2、作业3、作业4和作业5占用较少资源,该启发式的作业调度方法会把这些作业打包在一起,以便并发执行。图中启发式的作业调度策略实现了更小的平均作业完成时间,低至5秒。这比最短作业优先调度方法减少了32.07%的平均作业完成时间。该启发式作业调度方法实现比最短作业优先的调度策略更好的调度性能。其中的主要原因是该调度策略考虑到了作业完成效率(job completion efficiency,JCE)。我们把在一定时间段内完成作业的数量和该时间段长度的比值作为作业完成效率。在图2(b)中,启发式调度策略通过打包作业2、作业3、作业4和作业5,实现了更高的作业完成效率。这个作业集的作业数量是4,需要花4.2秒执行完成该作业集内的所有作业。因此,调度这个作业集会产生大小为4/4.2的作业完成效率。作为一个对比,如果优先调度作业1,这会产生大小为1/4的作业完成效率。从系统吞吐量的角度来看,如果一个作业调度策略可以实现较高数值的作业完成效率,那么这意味着该作业调度策略可以用较短的时间来完成更多的作业。受此案例的启发,本发明设计了一个基于作业完成效率的启发式作业调度方法。该方法会优先调度作业完成效率较高的作业集。直观来看,作业完成效率可以被类比为物理学的术语“密度”。如果执行一个作业集的时间长度很短但是在这个作业集中完成的作业数量很多,那么可以把这个作业集看作是“密集”的。相反地,如果一个作业集的执行时间很长但是完成作业的数量很少的话,这个作业集会被看作是“稀疏”的。从上述的案例来看,优先调度作业完成效率高的作业集能减少平均作业完成时间、提高系统吞吐量。我们将该启发式的调度策略称为最密作业集优先调度策略(densest-job-set-first,DJSF)。
但是DJSF方法不能用于打包作业,只能调度已经打包好作业的作业集。如前文所述,DJSF方法只是按照作业完成效率来调度作业集,也就是说DJSF方法不会改变作业集的作业完成效率。为了发挥出DJSF算法的优势,需要设计一种新的作业打包方法,以便使得作业集的作业完成效率最大化。
现有的作业打包方法的优化目标是减少资源碎片,不能解决我们的问题。Tetris是在作业打包相关领域的最佳方法。Tetris会用向量来表示作业的资源需求,也会用向量表示计算节点的剩余资源。通过两个向量之间的内积值,Tetris可以计算向量的匹配程度。比如,计算资源密集型的作业会需要较多的计算资源、较少的网络资源。因此,计算资源密集型的作业的资源向量会和有较多计算资源的计算节点匹配。它们的向量内积值会更高。Tetris通过内积值的大小来判断是否将一个作业调度到某一台机器。匹配程度越高的作业会被优先调度。不过,该方法并没有考虑到被打包在一起的作业是否具有较高的完成效率。因此,最终由Tetris生成的作业集会存在作业完成效率普遍较低的情况。
具体用一个示意案例来揭示Tetris打包方法的局限性。在该案例中,作业打包方法需要把五个作业:Job1,Job2,Job3,Job4和Job5调度到一台机器上。机器的剩余资源、每个作业的资源需求和作业的时间如图3所示。表格的最后一行显示了每个作业和该机器的匹配分数,匹配分数的计算公式是Tetris所采用的向量内积值。在该案例中,Job3有最大的匹配分数。因此,Tetris会优先把Job3调度到该机器上。不过,在机器执行Job3后,没有足够的资源来执行其他作业。最终,在该机器上,作业集的作业数量是1,作业集的时间长度是5秒,作业集的完成效率是0.2。图3显示了另一种启发式的作业打包方法。该方法会优先把时间程度相近、资源需求较少的作业打包成一个作业集,该作业集包括Job1、Job2、Job4、Job5。其时间长度是4秒,作业数量是4,作业完成效率是1。相比而言,Tetris打包作业的时候不考虑作业的时间长度、作业的数量,最终导致作业集的完成效率很低。
本发明设计了一个启发式的作业打包方法。该方法会以一种高“密度”的方式把作业打包在一起。这个作业打包方法通过两种方式来提高作业完成效率。首先,对于各个作业来说,其完成时间长度各不相同。如果把时间不同的作业打包为一个作业集的话,那么该作业集的时间长度取决于所有作业完成时间中最长的时间。这会降低整个作业集的作业完成效率。为了解决该问题,我们会对齐在一个作业集内的各个作业的作业完成时间,以便使得这些作业在相近的时间内完成。具体而言,我们采用k均值聚类算法根据作业完成时间的长度将作业分为不同的组。在同一组内,作业的完成时间相近。
图1至图12示出了本发明一种基于完成效率的数据中心作业调度方法的具体实施例,包括以下步骤,如图1所示:
步骤1:输入一批作业及作业的资源需求和作业完成时间;
步骤2:将所有作业按照作业完成时间进行对齐生成多个作业组;
为了增加一个作业集的作业完成效率,我们以一种高“密度”的方式来打包作业。从作业完成效率的计算公式中可以看出,作业完成效率是由作业集里的作业数量和作业集的时间长度共同决定的。在一个作业集里的作业会被并发执行,因此计算集群的资源上限和同一个作业集里的作业资源需求决定了同一个作业集的作业数量。但是作业集可能会因为作业的完成时间不同,导致较低的作业完成效率。为了解决这一问题,我们提出了通过对齐作业完成时间来提高作业完成效率的解决方案。
作业完成时间对齐方案旨在把具有相近作业完成时间的作业分到同一组,作为一个作业集的候选作业。这可以避免把执行时间长的作业和执行时间短的作业打包在一起。例如,一共有6个作业需要打包。每个作业的资源需求都是0.5。这意味着,最多两个作业可以同时执行。不过,这6个作业的执行时间长度不同。假设作业1、作业2、作业3、作业4、作业5、作业6的作业完成时间分别是1秒、2秒、5秒、6秒、9秒、10秒。通过将作业完成时间相近的作业打包到同一个作业集,来对齐作业集里的作业完成时间。这样可以最大程度地提高作业完成效率。在这个例子中,我们分别把作业1和作业2,作业3和作业4,作业5和作业6打包在一起。相应的时间长度分别是2秒,6秒和10秒。我们计算这三个作业集的平均作业完成效率,大约是1.53。如果将作业完成时间差异较大的两个作业打包在一起,比如作业1和作业6,作业2和作业5,作业3和作业4,那么三个作业集的平均作业完成效率大约是0.75。总的来说,我们通过对齐同一个作业集里的作业完成时间来提高平均作业完成效率。正如前文所述,较高的作业完成效率可以提升DJSF调度方法的性能。
图4显示了一条作业完成时间的累积分布曲线。所有作业会按照完成时间大小排序并统计其数量。图中的一个点(X1,n1)代表了满足作业完成时间小于X1的所有作业的数量是n1。根据该曲线图,作业完成时间对齐方案只需要把图中相邻的点所代表的作业打包为一个作业集。本发明分析了谷歌集群数据中作业的完成时间分布,并在图5中用柱状图表示了每个时间对应的作业的数量。该柱状分布代表了实际生产生活中作业的完成时间取值情况。从图中看出,大多数作业的完成时间变化范围是从25秒到10分25秒。具有相同作业完成时间的作业数量是充足的。这为执行作业完成时间策略提供了一个好的机会。然而,在实际的集群中很难通过作业分布曲线来执行作业完成时间对齐策略。为了实现快捷的作业完成时间对齐,本发明将所有作业按照作业完成时间进行对齐生成多个作业组的方法是采用机器学习领域中的时间聚类算法,具体为:
步骤2.1:预估聚类的作业组数;
本实施例中所述聚类的作业组数预估值为:
Figure BDA0002613783670000101
其中C为计算集群资源容量,Rm为第m个作业的资源需求大小,M为作业的数量。由于K均值聚类算法只是学习数据点差异来进行分组,并不能自身决定由多少组数,在作业打包的问题场景下,本实施例使用组数预估值,使得打包的作业更加紧凑,以便作业能充分使用计算集群的资源。
步骤2.2:初始化每个作业组的中心点;
步骤2.3:计算一个作业到每个作业组中心点的距离,将该作业分到最近的那个作业组;
步骤2.4:在所有作业进行分组后,根据每个作业组里的作业完成时间重新计算作业组的中心点并更新,如果中心点不再更新,输出作业分组,否则,返回步骤2.3,重新对每个作业进行分组,所述作业组的中心点为一个作业组里所有作业的平均作业完成时间。
表1基于K均值聚类的时间聚类算法
Figure BDA0002613783670000111
表1给出了基于k均值聚类的时间聚类算法的主要步骤。基于k均值聚类的时间聚类算法是一个迭代算法,在初始化每个作业分组的中心点后,计算一个作业到每个作业分组的距离,将该作业分到最近的那个作业分组。在所有作业进行分组后,基于k均值聚类的时间聚类算法会根据每个作业组里的作业完成时间来重新计算作业分组的中心点。在中心点更新之后,基于k均值聚类的时间聚类算法会重新对每个作业进行分组。该算法的计算复杂是O(M2),其中M代表作业的数量。
步骤3:对多个所述作业组中的作业进行打包生成多个作业集;
在对齐作业完成时间后,作业组里的作业完成时间是统一的,但是作业数量是有差异的,并不能作为一个作业集来执行。为了产生具有较高作业完成效率的作业集,我们用作业打包方法从作业分组里选出作业进行打包。如图4所示,n1是满足作业完成时间小于X1的作业的数量,n2满足作业完成时间小于X2的作业的数量。假设我们要把完成时间大于X1但是完成时间小于X2的作业打包成为一个作业集。该作业集的作业数量是n2-n1,作业集的时间长度是X2,作业完成效率是(n2-n1)/X2。从形式上来看,作业完成效率是由n2-n1决定的。从该例子看出,作业打包方法应该尽量提高作业集里的作业数量来增加作业集的完成效率。在计算集群的资源容量限制下,作业集里的作业数量是由作业的资源需求大小决定。给定一批作业,作业打包方法优先把资源需求小的作业打包到同一个作业集。具体的打包方法为:
步骤3.1:将所有作业组按照每组的平均作业完成时间递增排列;
步骤3.2:对每个作业组里的作业按照所需资源大小递增排列;
步骤3.3:根据集群资源剩余容量从平均作业完成时间小的作业组开始按照资源需求大小从小到大挑选多个作业打包成一个作业集,在一个作业集中剩余的资源容量不足以放下一个作业时,将作业组里未打包的作业按照所需资源大小从小到大根据集群资源剩余容量再打包到另外一个作业集中,以此类推,直到所有作业组中的作业都被打包到不同的作业集中。表2给出了作业的打包方法。
表2作业打包方法
Figure BDA0002613783670000131
如表2所示作业打包方法的主要步骤,该打包算法一开始会调用作业完成时间对齐方法,计算出作业组。然后,根据作业分组里的平均作业完成时间来按照递增顺序排列作业组。之所以将作业分组里的平均完成时间按照递增顺序排列,因为相邻两个作业组的完成时间比较相近,在一个作业组中的作业被打包到作业集后该作业集还剩余有集群资源时,将相邻作业组中的所需资源较小的作业打包到该作业集。该算法优先从平均作业完成时间较小的作业组里按照资源需求大小从小到大挑选作业、再打包为作业集。在每个作业组里,作业会按照所需的资源数量从小到大的顺序排列。资源需求小的作业会被优先打包到一个作业集中,集群的剩余资源会随之更新。当集群没有更多的资源时,其他作业不能被继续打包到这个作业集,该算法重新建立一个新的作业集,继续将其他作业打包到新的作业集中。在如表2所示的算法中,使用了两个For循环。其计算复杂性是O(GM),符号G和M代表作业分组的数量和作业的数量。
步骤4:对打包后的作业集根据最密作业集优先调度方法进行调度;
最密作业集优先调度方法是指:
步骤4.1:输入一批已经打包好的多个作业集;
步骤4.2:根据每个作业集的时间长度和作业数量,计算每个作业集的完成效率,所述作业集的完成效率是指作业集中的作业数量和时间长度的比值,作业集的时间长度是指该作业集中最长作业的作业完成时间;
步骤4.3:根据作业完成效率,对作业集进行排序;
步骤4.4:优先给具有最高完成效率的作业集里的作业分配计算资源。
本发明基于完成效率的数据中心作业调度方法,通过作业完成时间对齐、作业打包、调度优化这三个步骤来增加作业完成效率、提高系统吞吐量。这三个步骤环环相扣,共同影响提高了调度效率。本发明使用谷歌集群数据做了仿真实验,实验结果验证了该方案的有效性。该方案和最短作业优先调度策略相比,减小23.19%的平均作业完成时间,提升了42.19%的系统吞吐量。和多资源类型的打包调度方法Tetris相比,该方案提高了55.4%的作业完成效率。
本发明为了解决最短作业优先调度策略没能在较短的时间内完成较多的作业问题,需要调度策略尽可能打包多个作业,并判断不同作业集的作业完成效率。并做了下面的定义和定理。
定义1:(作业完成效率):用符号J1,J2,...,JN表示一批作业,符号N表示作业的数量。将这些作业被打包为一个作业集J。用符号T表示该作业集执行时间长度,即所有作业完成的时间。该作业集的作业完成效率是指单位时间内完成作业的数量,根据下式计算。
Figure BDA0002613783670000151
在图2(b)中,启发式作业调度方法打包作业2,作业3,作业4和作业5。本实施例中把这样被打包在一起的作业看作一个作业集。在该作业集中,作业的数量是4。而完成这个作业集的时间长度是4.2秒。根据定义1,这个作业集的完成效率是4/4.2。相对地,作业1可以看作是一个有唯一作业的作业集,其作业完成效率是1/4。可见,如果一个作业集的作业完成效率越高,那么意味着调度该作业集可以在较短时间内完成更多作业。从数学形式上来看,作业完成效率的计算式和系统吞吐量的计算公式一致。也就是说,当在一定时间段内调度方法执行一个作业集时,系统的吞吐量是该作业集的完成效率。
根据上述我们对作业完成效率和系统吞吐量之间关系的总结,最密作业集优先调度方法会通过优先调度具有最高作业完成效率的作业集,来提高系统吞吐量。通过下面的理论推导,发现该方法还能实现更小的平均作业完成时间。
定理1:给定一批作业,将该批作业打包为两个作业集。这两个作业集分别用符号表示为J1和J2。对于打包后的作业集,只能按照串行顺序执行。如果调度器优先执行具有较高作业完成效率的作业集,那么该调度器可以实现较小的平均作业完成时间。用符号JCE1和JCE2分别表示J1和J2的作业完成效率。如果JCE1>JCE2,那么按照优先调度J1后再调度J2的顺序,调度器可以实现更小的平均作业完成时间。否则,按照先调度J2再调度J1的顺序,调度器会延长平均作业完成时间。
证明:将作业集J1和J2的信息列举如下。其中,符号N1和N2分别代表在作业集J1和J2中的作业数量。符号T1和T2分别代表作业集J1和J2的时间长度,如表3所示。
表3 J1和J2的作业集信息
作业集 作业数量 时间长度
J<sub>1</sub> N<sub>1</sub> T<sub>1</sub>
J<sub>2</sub> N<sub>2</sub> T<sub>2</sub>
调度方案一:先调度J1再调度J2。该方案优先执行作业完成效率较高的作业集。在作业集J1中的作业的完成时间不超过T1;在作业集J1中,所有作业的完成时间总和大约是N1×T1。类似地,在作业集J2中,作业的执行时间大致是T1+T2。在作业集J2中,所有作业的完成时间总和大致是N2×(T1+T2)。总的来看,这两个作业集的所有作业的平均完成时间是
N1×T1+N2×(T1+T2) (a)
调度方案二:先调度J2再调度J1。该方案优先执行作业完成效率较低的作业集。在作业集J2中的作业的完成时间不超过T2;在作业集J2中,所有作业的完成时间总和大约是N2×T2。类似地,在作业集J1中,作业的执行时间大致是T1+T2。在作业集J1中,所有作业的完成时间总和大致是N1×(T1+T2)。总的来看,这两个作业集的所有作业的平均完成时间是
N2×T2+N1×(T1+T2) (b)
因为作业集J1有比J2更大的作业完成效率,所以不等式N1/T1>N2/T2成立,从而可以得到N1×T2>N2×T1。比较式子(a)和式子(b),得到调度方案一的平均作业完成时间更小。由此可以总结出,给定任意两个作业集J1和J2,如果调度器优先调度作业完成效率较高的作业集J1的话,调度器可以实现更小的平均作业完成时间。
将上述结论从两个作业集的情况下扩展到三个作业集的情况,需要先证明以下的引理。
引理1:假设任意两个作业集Ja和Jb各自包含了一批作业。在每个作业集中,作业已经按照最大程度打包好,因此作业集之间只能按照串行顺序执行。把串行执行的作业集Ja和Jb看作一个新的作业集,并用符号将其表示为Jc。用符号JCEa和JCEb分别表示作业集Ja和Jb的作业完成效率。可以确定对于新的作业集Jc存在以下关系:
min{JCEa,JCEb}<JCEc<max{JCEa,JCEb}
证明:用符号Na和Nb分别表示作业集Ja和Jb中的作业数量。用符号Ta和Tb分别表示作业集Ja和Jb的时间长度。根据作业完成效率的定义,我们有JCEa=Na/Ta和JCEb=Nb/Tb。对于作业集Jc来说,该作业集的作业数量是Na+Nb,该作业集的时间长度是Ta+Tb。特别地,对于作业集Jc来说,我们有JCEc=(Na+Nb)/(Ta+Tb)。假设作业集Ja比作业集Jb有更高的作业完成效率。由于JCEa>JCEb,不等式Na/Ta>Nb/Tb成立,进一步可以推导出不等式Na×Tb>Nb×Ta成立。因此可以推导出不等式(Na+Nb)×Tb>Nb×(Ta+Tb)成立。通过变换该不等式计算得到
JCEc=(Na+Nb)/(Ta+Tb)>Nb/Tb=JCEb
类似地,通过变换不等式Na×Tb>Nb×Ta,也可以推导出不等式
Na×(Ta+Tb)>(Na+Nb)×Ta成立。
JCEa=Na/Ta>(Na+Nb)/(Ta+Tb)=JCEc.
综上所述,当JCEa>JCEb条件成立时,对于新的作业集Jc来说,不等式JCEb<JCEc<JCEa成立。反之,如果JCEa<JCEb,不等式JCEa<JCEc<JCEb成立。引理1.3.1得证。
下面将定理1扩展到三个作业集的情况。在三个作业集的场景下,调度器应该按照作业完成效率由高到低的顺序来调度作业集。类似地,对于多个作业集的场景,可以递归地使用定理1得到平均作业完成时间最小的调度顺序,把上述定理总结为定理2。
定理2:给定N个作业集,并用符号表示为J1,J2,...,JN。在每个作业集中,作业已经按照最大程度打包好,因此作业集之间只能按照串行顺序执行。如果调度器按照作业完成效率由高到低的顺序来调度作业集,那么该调度器可以实现最小的平均作业完成时间。
最密作业集优先调度策略
根据定理2,我们设计了最密作业集优先调度(densest-jobset-first,DJSF)的作业调度方法。考虑到作业完成效率是作业数量和时间长度的比值,我们把作业完成效率看作作业集的“密度”。时间长度小、作业数量大的作业集会被认为是“密集”的;相反地,时间长度大、作业数量小的作业集被认为是“稀疏”的。DJSF算法会优先调度“密集”的作业集,如表4所示,以便提高单位时间内完成作业的数量。
表4最密作业集优先调度DJSF算法
Figure BDA0002613783670000191
表4显示了DJSF方法的主要步骤。该算法的输入是一批已经打包好作业的作业集。根据每个作业集的时间长度和作业数量,DJSF算法会计算每个作业集的完成效率。根据作业完成效率,DJSF方法会对作业集进行排序,并且优先给具有最高完成效率的作业集里的作业分配计算资源。DJSF方法的计算复杂性是O(N),其中N是作业集的数量。而最短作业优先调度方法的计算复杂性则是O(M),其中M是作业集的数量。在最坏的情况下,作业的总数等于作业集的总数,DJSF算法的计算复杂性和最短作业优先调度方法的计算复杂性是同一数量级的。
步骤5:输出作业调度顺序。
下面通过一个仿真集群来比较基于完成效率的作业调度方案、Tetris和最短作业优先(SJF)调度方法的性能。仿真实验是在一台配备了Intel(R)Core(TM)i7-4700MQ CPU2.40GHz的处理器和8GB内存的电脑上测试的。所选用的仿真数据来自于谷歌集群数据。谷歌集群数据记录了谷歌数据中心内部大数据分析作业的执行过程,包括了资源需求、作业执行状态、机器状态等。许多研究作业调度的学者通过重放谷歌集群数据中记录的作业执行过程,来验证调度算法的有效性。
从谷歌集群数据里提取了1000个作业。这1000个作业会被同时提交给仿真集群。不过,由于作业的执行时间很长,如果按照数据中的作业真实时间来执行仿真程序的话,那么运行仿真程序会需要很长时间。我们设置仿真程序运行时间要比谷歌集群数据的时间快10倍。这1000个作业的时间如图6分布。从该图可看出,测试所用作业的时间从600秒到750秒的范围内变化。执行时间在700s秒以上的作业数量更多。
在仿真实验中,我们用Tetris和最短作业优先方法作为对比方法。Tetris是一个适用于多资源类型的打包调度方法。Tetris通过计算机器和作业的匹配分数来最大程度的利用资源,避免产生资源碎片。匹配分数是机器可用资源和作业资源需求的向量内积。具有最大匹配分数的作业会被优先调度。我们也用到了最短作业优先的调度方法。在过去很长一段时间内,SJF方法一直被认为是实现最短平均作业完成时间的调度方法。
本发明通过仿真程序重放了1000个作业,并分别用Tetris、SJF和本发明的最密作业集优先(DJSF)调度方法来调度这1000个作业。在作业执行过程中,记录了集群的状态,如系统吞吐量、CPU利用率、内存利用率、磁盘空间利用率。也用Tetris和本发明的作业打包方法来打包作业,并且比较了它们的作业完成效率。
首先,我们评价Tetris、SJF和最密作业集优先(DJSF)方法调度作业时的系统吞吐量。系统吞吐量是指在一定时间内,系统完成的作业数量。用下面的式子计算系统吞吐量P。
Figure BDA0002613783670000201
其中,符号T*代表从作业提交时刻开始的一段时间,需要注意的是随着作业执行时间变化,系统吞吐量的值也发生变化;符号N*代表在T*的时间范围内,作业完成的数量。图7显示了随着作业不断执行完成,系统的吞吐量的变化趋势。从图7中可以看出,在作业提交后的相同一段时间内,三种调度方法所完成的作业数量是不同的。其中,完成作业数量最多的是DJSF方法,系统吞吐量也是最高的。Tetris的系统吞吐量是次高的,SJF方法的系统吞吐量是最低的。随着作业不断完成,Tetris和DJSF方法的系统吞吐量会逐渐减小,最终趋于相同。这意味着在所有作业完成的时刻,完成的作业数量都是1000,因此三种方法的系统吞吐量是一致的。此外,SJF方法的吞吐量保持稳定,这意味着在SJF方法的调度下,作业完成的速率几乎是相同。在前3000秒,DJSF方法的系统吞吐量是很高,其对应作业完成的速率是最大的。我们推断,这和基于作业完成效率的启发式规则有关。
下面分别用Tetris、SJF和DJSF方法来调度1000个作业的完成时间。Tetris所完成的作业数量会随着时间变化,作业完成时间的分布如图8所示。在刚开始调度作业时,Tetris以较快的速率完成作业。不过,这没有持续很长时间。相比之下,SJF方法完成作业的速度比较稳定,但是SJF方法完成作业的速率很低,一直保持在20个左右。SJF方法的作业完成时间的分布如图9所示。
从整体来看,Tetris方法的平均作业完成时间是1696.3秒;SJF方法的平均作业完成时间是1695.4秒。DJSF方法的完成作业的速率是最快的。如图10所示,大部分作业是在前1000秒内完成的。我们推断DJSF方法总是优先调度具有完成效率较高的作业,因此DJSF方法完成作业的速率很快。
不过,在1500秒后的调度过程中,DJSF方法完成作业速率变慢。我们推断这是因为当DJSF方法调度完具有完成效率较高的作业后,剩下的作业有较低的作业完成效率。不过,DJSF方法的平均作业完成时间是1302.2秒。总的来说,DJSF方法实现了更短的平均作业完成时间。这也验证了基于作业完成效率的调度方案不仅可以优化系统吞吐量,还可以减少作业完成时间。
进一步分析作业完成时间的加速比,本发明定义作业完成时间的加速比IR如下:
Figure BDA0002613783670000221
其中,符号JCTComparedmethods代表被比较方法的作业完成时间,符号JCTDJSF表示DJSF方法的作业完成时间。需要说明以下事实:并非DJSF方法所调度的1000个作业的作业完成时间一定都比其他方法更小。也就是说,个别作业的加速比不一定是正值。
图11(a)和图11(b)分别显示了DJSF方法相比于SJF方法和Tetris方法的加速比,从图中看出,不论是相对于SJF方法还是Tetris方法,有部分作业的加速比是负值。这意味着,DJSF所调度这些作业的完成时间要比SJF方法和Tetris方法更长。我们推断,这部分作业的完成效率可能很低,因此DJSF方法不会优先调度这些作业,直到其他具有较高完成效率的作业执行完成后,DJSF方法才会调度这些作业。不过,对于大部分作业来说,DJSF方法能够实现更小的完成时间,对应的加速比为正值。
下面从作业完成效率方面来比较打包方法:Tetris方法和基于k均值聚类的作业打包方法。为了实现高效的基于作业完成效率的调度方法,需要提高作业集的作业完成效率。因此,对作业集的完成效率的评价十分重要。在调度方案中,基于k均值聚类的作业打包方法以一种高“密度”的方式对作业进行打包,来最大程度地提高作业集的作业完成效率。图12以散点图的方式显示了所有作业集的作业完成效率。Tetris方法的作业完成效率在0.023到0.058范围内变化,其平均作业完成效率是0.0426。和Tetris方法相比,基于k均值聚类的作业打包方法可以实现更高的作业完成效率,它的平均作业完成效率是0.0662,比Tetris方法提高了55.4%。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。

Claims (9)

1.一种基于完成效率的数据中心作业调度方法,其特征在于,包括以下步骤:
步骤1:输入一批作业及作业的资源需求和作业完成时间;
步骤2:将所有作业按照作业完成时间进行对齐生成多个作业组;
步骤3:对多个所述作业组中的作业进行打包生成多个作业集;
步骤4:对打包后的作业集根据最密作业集优先调度方法进行调度;
步骤5:输出作业调度顺序。
2.根据权利要求1所述的方法,其特征在于,步骤2中将所有作业按照作业完成时间进行对齐生成多个作业组的方法是时间聚类算法。
3.根据权利要求2所述的方法,其特征在于:所述时间聚类算法具体为:
步骤2.1:预估聚类的作业组数;
步骤2.2:初始化每个作业组的中心点;
步骤2.3:计算一个作业到每个作业组中心点的距离,将该作业分到最近的那个作业组;
步骤2.4:在所有作业进行分组后,根据每个作业组里的作业完成时间重新计算作业组的中心点并更新,如果中心点不再更新,输出作业分组,否则,返回步骤2.3,重新对每个作业进行分组,所述作业组的中心点为一个作业组里所有作业的平均作业完成时间。
4.根据权利要求3所述的方法,其特征在于:步骤3中对多个所述作业组中的作业进行打包生成作业集的方法是:
步骤3.1:将所有作业组按照每组的平均作业完成时间递增排列;
步骤3.2:对每个作业组里的作业按照所需资源大小递增排列;
步骤3.3:根据集群资源剩余容量从平均作业完成时间小的作业组开始按照资源需求大小从小到大挑选多个作业打包成一个作业集,在一个作业集中剩余的资源容量不足以放下一个作业时,将作业组里未打包的作业按照所需资源大小从小到大根据集群资源剩余容量再打包到另外一个作业集中,以此类推,直到所有作业组中的作业都被打包到不同的作业集中。
5.根据权利要求3所述的方法,其特征在于,所述聚类的作业组数预估值为:
Figure FDA0002613783660000021
其中C为计算集群资源容量,Rm为第m个作业的资源需求大小,M为作业的数量。
6.根据权利要求1所述的方法,其特征在于,步骤4中所述最密作业集优先调度方法是指:
步骤4.1:输入一批已经打包好的多个作业集;
步骤4.2:根据每个作业集的时间长度和作业数量,计算每个作业集的完成效率,所述作业集的完成效率是指作业集中的作业数量和时间长度的比值,作业集的时间长度是指该作业集中最长作业的作业完成时间;
步骤4.3:根据作业完成效率,对作业集进行排序;
步骤4.4:优先给具有最高完成效率的作业集里的作业分配计算资源。
7.一种基于完成效率的数据中心作业调度系统,其特征在于:包括处理器,以及与所述处理器连接的存储器,所述存储器存储有一种基于完成效率的数据中心作业调度方法的程序,所述程序执行时实现上述权利要求1~6任一项所述方法的步骤。
8.一种计算机可读介质,存储计算机程序,所述计算机程序可被处理器执行以实现权利要求1~6任一项所述方法的步骤。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1~6任一项所述方法的步骤。
CN202010763695.4A 2020-08-01 2020-08-01 基于完成效率的数据中心作业调度方法及系统 Active CN111782379B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010763695.4A CN111782379B (zh) 2020-08-01 2020-08-01 基于完成效率的数据中心作业调度方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010763695.4A CN111782379B (zh) 2020-08-01 2020-08-01 基于完成效率的数据中心作业调度方法及系统

Publications (2)

Publication Number Publication Date
CN111782379A true CN111782379A (zh) 2020-10-16
CN111782379B CN111782379B (zh) 2023-01-31

Family

ID=72765607

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010763695.4A Active CN111782379B (zh) 2020-08-01 2020-08-01 基于完成效率的数据中心作业调度方法及系统

Country Status (1)

Country Link
CN (1) CN111782379B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180101404A1 (en) * 2016-10-11 2018-04-12 Microsoft Technology Licensing, Llc Resource and latency estimation-based scheduling
US20180285766A1 (en) * 2017-03-30 2018-10-04 Intel Corporation Diagnosing slow tasks in distributed computing
WO2019193570A1 (en) * 2018-04-07 2019-10-10 Tata Consultancy Services Limited Batch jobs execution time prediction using distinct service demand of threads and instantaneous cpu utilization
CN110619231A (zh) * 2019-08-26 2019-12-27 北京航空航天大学 一种基于MapReduce的差分可辨性k原型聚类方法
CN111045800A (zh) * 2019-11-14 2020-04-21 武汉纺织大学 一种基于短作业优先的优化gpu性能的方法及系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180101404A1 (en) * 2016-10-11 2018-04-12 Microsoft Technology Licensing, Llc Resource and latency estimation-based scheduling
US20180285766A1 (en) * 2017-03-30 2018-10-04 Intel Corporation Diagnosing slow tasks in distributed computing
WO2019193570A1 (en) * 2018-04-07 2019-10-10 Tata Consultancy Services Limited Batch jobs execution time prediction using distinct service demand of threads and instantaneous cpu utilization
CN110619231A (zh) * 2019-08-26 2019-12-27 北京航空航天大学 一种基于MapReduce的差分可辨性k原型聚类方法
CN111045800A (zh) * 2019-11-14 2020-04-21 武汉纺织大学 一种基于短作业优先的优化gpu性能的方法及系统

Also Published As

Publication number Publication date
CN111782379B (zh) 2023-01-31

Similar Documents

Publication Publication Date Title
EP3770774A1 (en) Control method for household appliance, and household appliance
Sul et al. Parallelizing BLAST and SOM algorithms with MapReduce-MPI library
CN112416585B (zh) 面向深度学习的gpu资源管理与智能化调度方法
CN103500123B (zh) 异构环境中并行计算调度方法
Djigal et al. Task scheduling for heterogeneous computing using a predict cost matrix
Sun et al. Scheduling parallel tasks under multiple resources: List scheduling vs. pack scheduling
CN109240795A (zh) 一种适用于超融合it基础设施的云计算资源池模型的资源调度方法
Legrand et al. Adapting batch scheduling to workload characteristics: What can we expect from online learning?
Adcock et al. Evaluating OpenMP tasking at scale for the computation of graph hyperbolicity
Li et al. Chemical reaction optimization for heterogeneous computing environments
CN110275765B (zh) 基于分支dag依赖的数据并行作业调度方法
Henzinger et al. Scheduling large jobs by abstraction refinement
US20230316187A1 (en) Optimization method for large-scale cloud service processes
Engström et al. PageRank for networks, graphs, and Markov chains
Mirsoleimani et al. A parallel memetic algorithm on GPU to solve the task scheduling problem in heterogeneous environments
CN111782379B (zh) 基于完成效率的数据中心作业调度方法及系统
Vella et al. A simulation framework for scheduling performance evaluation on CPU-GPU heterogeneous system
Daoud et al. Efficient compile-time task scheduling for heterogeneous distributed computing systems
Trifunovic Parallel algorithms for hypergraph partitioning
Liu et al. Evaluating task scheduling in hadoop-based cloud systems
Izakian et al. Performance comparison of six efficient pure heuristics for scheduling meta-tasks on heterogeneous distributed environments
Sun et al. ParSSSE: An adaptive parallel state space search engine
CN106874215B (zh) 一种基于Spark算子的序列化存储优化方法
Katrawi et al. Straggler handling approaches in mapreduce framework: a comparative study.
Behnamian Parallel Jobs Scheduling with a Specific Due Date: Asemi-definite Relaxation-based Algorithm

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
GR01 Patent grant
GR01 Patent grant