CN102033782A - 动态调整进程的优先值的调度方法 - Google Patents
动态调整进程的优先值的调度方法 Download PDFInfo
- Publication number
- CN102033782A CN102033782A CN2009101741749A CN200910174174A CN102033782A CN 102033782 A CN102033782 A CN 102033782A CN 2009101741749 A CN2009101741749 A CN 2009101741749A CN 200910174174 A CN200910174174 A CN 200910174174A CN 102033782 A CN102033782 A CN 102033782A
- Authority
- CN
- China
- Prior art keywords
- observation
- value
- preferred value
- adjustment
- 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.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种动态调整进程的优先值的调度方法,适用于中央处理器与队列。队列中包括至少一进程,且每一进程均具有优先值。调度方法首先执行监控进程以侦测中央处理器的总占用率,当总占用率为100%时,侦测观察进程的观察占用率。当观察占用率大于第一阈值时,监控进程将调整标志值设为1并进入休眠。调度方法接着判断执行中的进程是否为观察进程。当执行中的进程为观察进程,且调整标志值等于1时,调度方法执行调整进程以调降观察进程的优先值。
Description
技术领域
本发明是关于一种调度方法,特别是关于一种动态调整进程的优先值的调度方法。
背景技术
许多现今计算机的操作系统利用多任务调度器来提供多的计算机的任务(task,例如程序或进程)同时运行。其概念是将很短的时间片(time slice)连续分配给各个程序/进程(process)的线程(thread)执行。由于每个时间片的长度很小(一般在20至120毫秒),因此以人类对时间的感知而言,这些任务看起来是同时运行。而分配时间片给任务的调度方法中,以根据任务的优先值决定执行顺序的方法为大部分。
例如在Linux操作系统中,可以由进程所具有的一任务结构(task struct)来得知进程的种类以及优先值。任务结构中可包括四个参数:策略(policy)、动态优先级(counter)、静态优先级(priority),以及实时优先级(rt_priority)。其中策略参数纪录此进程为一实时进程(real time process)或是一普通进程(conventional process)。若进程为实时进程,则其优先权为实时优先级;而若进程为普通进程,则其优先权为动态优先级以及静态优先级。
静态优先值即为一般所称的(普通进程的)优先级,代表进程所能获得而被中央处理器(Central Processing Unit,CPU)执行的时间片的数量。而动态优先级表示进程剩下的可被执行的时间片的数量,其初始值为静态优先级。普通进程每获得一次时间片,动态优先级都会减1。当所有的普通进程的动态优先级都归零后,操作系统便会依据静态优先级恢复动态优先级的值。
任务的反应时间对使用者而言是非常重要的。然而若是在待执行的进程当中有优先权特别高的进程,这种进程会持续地占用CPU资源,使得其它的进程无法被执行,而一直无法响应给使用者。又或是在待执行的进程当中有优先权特别低的进程时,优先权低的进程可能几乎等不到被执行的机会,而一直处于饥饿的状态。在此提供一十分有名的案例。在美国加州柏克莱大学(Universityof California,Berkeley)的某一实验室执行久违的大清查时,发现某台服务器中竟有一个进程于三十年间都没有被执行到,而持续着饥饿的状态。
基于上述,传统的依据优先值的调度方法具优先权高的进程容易过度占用CPU资源,使得其它的进程难以被执行,而造成进程的平均反应时间被拉长的问题。
发明内容
为了达成上述的目的,本发明提供一种动态调整进程的优先值的调度方法,适用于中央处理器与队列。其中队列中包括至少一进程,且每一进程均具有优先值。本发明以监控总占有率与观察占有率判断是否有高优先值的进程过度占用CPU资源,并阶段式地调降/恢复观察进程的优先级。因此上述的实施范例可以有效增加低优先值的进程被执行的机率以及时间长度,进而缩短平均反应时间。
根据本发明的一实施范例,调度方法首先执行监控进程。监控进程侦测CPU的总占用率,并判断总占用率是否为100%。当总占用率为100%时,执行下列步骤:监控进程侦测观察进程的观察占用率,其中观察进程为队列中的至少一个进程。且每一观察进程具有一调整次数值,该调整次数值的初始值为0,监控进程并判断观察占用率是否大于第一阈值。当观察占用率大于第一阈值时,监控进程将调整标志值设为1并进行休眠。而监控进程于经过一段休眠时间后再度被执行。
根据本发明的一实施范例,当总占用率不为100%时,调度方法另可执行下列步骤。监控进程判断总占用率是否小于第一阈值;而当总占用率小于第一阈值时,监控进程将调整标志值设为0并进入休眠。而监控进程亦于经过一休眠时间后再度被执行。
监控进程进入休眠后,CPU继续执行其它进程。而同时调度方法判断执行中的进程是否为观察进程。当执行中的进程为观察进程时,再判断调整标志值是否等于1。而当执行中的进程为观察进程,且调整标志值等于1时,调度方法执行调整进程以调降观察进程的优先值。此外,当执行中的进程为观察进程且调整标志值等于0时,调度方法另可执行恢复进程以恢复被调降过的观察进程的优先权。
较佳的是,每一进程具有调整次数值,且调整次数值的初始值为0。根据本发明的一实施范例,执行调整进程以调降观察进程的优先值的步骤可包括:判断调整次数值是否等于0;当调整次数值等于0时,将观察进程的优先值纪录为初始优先值;判断调整旗次数是否小于第二阈值;当调整旗次数小于第二阈值时,执行第一调降方法;以及当调整次数值不小于第二阈值时,调整进程执行第二调降方法。
上述第一调降方法可先判断观察进程是否为普通进程(conventionalprocess)。当观察进程为普通进程时,观察进程的优先值为动态优先级(counter)以及静态优先级(priority),调整进程并将观察进程的动态优先级设为0,以及增加调整次数值。
第一调降方法另可包括当观察进程不为普通进程时,判断观察进程为一实时进程(real-time process)。当观察进程为实时进程时,观察进程的优先值是为实时优先级(rt_priority),调整进程并降低实时优先级,以及增加调整次数值。
根据本发明的一实施范例,上述第二调降方法则可判断观察进程是否为普通进程;而当观察进程为普通进程时,观察进程的优先值为动态优先级以及静态优先级。调整进程并将动态优先级设为0,以及将静态优先级设为队列中具有最低的静态优先级的普通进程的静态优先级,以及增加调整次数值。
第二调降方法另可包括当观察进程不为普通进程时,判断观察进程为实时进程;而当观察进程为实时进程时,调整进程可执行下列步骤。调整进程将观察进程改设为普通进程,并将观察进程的优先值改设为动态优先级以及静态优先级。调整进程接着将动态优先级设为0,以及将静态优先级设为队列中具有最高的静态优先级的普通进程的静态优先级,以及增加调整次数值。
根据本发明的一实施范例,执行恢复进程以恢复被调降过的观察进程的优先权的步骤可包括:判断观察进程是否为实时进程;当观察进程为实时进程时,依据初始优先值恢复优先值,并将调整次数值设为0;当观察进程不为实时进程时,判断观察进程第一次被执行调整进程时是否为普通进程;以及当观察进程第一次被执行调整进程时为普通进程时,依据初始优先值恢复优先值,并将调整次数值设为0。
此外,当观察进程第一次被执行调整进程时为普通进程时,依据初始优先值恢复优先值之后,恢复进程另可判断总占用率是否为小于第一阈值。且当总占用率小于第一阈值时,恢复进程判断是否观察进程为普通进程,且观察进程第一次被执行调整进程时为实时进程。若是,恢复持续将观察进程恢复为实时进程,并依据初始优先值恢复优先值,并将调整次数值设为0。
根据本发明的动态调整进程的优先值的调度方法,具有高优先权且较可能过度占用CPU的进程被设定为观察进程。监控进程监控总占有率与观察占有率以观察进程是否过度占用CPU资源,并阶段式地调降/恢复观察进程的优先级。故此调度方法可有效增加低优先值的进程被执行的机率以及时间长度,进而缩短平均反应时间。此外,借由阶段式的调降进程,可以避免明显影响观察进程的执行是效率;而借由阶段式的恢复进程,可以避免CPU负载突然升高,或是避免观察进程再度独占CPU资源。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
附图说明
图1为根据本发明一实施范例的进程示意图;
图2为根据本发明一实施范例的主流程示意图;
图3为根据本发明一实施范例的监控进程的流程示意图;
图4为根据本发明一实施范例的调整进程的流程示意图;
图5为根据本发明一实施范例的第一调降方法的流程示意图;
图6为根据本发明一实施范例的第二调降方法的流程示意图;
图7为根据本发明一实施范例的恢复进程的流程示意图。
其中,附图标记
20 中央处理器(CPU)
22 队列
24 进程
26 观察进程
28 线程
具体实施方式
以下在实施方式中详细叙述本发明的详细特征以及优点,其内容足以使任何熟悉相关技艺者了解本发明的技术内容并据以实施,且根据本说明书所揭露的内容、申请专利范围及图式,任何熟悉相关技艺者可轻易地理解本发明相关的目的及优点。
根据本发明提供一种动态调整进程的优先值的调度方法,适用于中央处理器(CPU)与队列(queue)。请参照图1,其为根据本发明一实施范例的进程示意图。由图1可以见悉,队列22中具有至少一进程(process)24等待CPU 20执行,其中每一个进程24都具有至少一个线程(thread)28。且在队列22之中,至少有一个进程24被选为一观察进程26。其中CPU 20可以是运行于一个人计算机或是服务器等不同的计算器是统。
就一般的操作系统来说,进程24可具有多个线程28,这些线程28会共享进程24所拥有的硬件资源,例如内存空间或是对输入输出装置的存取。进程24具有一优先值,而优先值乃依据进程24的种类等被操作系统决定。进程24内所有的线程28的优先值都与进程24相同,操作系统依据此优先值决定执行线程28的顺序。
Linux操作系统中,进程24所具有的任务结构(task struct)可包括四个参数:策略(policy)、动态优先级(counter)、静态优先级(priority),以及实时优先级(rt_priority)。由策略参数可得知进程24为一实时进程(realtime process)或是一普通进程(conventional process)。而由实时优先级、静态优先级以及动态优先级可以得知进程24优先值。
队列22是指集合了处于可执行状态(ready state)的进程24的可执行队列(ready queue)。当进程24被生成或由等待状态(wait state,又称休眠状态)被唤醒后,就会处于等待被CPU 20执行的可执行状态,并进入队列22。操作系统根据优先值决定下一个要让CPU 20执行的进程24为何。但此处的操作系统依据优先级让CPU 20执行进程24为一概念性的说法。实际上CPU 20是执行各个进程24所具有的线程28。也就是说,操作系统根据队列22中每一个线程28所属的进程24的优先值,决定接下来要让CPU 20执行的线程28。
在队列22的进程24之中,至少有一个进程24被选为观察进程26。观察进程26为具有高优先值,且可能占用大量CPU资源的进程24。为了避免高优先值的进程24不断重复被执行而排挤其它进程24被执行的权益,根据本发明所提供的调度方法监测所有的观察进程26(与其所包括的所有线程28),并在观察进程26占用太多CPU资源时调整观察进程26的优先值,增加其它进程24被执行的机会。每一观察进程26并具有一调整次数值。调整次数值表示此观察进程26被调降优先值的次数,而调整次数值的初始值为0。
根据本发明的一实施范例,操作系统可将目前使用中的程序与相对应的进程24列表并提供给使用者,并由使用者指定观察进程26。根据本发明的另一实施范例,操作系统可根据进程24的性质、内容、被执行时平均的优先值、通常被执行时的状况,或是过往被使用者指定为观察进程26的纪录自动将队列22中的至少一个进程24选定为观察进程26。
接下来将详述根据本发明所提供的调度方法。请参照图2,其为根据本发明一实施范例的主流程示意图。由图可知,于本实施例之中,动态调整进程的优先值的调度方法可包含步骤S30:执行一监控进程;步骤S31:判断执行中的进程24是否为观察进程26;步骤S32:判断一调整标志值是否等于1;步骤S33:执行一调整进程以调降观察进程26的优先值;步骤S34:判断调整标志值是否等于0;步骤S35:执行一恢复进程以恢复被调降过的观察进程26的优先权;以及步骤S36:执行下一个进程24。
首先于步骤S30,操作系统令CPU 20执行监控进程。监控进程监控CPU 20被使用情况,并判断使否有调整观察进程26的优先值的必要。更佳的是,监控进程为一守护进程(daemon)。监控进程以调整标志值表示目前CPU 20的状况,而监控进程的执行步骤请容后详述。
每当一个线程28被CPU 20执行时,步骤S31判断执行中的线程28所属的进程24是否为观察进程26。若否,则当执行中的进程24结束后,于步骤S36中CPU 20执行下一个进程24(意指CPU 20执行下一个线程28),并在以步骤S31判断新的执行中的进程24是否为观察进程26。
若执行中的进程24为观察进程26,于步骤S32中操作系统判断调整标志值是否等于1。当调整标志值为1时,于步骤S33执行调整进程,以将观察进程26的优先值调降;而若调整标志值不等于1,于步骤S34判断调整标志值是否等于0。当调整标志值等于0时,于步骤S35执行恢复进程,以恢复观察进程26的优先值。其中调整进程以及恢复进程的执行时机可以是在作为对象的观察进程26被执行之前或是被执行之后,本发明并无限制。而在执行完调整进程或是恢复进程之后,CPU 20于步骤S36中继续执行下一个进程24,并在以步骤S31判断新的执行中的进程24是否为观察进程26。
接着说明监控进程的详细步骤,而调整进程以及恢复进程的执行步骤请容后详述。请参照图3,其为根据本发明一实施范例的监控进程的流程示意图。由图可以见悉,监控进程可包括步骤S40:侦测中央处理器20的一总占用率;步骤S41:判断总占用率是否为100%;步骤S42:侦测观察进程26的一观察占用率;步骤S43:判断观察占用率是否大于一第一阈值;步骤S44:将调整标志值设为1;步骤S45:监控进程进入休眠;步骤S46:判断总占用率是否小于第一阈值;步骤S47:将调整标志值设为0;以及步骤S48:将调整标志值设为2。
首先,监控进程于步骤S40侦测总占有率,也就是CPU 20被使用的状况。总占有率是指CPU 20执行包含操作系统等所有进程的被使用率,若总占有率过高,CPU 20便难有余去处理优先值低下的进程24。监控进程并于步骤S41判断总占有率是否为100%。若总占有率高达100%,则表示有很高的机率是有某个或是某些高优先值的进程24过度抢夺CPU资源。如此一来,优先值较低的进程24可能永远不会被执行到,而一直维持在饥饿的状态。
然而即使总占用率高达100%,亦有可能是同时有太多的进程24在队列22中等待着要被执行。因此监控进程于步骤S42中,判断观察占有率是否大于第一阈值。观察占有率是指CPU 20被所有的观察进程26占用的情况;也就是说,观察占用率是CPU 20执行所有的观察进程26的被使用率。第一阈值例如可以是但不限定是80%,亦可以是由使用者指定。
当监控进程判断观察进程26过度抢夺CPU 20的资源时,监控进程于步骤S44将调整标志值设为1,代表观察进程26需要被调降其优先值。设置完调整旗标后,监控进程于步骤S45进入休眠状态。操作系统可令监控进程进入一等待队列(wait queue)中休眠,且经过一休眠时间后,操作系统会再度执行监控进程这个守护进程以监控最新的CPU 20的总占用率。
相对的,当总占用率不等于100%时,监控进程于步骤S46判断总占有率是否小于第一阈值。当总占有率小于第一阈值时,表示现在CPU 20尚有足够的余力可以多执行一些进程24。则调整标志值在步骤S47被设为0,表示如果的前有观察进程26因被调低优先值而无法获得观察进程26所期望的执行时间,现在的状况已允许这种观察进程26恢复其优先值并取得更多的时间片(time slice)来执行。
此外,若总占有率为100%但观察占有率小于第一阈值,表示然CPU 20处于极为忙碌的状态,但这种状况并非由观察进程26所造成的。在其它的进程24被执行结束后应该就可缓解CPU 20过于忙碌的状况,故调度方法可不对以状况作处理。然根据本发明的另一实施范例,调度方法令可以其它的调度算法进行处理。而若总占有率并非100%但大于第一阈值,换句话说,总占有率介于第一阈值与100%之间,表示CPU 20可能还不够有余提供更多的资源给观察进程26。因此在这两种状况之中,监控进程于步骤S47将调整旗标设为2,代表调度方法不用执行调整进程亦不用执行恢复进程。
总地说来,监控进程侦测总占用率以及观察占用率以判断目前CPU 20执行的状况,并设定调整标志值。监控进程以调整标志值表示目前CPU 20的状况,调度方法便可依调整标志值判断是否需要调降或是恢复观察进程26的优先值。
以下详述调整进程所执行的步骤,请参阅图4,其为根据本发明一实施范例的调整进程的流程示意图。由图4」可知,调整进程包括步骤S50:判断调整次数值是否等于0;步骤S51:将观察进程26的优先值纪录为一初始优先值;步骤S52:判断调整次数是否小于一第二阈值;步骤S53:执行一第一调降方法;以及步骤S54:执行一第二调降方法。
调整进程首先于步骤S50判断调整次数值是否等于0。观察进程26的调整次数值纪录观察进程26被调降优先值的次数,而每当观察进程26被执行恢复进程后调整次数值会被重置为0。若观察进程26的调整次数值为0,表示目前观察进程26所具有的优先值是操作系统所赋予的优先值,也就是此观察进程26应具有的优先值。为了在CPU 20的总使用率下降时恢复观察进程26的优先值,调整进程于步骤S51将观察进程26目前的优先值保存为初始优先值,以供后续的恢复进程使用。
于步骤S52,调整进程判断调整次数值是否小于第二阈值。调整进程分两阶段调降观察进程26的优先值,第一阶段仅(逐次)稍许降低优先值,而第二阶段大幅降低优先值。若以第一阶段的调整即可解决观察占有率过高,也就是其余的进程24反应过慢的问题,就可避免观察进程26的优先值一口气被降低,而剧烈影响到观察进程26的执行效能。因此当调整次数值尚低时,表示此观察进程26并不常过度占用CPU资源,仅需于步骤S53中执行第一调降方法,以进行第一阶段的调整。相反的,若观察进程26被调低过多次优先值却仍一直占用CPU资源,此观察进程26便须于步骤S54被执行第二调降方法,大幅拉低其优先值,以将此观察进程26过度占用的CPU资源让出给其它进程24。
请参照图5,其为根据本发明一实施范例的第一调降方法的流程示意图。由图可以见悉,第一调降方法包括步骤S60:判断观察进程26是否为普通进程;步骤S61:将动态优先级设为0;步骤S62:增加调整次数值;以及步骤S63:降低实时优先级。
第一调降方法于步骤S60判断观察进程26是普通进程或是实时进程。若观察进程26为普通进程,则其优先值为动态优先级以及静态优先级。观察进程26的动态优先级于步骤S61被设为0。如此一来,直到队列22中所有的普通进程的动态优先级均被消耗至0之前,此观察进程26都不会被CPU 20执行。但在所有动态优先级都归零后,操作系统自动将此观察进程26的动态优先级与其它的普通进程一起依据个别的静态优先级恢复(重设)个别的动态优先级。且在调降过观察进程26的动态优先级之后,于步骤S62中此观察进程26的调整次数值被加1。
类似地,若观察进程26为实时进程,第一调降方法于步骤S63调低实时优先级,例如可将实时优先级减1。且调降实时优先级后,亦于步骤S62中将此观察进程26的调整次数值加1。
当第一调降方法已经观察进程26的优先值调降了数次,此观察进程仍然频繁占用CPU 20,这表示队列22中其它的进程24的优先值远小于此观察进程26。此时调降进程以第二调降方法处理此观察进程26的优先值。
请参照图6,其为根据本发明一实施范例的第二调降方法的流程示意图。由图可以知悉,第二调降方法包括步骤S70:判断观察进程26是否为普通进程;步骤S71:将动态优先级设为0;步骤S72:将静态优先级设为队列22中具有最低的静态优先级的普通进程的静态优先级;步骤S73:增加调整次数值;步骤S74:将观察进程26改设为一普通进程;步骤S75:将观察进程26的优先值改设为动态优先级以及静态优先级;步骤S76:将动态优先级设为0;以及步骤S77:将静态优先级设为队列22中具有最高的静态优先级的普通进程的静态优先级。
第二调降方法于步骤S70判断观察进程26是普通进程或是实时进程。当观察进程26为普通进程时,第二调降方法先于步骤S71将观察进程26的动态优先级设为0,并在步骤S72调降观察进程26的静态优先级。第二调降方法于队列22中找寻具有最低的静态优先级的普通进程,并将此最低的静态优先级作为观察进程26的静态优先级。如此一来,即使操作系统依据静态优先级恢复所有普通进程的动态优先级,观察进程26仍只能获得较低的动态优先级。接着于步骤S73,观察进程26的调整次数值被加1。
当观察进程26为实时进程,且观察进程26即使逐次地被减低实时优先级仍然频繁占用CPU 20时,这表示队列22中可能只有此观察进程26是实时进程,或是其它的实时进程的实时优先级都远低于此观察进程26。因此第二调降方法直接将观察进程26设为普通进程,但仍给予此观察进程26较高的静态优先值。
第二调降方法于步骤S74将观察进程26由实时进程改为普通进程,且于步骤S75将观察进程26的优先值由实时优先级改设为静态优先级以及动态优先级。第二调降方法于步骤S76将动态优先级设为0,并于步骤S77于队列22中找寻具有最高的静态优先级的普通进程,将此最高的静态优先级作为观察进程26的静态优先级。接着第二调降方法亦于步骤S73将观察进程26的调整次数值被加1。
调整进程以第一调降方法缓和地减低观察进程26的优先值,但若观察进程26已被调整多次后仍旧过度占用CPU资源,调降进程以第二调降方法大幅调降其优先值,以提高队列22中其它不是观察进程的进程24被执行的时间。
接下来详述恢复进程的执行步骤。对应上述阶段式的调整方法,恢复进程亦阶段式地恢复优先值。请参阅图7」,其是为根据本发明一实施范例的恢复进程的流程示意图。由「图7可以见悉,恢复进程包括步骤S80:判断观察进程26是否为实时进程;步骤S81:依据初始优先值恢复优先值,并将调整次数值设为0;步骤S82:判断观察进程26第一次被执行调整进程时是否为普通进程;步骤S83:判断总占用率是否为小于第一阈值;步骤S84:判断是否观察进程26为普通进程,且观察进程第一次被执行调整进程时为实时进程;步骤S85:将观察进程26恢复为实时进程;步骤S86:依据初始优先值恢复实时进程的优先值,并将调整次数值设为0;以及步骤S87:结束恢复进程。
恢复进程被启动后首先于步骤S80判断观察进程26是否为实质进程,若不是,便于步骤S82判断观察进程26是否原先就是普通进程,而非被调整进程由实时进程改设为普通进程。也就是说,步骤S80与步骤S82判断观察进程26是否仅被第一调降方法处理过。若是,则于步骤S81依据初始优先值将实时优先级或动态优先级恢复为被调降之前的值,此为第一阶段的恢复方法。
经过第一阶段的恢复后,总占有率以及观察占有率都可能上升。因此于步骤S83,恢复进程判断经过第一阶段的恢复后的总占有率是否仍小于第一阈值,以确认能否执行第二阶段的恢复。当总占有率超过第一阈值时,恢复进程不进行第二阶段的恢复,而于步骤S87结束。相对的,当经过第一阶段的恢复后总占有率仍低于低一阈值时,恢复进程于步骤S85将曾被调整进程改设为普通进程的观察进程26恢复为实时进程,并于步骤S86依据初始优先值恢复实时优先值。
总地来说,成功提高其它进程24的CPU 20的占有率且CPU 20亦有余力时,恢复进程亦阶段式地恢复观察进程的优先权,以确保被恢复优先值的观察进程26不会再度过分地占用CPU资源。而根据本发明的一实施范例,当所有的观察进程26均已离开待执行队列时(例如已执行完毕或是进入等待队列中),作为守护进程执行的监控进程持续监控总使用率。若监控进程得知总使用率为100%,且又有观察进程26位于队列22时,即依照上述方法设定调整标志值以进行调整/恢复优先值的步骤。虽上述调度方法仅以单CPU系统为例,然动态调整进程的优先值的调度方法亦是于多CPU系统。
根据本发明的动态调整进程的优先值的调度方法,具有高优先权且较可能过度占用CPU的进程被设定为观察进程。监控进程监控总占有率与观察占有率以观察进程是否过度占用CPU资源,并阶段式地调降/恢复观察进程的优先级。故此调度方法可有效增加低优先值的进程被执行的机率以及时间长度,进而缩短平均反应时间。此外,借由阶段式的调降进程,可以避免明显影响观察进程的执行是效率;而借由阶段式的恢复进程,可以避免CPU负载突然升高,或是避免观察进程再度独占CPU资源。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (10)
1.一种动态调整进程的优先值的调度方法,其特征在于,适用于一中央处理器与一队列,该队列包括至少一进程,每一该进程具有一优先值,该调度方法包括:
执行一监控进程,该监控进程包括:
侦测该中央处理器的一总占用率;
判断该总占用率是否为100%;以及
当该总占用率为100%时,执行下列步骤:
侦测一观察进程的一观察占用率,其中该观察进程为该队列中的至少一个该进程,且每一该观察进程具有一调整次数值,该调整次数值的初始值为0;
判断该观察占用率是否大于一第一阈值;
当该观察占用率大于该第一阈值时,将一调整标志值设为1;以及
令该监控进程休眠,该监控进程于经过一休眠时间后再度被执行;
判断执行中的该进程是否为该观察进程;
当执行中的该进程为该观察进程时,判断该调整标志值是否等于1;以及
当该调整标志值等于1时,执行一调整进程以调降该观察进程的该优先值。
2.根据权利要求1所述的动态调整进程的优先值的调度方法,其特征在于,该监控进程另包括:
当该总占用率不为100%时,执行下列步骤:
判断该总占用率是否小于该第一阈值;
当该总占用率小于该第一阈值时,将该调整标志值设为0;以及
令该监控进程休眠,该监控进程于经过一休眠时间后再度被执行。
3.根据权利要求1所述的动态调整进程的优先值的调度方法,其特征在于,另包括:
当该调整标志值等于0时,执行一恢复进程以恢复被调降过的该观察进程的该优先值。
4.根据权利要求1所述的动态调整进程的优先值的调度方法,其特征在于,该执行一调整进程以调降该观察进程的该优先值的步骤包括:
判断该调整次数值是否等于0;
当该调整次数值等于0时,将该观察进程的该优先值纪录为一初始优先值;
判断该调整旗次数是否小于一第二阈值;
当该调整旗次数小于该第二阈值时,执行一第一调降方法;以及
当该调整次数值不小于该第二阈值时,执行一第二调降方法。
5.根据权利要求4所述的动态调整进程的优先值的调度方法,其特征在于,该执行一第一调降方法的步骤包括:
判断该观察进程是否为一普通进程;
当该观察进程为该普通进程时,该观察进程的该优先值为一动态优先级以及一静态优先级,并将该动态优先级设为0;以及
增加该调整次数值。
6.根据权利要求5所述的动态调整进程的优先值的调度方法,其特征在于,而该执行一第一调降方法的步骤另包括:
当该观察进程不为该普通进程时,该观察进程为一实时进程,该观察进程的该优先值为一实时优先级,并降低该实时优先级;以及
增加该调整次数值。
7.根据权利要求4所述的动态调整进程的优先值的调度方法,其特征在于,该执行一第二调降方法的步骤包括:
判断该观察进程是否为一普通进程;以及
当该观察进程为该普通进程时,该观察进程的该优先值为一动态优先级以及一静态优先级,并执行下列步骤:
将该动态优先级设为0;
将该静态优先级设为该队列中具有最低的该静态优先级的该普通进程的该静态优先级;以及
增加该调整次数值。
8.根据权利要求7所述的动态调整进程的优先值的调度方法,其特征在于,该执行一第二调降方法的步骤另包括:
当该观察进程不为该普通进程时,该观察进程为一实时进程,并执行下列步骤:
将该观察进程改设为该普通进程;
将该观察进程的该优先值改设为该动态优先级以及该静态优先级;
将该动态优先级设为0;
将该静态优先级设为该队列中具有最高的该静态优先级的该普通进程的该静态优先级;以及
增加该调整次数值。
9.根据权利要求3所述的动态调整进程的优先值的调度方法,其特征在于,该执行一恢复进程以恢复被调降过的该观察进程的该优先值的步骤包括:
判断该观察进程是否为一实时进程;
当该观察进程为一实时进程时,依据该初始优先值恢复该优先值,并将该调整次数值设为0;
当该观察进程不为该实时进程时,判断该观察进程第一次被执行该调整进程时是否为一普通进程;以及
当该观察进程第一次被执行该调整进程时为该普通进程时,依据该初始优先值恢复该优先值,并将该调整次数值设为0。
10.根据权利要求9所述的动态调整进程的优先值的调度方法,其特征在于,当该观察进程第一次被执行该调整进程时为该普通进程时,依据该初始优先值恢复该优先值之后的步骤另包括:
判断该总占用率是否为小于该第一阈值;以及
当该总占用率小于该第一阈值时,执行以下步骤:
判断是否该观察进程为该普通进程,且该观察进程第一次被执行该调整进程时为该实时进程;以及
若是,将该观察进程恢复为该实时进程;并依据该初始优先值恢复该优先值,并将该调整次数值设为0。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101741749A CN102033782A (zh) | 2009-09-30 | 2009-09-30 | 动态调整进程的优先值的调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101741749A CN102033782A (zh) | 2009-09-30 | 2009-09-30 | 动态调整进程的优先值的调度方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102033782A true CN102033782A (zh) | 2011-04-27 |
Family
ID=43886716
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009101741749A Pending CN102033782A (zh) | 2009-09-30 | 2009-09-30 | 动态调整进程的优先值的调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102033782A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019857A (zh) * | 2012-11-23 | 2013-04-03 | 浙江工业大学 | 物联网考勤机的多任务优先级调度方法 |
CN105094945A (zh) * | 2015-07-01 | 2015-11-25 | 北京奇虎科技有限公司 | 虚拟化平台线程控制方法、设备和系统 |
CN105938441A (zh) * | 2016-04-15 | 2016-09-14 | 惠州Tcl移动通信有限公司 | 一种移动终端应用程序设置处理方法及系统 |
CN106020973A (zh) * | 2016-05-10 | 2016-10-12 | 广东睿江云计算股份有限公司 | 云主机系统中的cpu调度方法及装置 |
CN107145389A (zh) * | 2017-03-09 | 2017-09-08 | 深圳市先河系统技术有限公司 | 一种系统进程监控方法及计算设备 |
CN107577523A (zh) * | 2017-07-31 | 2018-01-12 | 阿里巴巴集团控股有限公司 | 一种任务执行的方法及装置 |
CN112398911A (zh) * | 2020-10-22 | 2021-02-23 | 成都中讯创新科技股份有限公司 | 一种基于fc网络的多通道网络调度方法 |
-
2009
- 2009-09-30 CN CN2009101741749A patent/CN102033782A/zh active Pending
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019857A (zh) * | 2012-11-23 | 2013-04-03 | 浙江工业大学 | 物联网考勤机的多任务优先级调度方法 |
CN105094945A (zh) * | 2015-07-01 | 2015-11-25 | 北京奇虎科技有限公司 | 虚拟化平台线程控制方法、设备和系统 |
CN105938441A (zh) * | 2016-04-15 | 2016-09-14 | 惠州Tcl移动通信有限公司 | 一种移动终端应用程序设置处理方法及系统 |
CN105938441B (zh) * | 2016-04-15 | 2019-04-30 | 惠州Tcl移动通信有限公司 | 一种移动终端应用程序设置处理方法及系统 |
CN106020973A (zh) * | 2016-05-10 | 2016-10-12 | 广东睿江云计算股份有限公司 | 云主机系统中的cpu调度方法及装置 |
CN107145389A (zh) * | 2017-03-09 | 2017-09-08 | 深圳市先河系统技术有限公司 | 一种系统进程监控方法及计算设备 |
CN107145389B (zh) * | 2017-03-09 | 2020-12-15 | 深圳市先河系统技术有限公司 | 一种系统进程监控方法及计算设备 |
CN107577523A (zh) * | 2017-07-31 | 2018-01-12 | 阿里巴巴集团控股有限公司 | 一种任务执行的方法及装置 |
CN107577523B (zh) * | 2017-07-31 | 2021-01-05 | 创新先进技术有限公司 | 一种任务执行的方法及装置 |
CN112398911A (zh) * | 2020-10-22 | 2021-02-23 | 成都中讯创新科技股份有限公司 | 一种基于fc网络的多通道网络调度方法 |
CN112398911B (zh) * | 2020-10-22 | 2022-07-15 | 成都中讯创新科技股份有限公司 | 一种基于fc网络的多通道网络调度方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102033782A (zh) | 动态调整进程的优先值的调度方法 | |
US11140056B2 (en) | Flexible and safe monitoring of computers | |
CN110427262B (zh) | 一种基因数据分析方法及异构调度平台 | |
CN103268247B (zh) | 任务执行及调整线程池中保留线程的数量的方法和装置 | |
US9563474B2 (en) | Methods for managing threads within an application and devices thereof | |
US20070300230A1 (en) | Thread priority based on object creation rates | |
US9875145B2 (en) | Load based dynamic resource sets | |
US20180365066A1 (en) | Method and Apparatus for Allocating Computing Resources of Processor, and Terminal | |
US20030204552A1 (en) | IO completion architecture for user-mode networking | |
CN106533981B (zh) | 一种基于多属性的大数据流量调度方法及装置 | |
US20030233485A1 (en) | Event queue | |
CN109783255B (zh) | 数据解析分发装置及高并发数据处理方法 | |
WO2009024459A1 (en) | Proactive power management in a parallel computer | |
CN110515715A (zh) | 基于线程池的任务处理方法及装置 | |
EP4361808A1 (en) | Resource scheduling method and device and computing node | |
CN105373425A (zh) | 一种嵌入式Linux系统性能优化的方法及装置 | |
CN105511937A (zh) | 一种适用于云平台的批量虚拟机蓝屏监控方法 | |
CN103049311B (zh) | 分区操作系统的综合化调度算法 | |
CN112860401B (zh) | 任务调度方法、装置、电子设备和存储介质 | |
CN113467908A (zh) | 任务执行方法、装置、计算机可读存储介质及终端设备 | |
CN111580950A (zh) | 一种提升云可靠性的自适应反馈资源调度方法 | |
CN106354555A (zh) | 一种操作系统进程调度算法 | |
CN105956108B (zh) | 一种高负载的自动处理方法及系统 | |
JP3859564B2 (ja) | イベント通知タスク制御処理方式及び方法並びにプログラム | |
CN107368402A (zh) | 计算cpu利用率的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20110427 |