CN105373430A - 一种动态分配编译机的系统及其方法 - Google Patents
一种动态分配编译机的系统及其方法 Download PDFInfo
- Publication number
- CN105373430A CN105373430A CN201510658136.6A CN201510658136A CN105373430A CN 105373430 A CN105373430 A CN 105373430A CN 201510658136 A CN201510658136 A CN 201510658136A CN 105373430 A CN105373430 A CN 105373430A
- Authority
- CN
- China
- Prior art keywords
- task
- compiled
- compiling
- machine
- compiling machine
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/505—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/47—Retargetable compilers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/5033—Allocation 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 data affinity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5013—Request control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Abstract
本发明公开了一种动态分配编译机的系统及其方法。方法包括:发起待编译任务,并将待编译任务进行存储,进而将待编译任务标示为等待状态,以等待编译机进行编译;获取编译命令,判断编译机的当前编译状态,并根据当前编译状态来设置待编译任务为继续等待还是进入编译阶段,其中,当设置为继续等待时,将继续存储待编译任务,当设置为进入编译阶段时,将待编译任务发送到编译机中,由编译机对待编译任务进行编译。通过上述方式,本发明能够自动分配编译任务,实现编译机的高效使用及降低出错率。
Description
技术领域
本发明涉及编译机技术领域,尤其是涉及一种动态分配编译机的系统及其方法。
背景技术
如今智能终端正在高速发展,并越来越普及,智能终端上运行的软件程序发布频率也要求越来越高。软件发布需要编译机来完成,如何在有限的编译机资源情况下实现高效的软件发布是我们一直在探讨的问题。
目前大多数厂商使用的还是静态配置编译机的方式。静态配置编译机的方式具体为:把现有的编译机部署在集成系统(比如Jenkins等软件集成系统)中,没有使用数据库维护,每次发布软件时需要手动选择某一台编译机。该种方式有如下弊端:编译机使用效率低以及需要人工干预,造成成本较高及出错率高。
发明内容
本发明主要解决的技术问题是提供一种动态分配编译机的系统及其方法,能够自动分配编译任务,实现编译机的高效使用及降低出错率。
为解决上述技术问题,本发明采用的一个技术方案是:提供一种动态分配编译机的方法,该方法包括:发起待编译任务,并将待编译任务进行存储,进而将待编译任务标示为等待状态,以等待编译机进行编译;获取编译命令,判断编译机的当前编译状态,并根据当前编译状态来设置待编译任务为继续等待还是进入编译阶段,其中,当设置为继续等待时,将继续存储待编译任务,当设置为进入编译阶段时,将待编译任务发送到编译机中,由编译机对待编译任务进行编译。
其中,方法还包括:获取编译机编译任务的能力,其中能力包括编译机能够同时编译相同类型的任务的第一数量阈值以及最多能同时编译的任务的第二数量阈值,其中,第一数量阈值小于或等于第二数量阈值;判断编译机的当前编译状态的步骤包括:第一次判断编译机当前编译的任务的数量是否大于或等于第一数量阈值,并在第一判断的结果为否时,将待编译任务设置为进入编译阶段,并进一步将待编译任务发送到编译机中。
其中,方法还包括:在第一次判断的结果为是时,第二次判断编译机当前编译的任务的数量是否大于或等于第二数量阈值,并在第二次判断的结果为是时,设置待编译任务为继续等待。
其中,方法还包括:在第二次判断的结果为否时,第三次判断编译机当前编译的任务是否与待编译任务的类型相同,并在第三次判断的结果为否时将待编译任务设置为进入编译阶段,并进一步将待编译任务发送到编译机中。
其中,方法还包括:在第三次判断的结果为是时,第四次判断与待编译任务相同类型的任务的数量是否大于或等于第一数量阈值,并在第四次判断的结果为否时将待编译任务设置为进入编译阶段,并进一步将待编译任务发送到编译机中,在第四次判断的结果为是时,设置待编译任务为继续等待。
为解决上述技术问题,本发明采用的另一个技术方案是:提供一种动态分配编译机的系统,该系统包括:客制化装置,用于发起待编译任务,并进一步发起编译命令;数据库,用于存储待编译任务;分配装置,用于将存储在数据库中的待编译任务标示为等待状态,以等待编译机进行编译,并在获取到编译命令时,判断编译机的当前编译状态,并根据当前编译状态来设置待编译任务为继续等待还是进入编译阶段,其中,当设置为继续等待时,数据库将继续存储待编译任务,当设置为进入编译阶段时,分配装置将待编译任务发送到编译机中,由编译机对待编译任务进行编译。
其中,分配装置进一步包括:获取单元,用于获取编译机编译任务的能力,其中能力包括编译机能够同时编译相同类型的任务的第一数量阈值以及最多能同时编译的任务的第二数量阈值,其中,第一数量阈值小于或等于第二数量阈值;第一判断单元,用于判断编译机当前编译的任务的数量是否大于或等于第一数量阈值;分配单元,在第一判断单元判断的结果为否时,将待编译任务设置为进入编译阶段,并进一步将待编译任务发送到编译机中。
其中,分配装置进一步包括:第二判断单元,用于在第一判断单元判断的结果为是时,进一步判断编译机当前编译的任务的数量是否大于或等于第二数量阈值;分配单元在第二判断单元判断的结果为是时,设置待编译任务为继续等待。
其中,分配装置进一步包括:第三判断单元,用于在第二判断单元判断的结果为否时,进一步判断编译机当前编译的任务是否与待编译任务的类型相同;分配单元在第三判断单元判断的结果为否时将待编译任务设置为进入编译阶段,并进一步将待编译任务发送到编译机中。
其中,分配装置进一步包括:第四判断单元,用于在第三判断单元判断的结果为是时,进一步判断与待编译任务相同类型的任务的数量是否大于或等于第一数量阈值;分配单元在第四判断单元判断的结果为否时将待编译任务设置为进入编译阶段,并进一步将待编译任务发送到编译机中,在第四判断单元判断的结果为是时,设置待编译任务为继续等待。
本发明的有益效果是:区别于现有技术的情况,本发明的动态分配编译机的方法具体为:首先发起待编译任务,并将待编译任务进行存储,进而将待编译任务标示为等待状态,以等待编译机进行编译,获取编译命令,并判断编译机的当前编译状态,进一步根据当前编译状态来设置待编译任务为继续等待还是进入编译阶段,其中,当设置为继续等待时,将继续存储待编译任务,当设置为进入编译阶段时,将待编译任务发送到编译机中,由编译机对待编译任务进行编译。因此,本发明能够根据编译机的当前编译状态自动分配编译任务,实现编译机的高效使用及降低出错率。
附图说明
图1是本发明实施例提供的一种动态分配编译机的方法的流程图;
图2是本发明实施例提供的另一种动态分配编译机的方法的流程图;
图3是本发明实施例提供的又一种动态分配编译机的方法的流程图;
图4是本发明实施例提供的一种动态分配编译机的系统的结构示意图。
具体实施方式
请参阅图1,图1是本发明实施例提供的一种动态分配编译机的方法的流程图。如图1所示,本实施例的方法包括以下步骤:
步骤S1:发起待编译任务,并将待编译任务进行存储,进而将待编译任务标示为等待状态,以等待编译机进行编译。
具体的,预设两个字段属性值,分别为auto_flag和wait_flag,其中,auto_flag和wait_flag的值的设置包括以下两种情况:
第一种情况:auto_flag的值为1时表示该待待任务处于编译状态,即进入编译阶段,默认为0;wait_flag的值为1时表示该待任务处于等待状态,默认为0。
第二种情况:设置auto_flag的值为0时表示该待任务处于编译状态,默认为1;wait_flag的值为0时表示该待任务处于等待状态,默认为1。
本实施例中,为了方便描述,下文关于auto_flag和wait_flag的值所代表的含义都将以第一种情况为例说明。
因此本步骤首先将待编译任务的auto_flag的值设置为0,且wait_flag的值设置为1,以标示为等待状态。
步骤S2:获取编译命令,判断编译机的当前编译状态,并根据当前编译状态来设置待编译任务为继续等待还是进入编译阶段,其中,当设置为继续等待时,将继续存储待编译任务,当设置为进入编译阶段时,将待编译任务发送到编译机中,由编译机对待编译任务进行编译。
本实施例还进一步获取编译机编译任务的能力,其中能力包括编译机能够同时编译相同类型的任务的第一数量阈值以及最多能同时编译的任务的第二数量阈值,其中,第一数量阈值小于或等于第二数量阈值。
其中步骤S2的具体判断过程请参阅图2,图2是本发明实施例提供的另一种动态分配编译机的方法的流程图。如图2所示,步骤S2具体包括以下判断步骤:
步骤S21:判断编译机当前编译的任务的数量是否大于或等于第一数量阈值。
本步骤中,在判断的结果为否时跳转到步骤S22,在判断的结果为是时跳转到步骤S23。
步骤S22:将待编译任务设置为进入编译阶段,并进一步将待编译任务发送到编译机中。
具体的,将待编译任务的auto_flag的值设置为1,且wait_flag的值设置为0,以标示为进入编译阶段。
步骤S23:判断编译机当前编译的任务的数量是否大于或等于第二数量阈值。
本步骤中,在判断的结果为是时跳转到步骤S24,在判断的结果为否时跳转到步骤S25。
步骤S24:设置待编译任务为继续等待。
具体为设置包括两种情况:
第一种情况:判断到编译机当前编译的任务的数量大于第二数量阈值的数量为大于或等于2,则将待编译任务此时的等待状态设置为睡眠阶段,即将待编译任务的auto_flag的值设置为0,且wait_flag的值设置为0。直到编译机当前编译的任务的数量大于第二数量阈值的数量为1,再将待编译任务的auto_flag的值设置为0,且wait_flag的值设置为1。
第二种情况:若编译机当前编译的任务的数量大于第二数量阈值的数量为1,将待编译任务的auto_flag的值设置为0,且wait_flag的值设置为1。
本步骤中,还进一步设置一等待时间,例如可以为2分钟,若等待时间到则再重新进行扫描和判断。
步骤S25:判断编译机当前编译的任务是否与待编译任务的类型相同。
本步骤中,在判断的结果为否时跳转到步骤S26,在判断的结果为是时跳转到步骤S27。
步骤S26:将待编译任务设置为进入编译阶段,并进一步将待编译任务发送到编译机中。
具体的,将待编译任务的auto_flag的值设置为1,且wait_flag的值设置为0,以标示为进入编译阶段。
步骤S27:判断与待编译任务相同类型的任务的数量是否大于或等于第一数量阈值。
本步骤中,在判断的结果为否时跳转到步骤S28,在判断的结果为是时跳转到步骤S29。
步骤S28:将待编译任务设置为进入编译阶段,并进一步将待编译任务发送到编译机中。
具体的,将待编译任务的auto_flag的值设置为1,且wait_flag的值设置为0,以标示为进入编译阶段。
步骤S29:设置待编译任务为继续等待。
其中,具体设置包括以下两种情况:
第一种情况:若步骤S27判断到与待编译任务相同类型的任务的数量大于第一数量阈值的数量为大于或等于2,则将待编译任务此时的等待状态设置为睡眠阶段,将待编译任务的auto_flag的值设置为0,且wait_flag的值设置为0。直到与待编译任务相同类型的任务的数量大于第一数量阈值的数量为1,再将待编译任务的auto_flag的值设置为0,且wait_flag的值设置为1。
第二种情况:若步骤S27判断到与待编译任务相同类型的任务的数量大于第一数量阈值的数量为1,则将待编译任务的auto_flag的值设置为0,且wait_flag的值设置为1。
本步骤中,还进一步设置一等待时间,例如可以为2分钟,若等待时间到则再重新进行扫描和判断。
因此,本实施例可以动态的分配待编译任务,无需人工干预,首先高效的编译以及降低出错率。
本实施例中,在步骤S1存储待编译任务时,还进一步建立三个数据表,分别为t_product、t_web_host_info、t_web_create_perso这三张表,分别记录项目信息、编译机信息、编译任务信息。其中,项目信息包括编译的任务的类型。编译机信息包括各编译机的IP地址、编译机的名称、编译的任务类型以及目前剩余的编译空间等。编译任务信息包括正在工作的编译机的信息和其编译的任务信息。
在步骤S2设置编译任务状态之前需要选择编译机,具体过程为:首先判断是否有空余的编译机。若判断到没有空余的编译机,则随机选择一个编译机与步骤S1存储的待编译任务关联,即将步骤S1存储的待编译任务发送到随机选择的编译机中;或者进一步判断正在工作的编译机的编译任务,并将步骤S1存储的待编译任务发送到编译任务较少的编译机中。其中,优选发送到与待编译任务同类型的编译任务较少的编译机中。
若判断到有空余的编译机,则进一步判断空余的编译机是否大于或等于两个,若大于或等于两个,则随机选择一个对待编译任务进行编译,若只有一个,就选择该编译机对待编译任务进行编译。
其中,在给待编译任务选择好对应的编译机之后,都需要获取选择的编译机的IP地址,然后才将待编译任务发送到对应的编译机中。
因此本实施例可以动态的分配编译机和动态的分配待编译任务,实现编译的高效率以及降低由于人工参与的出错率。
请参阅图3,图3是本发明实施例提供的又一种动态分配编译机的方法的流程图。值得注意的是,本实施例举例编译机能够同时编译相同的任务的数量为1个,能够同时编译任务的最大数量为2个。
如图3所示,本实施例的方法包括以下步骤:
步骤S30:发起待任务。其中待任务为1,2,3,…n个,n为自然数。
步骤S31:判断是否有空余的编译机。并在判断的结果为否是跳转到步骤S32,在判断的结果为否时跳转到步骤S33。
步骤S32:选择其中一台编译机,其中选择的原则如前文所述,在此不再赘述。然后执行步骤S35,获取编译机的IP地址。
步骤S33:判断空余的编译机是否大于或等于2台。在判断的结果为是时跳转到步骤S34,在判断的结果为否时跳转到步骤S35,
步骤S34:选择其中一台编译机。然后执行步骤S35,获取编译机的IP地址。
步骤S35:获取编译机的IP地址。
步骤S36:将待任务设置为等待状态。其中步骤S36还可以设置在步骤S30和步骤31之间。
步骤S37:扫描编译机的编译状态。具体就是扫描编译机的在编译任务的数量。
步骤S38:判断在编译任务是否大于两个。其中,在判断的结果为是时跳转到步骤S39,在判断的结果为否时跳转到步骤S40。
步骤S39:设置为等待状态,并且等待时间为2分钟。若等待时间达到2分钟,则返回到步骤S37,重新扫描编译机的编译状态。
其中,步骤S39的待编译任务的等待状态的设置为auto_flag的值设置为0,且wait_flag的值设置为0。
步骤S40:判断在编译任务是否为两个。其中,在判断的结果为否时跳转到步骤S41,在判断的结果为是时跳转到步骤S42。
步骤S41:设置进入编译阶段,并将任务发送到对应的编译机中。其中,步骤S41的待编译任务的设置为auto_flag的值设置为1,且wait_flag的值设置为0。
步骤S42:判断任务类型是否相同,并在判断的结果为是时跳转到步骤S39,在判断的结果为否是跳转到步骤S41。
其中,本步骤跳转到步骤S39时,步骤S39的设置为auto_flag的值设置为0,且wait_flag的值设置为1。
请参阅图4,图4是本发明实施例提供的一种动态分配编译机的系统的结构示意图。如图4所示,本实施例的动态分配编译机的系统10包括客制化装置11、数据库12以及分配装置13。
其中,客制化装置11用于发起待编译任务,如图4所示的待编译任务1、待编译任务2…待编译任务n(n为自然数),并进一步发起编译命令。
数据库12用于存储待编译任务。并且数据库中存储有三个数据表,分别为t_product、t_web_host_info、t_web_create_perso这三张表,分别记录项目信息、编译机信息、编译任务信息。其中,项目信息、编译机信息以及编译任务信息包含的内容分别如前文所述,在此不再赘述。
分配装置13用于将存储在数据库12中的待编译任务标示为等待状态,以等待编译机进行编译,并在获取到编译命令时,判断编译机100的当前编译状态,并根据当前编译状态来设置待编译任务为继续等待还是进入编译阶段,其中,当设置为继续等待时,数据库12将继续存储待编译任务,当设置为进入编译阶段时,分配装置13将待编译任务发送到编译机100中,由编译机100对待编译任务进行编译。
其中设置待编译任务为等待状态和进入编译阶段的具体方法为:预设两个字段属性值,分别为auto_flag和wait_flag,其中,auto_flag和wait_flag的值的设置包括以下两种情况:
第一种情况:auto_flag的值为1时表示该待任务处于编译状态,即进入编译阶段,默认为0;wait_flag的值为1时表示该待任务处于等待状态,默认为0。
第二种情况:设置auto_flag的值为0时表示该待任务处于编译状态,默认为1;wait_flag的值为0时表示该待任务处于等待状态,默认为1。
本实施例中,为了方便描述,下文关于auto_flag和wait_flag的值所代表的含义都将以第一种情况为例说明。
因此分配装置13首先将存储在数据库12中的待编译任务的auto_flag的值设置为0,且wait_flag的值设置为1,以标示为等待状态。当设置为继续等待时,同样设置auto_flag的值设置为0,且wait_flag的值设置为1,或者auto_flag的值设置为0,且wait_flag的值设置为0。当设置为进入编译阶段时,将设置auto_flag的值设置为1,且wait_flag的值设置为0。
可选的,分配装置13进一步包括获取单元131、判断单元132以及分配单元133。其中,获取单元131用于获取编译机100编译任务的能力,其中能力包括编译机100能够同时编译相同类型的任务的第一数量阈值以及最多能同时编译的任务的第二数量阈值,其中,第一数量阈值小于或等于第二数量阈值。判断单元132用于判断编译机100当前编译的任务的数量是否大于或等于第一数量阈值。分配单元133在判断单元132判断的结果为否时,将待编译任务设置为进入编译阶段,并进一步将待编译任务发送到编译机100中。具体设置为将待编译任务的auto_flag的值设置为1,且wait_flag的值设置为0,以标示为进入编译阶段。
进一步的,分配装置13还包括判断单元134。判断单元134用于在判断单元132判断的结果为是时,进一步判断编译机100当前编译的任务的数量是否大于或等于第二数量阈值。分配单元133在判断单元134判断的结果为是时,设置待编译任务为继续等待。具体为设置包括两种情况:
第一种情况:判断到编译机100当前编译的任务的数量大于第二数量阈值的数量为大于或等于2,则将待编译任务此时的等待状态设置为睡眠阶段,即将待编译任务的auto_flag的值设置为0,且wait_flag的值设置为0。直到编译机100当前编译的任务的数量大于第二数量阈值的数量为1,再将待编译任务的auto_flag的值设置为0,且wait_flag的值设置为1。
第二种情况:若编译机100当前编译的任务的数量大于第二数量阈值的数量为1,将待编译任务的auto_flag的值设置为0,且wait_flag的值设置为1。
本实施例中,还进一步设置一等待时间,例如可以为2分钟,若等待时间到则再重新进行扫描和判断。
进一步的,分配装置13还包括判断单元135,用于在判断单元134判断的结果为否时,进一步判断编译机100当前编译的任务是否与待编译任务的类型相同。分配单元133在判断单元135判断的结果为否时将待任务设置为进入编译阶段,并进一步将待编译任务发送到编译机100中。具体的,将待编译任务的auto_flag的值设置为1,且wait_flag的值设置为0,以标示为进入编译阶段。
进一步的,分配装置13还包括判断单元136,用于在判断单元135判断的结果为是时,进一步判断与待编译任务相同类型的任务的数量是否大于或等于第一数量阈值。分配单元133在判断单元136判断的结果为否时将待编译任务设置为进入编译阶段,并进一步将待编译任务发送到编译机100中。具体的,将待编译任务的auto_flag的值设置为1,且wait_flag的值设置为0,以标示为进入编译阶段。
分配单元133在判断单元136判断的结果为是时,设置待编译任务为继续等待。其中,具体设置包括以下两种情况:
第一种情况:若判断单元136判断到与待编译任务相同类型的任务的数量大于第一数量阈值的数量为大于或等于2,则将待编译任务此时的等待状态设置为睡眠阶段,将待编译任务的auto_flag的值设置为0,且wait_flag的值设置为0。直到与待编译任务相同类型的任务的数量大于第一数量阈值的数量为1,再将待编译任务的auto_flag的值设置为0,且wait_flag的值设置为1。
第二种情况:若判断单元136判断到与待编译任务相同类型的任务的数量大于第一数量阈值的数量为1,则将待编译任务的auto_flag的值设置为0,且wait_flag的值设置为1。
本实施例中,还进一步设置一等待时间,例如可以为2分钟,若等待时间到则再重新进行扫描和判断。
综上所述,本发明的动态分配编译机的方案是在根据编译当前编译任务的情况进行动态分配的,不需要每次的编译任务都具体指定编译机。进一步的,编译任务在编译过程中是持续的,一个任务完成之后会自动扫描到下一个任务,在有编译任务排队的情况下,编译机不会出现长时间空闲资源浪费的情况。进一步的,一台编译机可支持同时进行两个或者两个以上的编译任务。多个编译任务可以在不同的编译机上同时进行,互不干扰。进一步的,整个编译过程不需要手动进行任何操作,没有人工干预,出错率降低。进一步的,编译任务只要提交之后就会开始自动寻找编译机,对于大量编译任务同时进行的情况,编译机的效率有明显的提高,可以解决一台编译机只能同时处理一个编译任务的问题。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种动态分配编译机的方法,其特征在于,所述方法包括:
发起待编译任务,并将所述待编译任务进行存储,进而将所述待编译任务标示为等待状态,以等待所述编译机进行编译;
获取编译命令,判断所述编译机的当前编译状态,并根据所述当前编译状态来设置所述待编译任务为继续等待还是进入编译阶段,其中,当设置为继续等待时,将继续存储所述待编译任务,当设置为进入编译阶段时,将所述待编译任务发送到所述编译机中,由所述编译机对所述待编译任务进行编译。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述编译机编译任务的能力,其中所述能力包括所述编译机能够同时编译相同类型的任务的第一数量阈值以及最多能同时编译的任务的第二数量阈值,其中,所述第一数量阈值小于或等于所述第二数量阈值;
所述判断所述编译机的当前编译状态的步骤包括:
第一次判断所述编译机当前编译的任务的数量是否大于或等于所述第一数量阈值,并在第一判断的结果为否时,将所述待编译任务设置为进入编译阶段,并进一步将所述待编译任务发送到所述编译机中。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:在第一次判断的结果为是时,第二次判断所述编译机当前编译的任务的数量是否大于或等于第二数量阈值,并在第二次判断的结果为是时,设置所述待编译任务为继续等待。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:在第二次判断的结果为否时,第三次判断所述编译机当前编译的任务是否与所述待编译任务的类型相同,并在第三次判断的结果为否时将所述待编译任务设置为进入编译阶段,并进一步将所述待编译任务发送到所述编译机中。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:在第三次判断的结果为是时,第四次判断与所述待编译任务相同类型的任务的数量是否大于或等于所述第一数量阈值,并在第四次判断的结果为否时将所述待编译任务设置为进入编译阶段,并进一步将所述待编译任务发送到所述编译机中,在第四次判断的结果为是时,设置所述待编译任务为继续等待。
6.一种动态分配编译机的系统,其特征在于,所述系统包括:
客制化装置,用于发起待编译任务,并进一步发起编译命令;
数据库,用于存储所述待编译任务;
分配装置,用于将存储在所述数据库中的待编译任务标示为等待状态,以等待所述编译机进行编译,并在获取到所述编译命令时,判断所述编译机的当前编译状态,并根据所述当前编译状态来设置所述待编译任务为继续等待还是进入编译阶段,其中,当设置为继续等待时,所述数据库将继续存储所述待编译任务,当设置为进入编译阶段时,所述分配装置将所述待编译任务发送到所述编译机中,由所述编译机对所述待编译任务进行编译。
7.根据权利要求6所述的系统,其特征在于,所述分配装置进一步包括:
获取单元,用于获取所述编译机编译任务的能力,其中所述能力包括所述编译机能够同时编译相同类型的任务的第一数量阈值以及最多能同时编译的任务的第二数量阈值,其中,所述第一数量阈值小于或等于所述第二数量阈值;
第一判断单元,用于判断所述编译机当前编译的任务的数量是否大于或等于所述第一数量阈值;
分配单元,在所述第一判断单元判断的结果为否时,将所述待编译任务设置为进入编译阶段,并进一步将所述待编译任务发送到所述编译机中。
8.根据权利要求7所述的系统,其特征在于,所述分配装置进一步包括:
第二判断单元,用于在所述第一判断单元判断的结果为是时,进一步判断所述编译机当前编译的任务的数量是否大于或等于第二数量阈值;
所述分配单元在所述第二判断单元判断的结果为是时,设置所述待编译任务为继续等待。
9.根据权利要求8所述的系统,其特征在于,所述分配装置进一步包括:
第三判断单元,用于在所述第二判断单元判断的结果为否时,进一步判断所述编译机当前编译的任务是否与所述待编译任务的类型相同;
所述分配单元在所述第三判断单元判断的结果为否时将所述待编译任务设置为进入编译阶段,并进一步将所述待编译任务发送到所述编译机中。
10.根据权利要求9所述的系统,其特征在于,所述分配装置进一步包括:
第四判断单元,用于在所述第三判断单元判断的结果为是时,进一步判断与所述待编译任务相同类型的任务的数量是否大于或等于所述第一数量阈值;
所述分配单元在第四判断单元判断的结果为否时将所述待编译任务设置为进入编译阶段,并进一步将所述待编译任务发送到所述编译机中,在第四判断单元判断的结果为是时,设置所述待编译任务为继续等待。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510658136.6A CN105373430A (zh) | 2015-10-13 | 2015-10-13 | 一种动态分配编译机的系统及其方法 |
US15/318,639 US10810048B2 (en) | 2015-10-13 | 2016-06-08 | Systems and methods for dynamic allocation of compilation machines |
PCT/CN2016/085248 WO2017063374A1 (zh) | 2015-10-13 | 2016-06-08 | 一种动态分配编译机的系统及其方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510658136.6A CN105373430A (zh) | 2015-10-13 | 2015-10-13 | 一种动态分配编译机的系统及其方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105373430A true CN105373430A (zh) | 2016-03-02 |
Family
ID=55375655
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510658136.6A Pending CN105373430A (zh) | 2015-10-13 | 2015-10-13 | 一种动态分配编译机的系统及其方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10810048B2 (zh) |
CN (1) | CN105373430A (zh) |
WO (1) | WO2017063374A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017063374A1 (zh) * | 2015-10-13 | 2017-04-20 | 惠州Tcl移动通信有限公司 | 一种动态分配编译机的系统及其方法 |
CN111610977A (zh) * | 2020-05-19 | 2020-09-01 | 腾讯科技(深圳)有限公司 | 一种编译方法和相关装置 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11157338B2 (en) | 2019-10-30 | 2021-10-26 | International Business Machines Corporation | Throttling using message partitioning and buffering |
CN113692572A (zh) * | 2020-01-21 | 2021-11-23 | 深圳元戎启行科技有限公司 | 编译方法和装置、计算机设备、计算机可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070234320A1 (en) * | 2006-03-31 | 2007-10-04 | Ebay Inc. | Distributed parallel build system |
CN101290581A (zh) * | 2008-05-16 | 2008-10-22 | 北京星网锐捷网络技术有限公司 | 编译系统及方法 |
US20120246107A1 (en) * | 2009-06-01 | 2012-09-27 | International Business Machines Corporation | System and method for efficient allocation of resources in virtualized desktop environments |
CN103176774A (zh) * | 2011-12-21 | 2013-06-26 | 中国移动通信集团广东有限公司 | 应用程序的编译方法、装置以及系统 |
CN103440136A (zh) * | 2013-09-05 | 2013-12-11 | 迈普通信技术股份有限公司 | 分布式编译的方法及系统 |
CN104123184A (zh) * | 2013-04-28 | 2014-10-29 | 国际商业机器公司 | 一种用于为构建过程中的任务分配资源的方法和系统 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5440747A (en) * | 1993-09-27 | 1995-08-08 | Hitachi America, Ltd. | Data processor with control logic for storing operation mode status and associated method |
WO1996038795A1 (en) * | 1995-05-30 | 1996-12-05 | Corporation For National Research Initiatives | System for distributed task execution |
US5970249A (en) | 1997-10-06 | 1999-10-19 | Sun Microsystems, Inc. | Method and apparatus for performing byte-code optimization during pauses |
US7203747B2 (en) * | 2001-05-25 | 2007-04-10 | Overture Services Inc. | Load balancing system and method in a multiprocessor system |
US7328294B2 (en) * | 2001-12-03 | 2008-02-05 | Sun Microsystems, Inc. | Methods and apparatus for distributing interrupts |
US8037474B2 (en) * | 2005-09-27 | 2011-10-11 | Sony Computer Entertainment Inc. | Task manager with stored task definition having pointer to a memory address containing required code data related to the task for execution |
WO2011110026A1 (zh) * | 2010-10-29 | 2011-09-15 | 华为技术有限公司 | 一种实现数据中心资源负载均衡的方法及装置 |
JP5742971B2 (ja) * | 2011-06-29 | 2015-07-01 | 日本電気株式会社 | マルチプロセッサシステム、および、その省エネルギー化方法 |
CN103019772A (zh) * | 2012-11-23 | 2013-04-03 | 东方网力科技股份有限公司 | 一种软件开发中的自动化编译方法及系统 |
CN104657204B (zh) * | 2013-11-22 | 2018-05-04 | 华为技术有限公司 | 短任务处理方法、装置及操作系统 |
US20150178125A1 (en) * | 2013-12-23 | 2015-06-25 | Oracle International Corporation | Reducing synchronization of tasks in latency-tolerant task-parallel systems |
US9424077B2 (en) * | 2014-11-14 | 2016-08-23 | Successfactors, Inc. | Throttle control on cloud-based computing tasks utilizing enqueue and dequeue counters |
US10049126B2 (en) * | 2015-09-06 | 2018-08-14 | Mellanox Technologies Tlv Ltd. | Cuckoo hashing with selectable hash |
CN105373430A (zh) * | 2015-10-13 | 2016-03-02 | 惠州Tcl移动通信有限公司 | 一种动态分配编译机的系统及其方法 |
-
2015
- 2015-10-13 CN CN201510658136.6A patent/CN105373430A/zh active Pending
-
2016
- 2016-06-08 WO PCT/CN2016/085248 patent/WO2017063374A1/zh active Application Filing
- 2016-06-08 US US15/318,639 patent/US10810048B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070234320A1 (en) * | 2006-03-31 | 2007-10-04 | Ebay Inc. | Distributed parallel build system |
CN101290581A (zh) * | 2008-05-16 | 2008-10-22 | 北京星网锐捷网络技术有限公司 | 编译系统及方法 |
US20120246107A1 (en) * | 2009-06-01 | 2012-09-27 | International Business Machines Corporation | System and method for efficient allocation of resources in virtualized desktop environments |
CN103176774A (zh) * | 2011-12-21 | 2013-06-26 | 中国移动通信集团广东有限公司 | 应用程序的编译方法、装置以及系统 |
CN104123184A (zh) * | 2013-04-28 | 2014-10-29 | 国际商业机器公司 | 一种用于为构建过程中的任务分配资源的方法和系统 |
CN103440136A (zh) * | 2013-09-05 | 2013-12-11 | 迈普通信技术股份有限公司 | 分布式编译的方法及系统 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017063374A1 (zh) * | 2015-10-13 | 2017-04-20 | 惠州Tcl移动通信有限公司 | 一种动态分配编译机的系统及其方法 |
US10810048B2 (en) | 2015-10-13 | 2020-10-20 | Huizhou Tcl Mobile Communication Co., Ltd | Systems and methods for dynamic allocation of compilation machines |
CN111610977A (zh) * | 2020-05-19 | 2020-09-01 | 腾讯科技(深圳)有限公司 | 一种编译方法和相关装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2017063374A1 (zh) | 2017-04-20 |
US20170286166A1 (en) | 2017-10-05 |
US10810048B2 (en) | 2020-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105373430A (zh) | 一种动态分配编译机的系统及其方法 | |
CN103645909A (zh) | 定时任务的处理方法及装置 | |
EP3353652A1 (en) | System and method for processing task resources | |
CN104767809B (zh) | 一种下载控制方法及系统 | |
US20150186184A1 (en) | Apparatus and method for optimizing system performance of multi-core system | |
CN104199733A (zh) | 一种应用程序进程禁用方法及装置 | |
CN104412284A (zh) | 在装配线上的装备群组的形成 | |
CN104239114A (zh) | 应用程序的编译处理方法及装置 | |
CN106649640A (zh) | 一种即时搜索方法及装置 | |
ATE520077T1 (de) | Betriebsmittelverwaltung | |
CN102054078A (zh) | 物理设计中基于双向优先选择的扫描链重构方法与装置 | |
CN106020905A (zh) | 一种微控制器固件开发与更新的方法及系统 | |
CN106648597A (zh) | 一种多用户并发式远程编译引擎架构 | |
CN111190961A (zh) | 一种动态优化的多线程数据同步方法及系统 | |
CN105871568A (zh) | 软件升级方法和系统 | |
CN112235474B (zh) | 预付费流量码号的调度方法、装置及设备 | |
CN104702664A (zh) | 控制任务服务器的方法及系统 | |
CN107957953A (zh) | 一种回归测试的方法 | |
CN101998156B (zh) | 用于分布式网络播出系统的节目播放方法 | |
JP2012093865A (ja) | 製造計画演算方法と製造計画演算装置 | |
KR101869325B1 (ko) | 이종 멀티코어 환경에서의 코어 배정 장치 | |
CN105528304A (zh) | 内存池管理方法 | |
CN102521043B (zh) | 一种任务处理方法及应用系统 | |
CN105760207A (zh) | 一种基于云计算平台的编译方法、装置及系统 | |
CN102722396A (zh) | 一种组件加载方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160302 |