一种资源调度方法及其装置和具有存储功能的装置与流程

文档序号:16917580发布日期:2019-02-19 19:05阅读:173来源:国知局
一种资源调度方法及其装置和具有存储功能的装置与流程

本发明涉及操作系统领域,特别是涉及一种资源调度方法及其装置和具有存储功能的装置。



背景技术:

在linux系统中,同时运行多个进程是非常普遍的现象。但是,对于特定linux设备而言,其cpu资源是有限的,若要运行多个甚至无限可能的进程,必然面临cpu资源的调度问题,如果不予处理,会出现重要的进程得不到应有的cpu资源保障,从而造成极差的用户体验。



技术实现要素:

本发明主要解决的技术问题是提供一种资源调度方法及其装置和具有存储功能的装置,能够确保系统运行顺利,提高用户体验。

为解决上述技术问题,本发明采用的一个技术方案是:提供一种资源调度方法,包括:获取系统中的中央处理器的当前资源总占用率,判断所述当前资源总占用率是否大于或等于预设的中央处理器资源告警激活门限;如果是,则按照进程优先级从低到高的顺序逐步限制所述系统中的进程对所述中央处理器的占用率。

为解决上述技术问题,本发明采用的另一个技术方案是:提供一种资源调度装置,包括:相互耦接的处理器、存储器,所述存储器用于存储程序数据,所述处理器用于运行所述程序数据以实现如上所述的方法。

为解决上述技术问题,本发明采用的另一个技术方案是:提供一种具有存储功能的装置,存储有程序数据,所述程序数据能够被执行以实现如上所述方法中的步骤。

本发明的有益效果是:区别于现有技术的情况,本发明在检测到cpu当前资源总占用率超标时,按照进程优先级从低到高的顺序逐步限制系统中的进程对cpu的占用率,通过先限制优先级低的进程对cpu的占有率,来释放部分cpu的资源,进而为优先级高的进程运行提供足够的cpu资源保障,可以确保系统正常运行,提高用户体验。

附图说明

图1是本发明提供的资源调度方法的第一实施例的流程示意图;

图2是本发明提供的限制系统中的进程对cpu的占用率的方法的一实施例的流程示意图;

图3是本发明提供的资源调度方法的第二实施例的流程示意图;

图4是本发明提供的资源调度方法的第三实施例的流程示意图;

图5是本发明提供的资源调度方法的第四实施例的流程示意图;

图6是本发明提供的解除对系统中的进程对cpu的占用率的限制的方法的一实施例的流程示意图;

图7是本发明提供的资源调度方法的第五实施例的流程示意图;

图8是本发明提供的资源调度方法的第六实施例的流程示意图;

图9是本发明提供的资源调度装置的一实施例的结构示意图;

图10是本发明提供的具有存储功能的装置的一实施例的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,均属于本发明保护的范围。

请参阅图1,图1是本发明提供的资源调度方法的第一实施例的流程示意图。本发明提供的资源调度方法包括:

s101:周期性获取系统中的中央处理器的当前资源总占用率。

在一个具体的实施场景中,获取系统中的cpu(centralprocessingunit,中央处理器)的当前资源总占用率。在本实施场景中,本方法周期性的执行,在其他实施场景中,本方法也可是条件出发执行,例如检测到用户手动出发,或者cpu温度高于预设阈值等。

s102:判断所述当前资源总占用率是否大于或等于预设的中央处理器资源告警激活门限。

在一个具体的实施场景中,将当前资源总占用率与预设的cpu资源告警激活门限进行对比,判断cpu当前资源总占用率是否大于或等于预设的cpu资源告警激活门限,其中cpu资源告警激活门限是指cpu资源可被占用的最大值,如果cpu被占用的资源超过该最大值,将会发出资源告警,通知用户当前cpu资源占用过多,将会影响重要进程的运行。

s103:如果是,则按照进程优先级从低到高的顺序逐步限制所述系统中的进程对所述中央处理器的占用率。

在一个具体的实施场景中,当前资源总占用率大于或等于预设的中央处理器资源告警激活门限,则表示当前中央处理器的资源占用率过高,可能会影响某些重要的进程得不到所需的资源,从而造成系统运行卡顿。因此采用限制系统中进程对cpu的占用率的方法来释放cpu资源,在本实施场景中,按照进程优先级从低到高的顺序逐步限制系统中的进程对cpu的占用率。这样在资源极其有限的情况下,优先级低、重要性低的进程先被限制对cpu的占用率,而优先级高、重要性高的进程可以尽可能的保持原有的对cpu的占用率。

具体而言,请结合参考图2,图2是本发明提供的限制系统中的进程对cpu的占用率的方法一实施例的流程示意图。本发明提供的限制系统中的进程对cpu的占用率的方法包括:

s201:判断当前调度的所述进程的优先级是否低于所述系统中的所有进程的最高优先级。

在一个具体的实施场景中,获取所有进程的优先级,并确定其中的最高优先级。判断当前调度的进程的优先级是否低于该最高优先级。在其他实施场景中,可以预先指定一个优先级为最高优先级。

s202:如果低于,则判断当前调度的所述进程对所述中央处理器的占用率是否超过所述进程的保证中央处理器占用率。

在一个具体的实施场景中,当前调度的进程的优先级低于该最高优先级,则表示当前调度的进程的重要性较低,可以限制其对cpu的占用率,但是当该进程cpu占用率过低时,可能会影响该进程的正常运行。因此,判断当前调度的进程对cpu的占用率是否超过该进程的保证cpu占用率,其中保证cpu占用率是指该进程运行所需的最低的cpu占用率。

在其他实施场景中,预先指定一个优先级为最高优先级,如果当前调度的进程的优先级高于该指定的最高优先级,则不对该进程对cpu的占用率进行限制。

s203:如果超过,则限制所述进程对中央处理器的占用率。

在执行s202或s203之后,按照进程优先级从低到高的顺序,经位于所述当前调度的进程后面的进程作为新的当前调度的进程,并重复上述s201-s203,直至该当前调度的所述进程的优先级不低于所述系统中的所有进程的最高优先级,或者cpu的资源总占用率小于所述预设的中央处理器资源告警激活门限。

在一个具体的实施场景中,当前调度的进程对cpu的占用率超过该进程的保证cpu占用率,则将当前调度的进程对cpu的占用率限制到该进程的保证cpu占用率。

在另一个实施场景中,可以获取当前调度的进程的可执行的步进数,按照该步进数对当前调度的进程对cpu的占用率进行限制,例如当前调度的进程的可执行的步进数为3,则分为3步逐步将当前调度的进程对cpu的占用率限制到该进程的保证cpu占用率。

在另一个实施场景中,在逐步限制当前调度的进程对cpu的占用率的过程中,每执行完一步限制当前调度的进程对cpu的占用率的过程,都检查当前cpu占用率是否超过cpu资源告警激活门限,如果没有超过cpu资源告警激活门限,则停止对该进程对cpu的占用率的限制。

在其他实施场景中,如果当前调度的进程对cpu的占用率没有超过该进程的保证cpu占用率,则不对该进程对cpu的占用率进行限制。

在本实施场景中,可以从优先级最低的进程开始进行限制,按照优先级从低到高的顺序逐步限制各进程对cpu的占用率。在其他实施场景中,可以从任意一个进程开始进行限制。

在本实施场景中,在执行完系统中的一个进程对cpu的占用率后,将不再进行其他操作。而是等待下一个周期,获取到当前cpu的总占用率后,再次执行步骤s102-s103。

在本实施场景中,该系统为linux系统,在其他实施场景中,该系统还可以为其他操作系统,例如windows系统。

通过上述描述可知,本实施通过在检测到cpu当前资源总占用率超标时,按照进程优先级从低到高的顺序逐步限制系统中的进程对cpu的占用率,可以在不影响进程运行的情况下有效释放cpu资源,给优先级高的进程运行提供足够的资源保障,可以确保系统运行顺利,提高用户体验。

请参阅图3,图3是本发明提供的资源调度方法的第二实施例的流程示意图。本发明提供的资源调度方法包括:

s301:cpu当前资源总占用率s_cpuusagerate>=cpu资源告警激活门限g_cpualarmthreshold。

在一个具体的实施场景中,在一个周期中,获取到当前cpu的资源总占用率s_cpuusagerate后,判断出s_cpuusagerate>=cpu资源告警激活门限g_cpualarmthreshold,其中,g_cpualarmthreshold为预设的cpu资源告警激活门限。表示在不影响当前所有进程的运行的情况下,cpu资源总占用率所允许的最高值。

s302:判断系统当前的调度状态sm_status是否等于1。

在一个具体的实施场景中,检测到s_cpuusagerate>=g_cpualarmthreshold,表示当前cpu的资源总占用率过高,可能会影响优先级高的、重要性高的进程的顺利运行,因此需要对运行的各进程对cpu的占用率进行限制。在本实施场景中,当判定需要限制各进程对cpu的占用率进行限制时,读取sm_status的值,获取系统当前的调度状态。

在本实施场景中,sm_status=0时,表示系统当前处于调度中;sm_status=1时表示所有待调度的进程对cpu的占用率均已限制到最低,即限制到每个进程的保证cpu占用率;sm_status=2时表示已经解除所有待调度的进程对cpu占用率的限制。在检测到s_cpuusagerate>=g_cpualarmthreshold时,判断sm_status是否等于1,即判断所有待调度的进程对cpu的占用率是否均已限制到最低,若sm_status=1,则表示已经cpu的占用率已经是维持当前系统运行的所需的最低值,无法进一步释放cpu资源,因此执行步骤s313,结束本次资源调度。若sm_status≠1,则表示当前仍有进程对cpu的占用率没有限制到最低,可以通过限制这些进程对cpu的占用率来释放cpu的资源,执行步骤s303。

s303:判断当前调度的进程的优先级序号sm_procdispatchnum是否等于null。

在一个具体的实施场景中,若sm_procdispatchnum=null,表示当前没有调度任何进程,执行步骤s304,若sm_procdispatchnum≠null,则表示系统当前处于调度状态,sm_procdispatchnum的值即为当前调度的进程的优先级序号,执行步骤s305。

s304:令当前调度的进程的优先级序号sm_procdispatchnum=最低优先级序号g_procprioritylowestnum;

令当前cpu占用率被限制到的真实值sm_proclimitcpurate=null。

在一个具体的实施场景中,sm_procdispatchnum=null,表示当前没有调度任何进程,令sm_procdispatchnum=g_procprioritylowestnum,即为若调度尚未开始,则从优先级最低的进程开始调度,令sm_proclimitcpurate=null,即为若调度尚未开始,则将当前cpu占用率被限制到的真实值为空,以待后续执行时填入合适的值。执行步骤s308。在本实施场景中,系统先获取所有待调度进程的优先级序号,并找出其中的最低优先级序号g_procprioritylowestnum。在其他实施场景中,可以预先指定一个优先级序号为最低优先级序号。

s305:判断当前调度的进程的优先级序号sm_procdispatchnum是否大于等于最高优先级序号g_procpriorityhighestnum。

在一个具体的实施场景中,系统先获取所有待调度进程的优先级序号,并找出最高优先级序号g_procpriorityhighestnum。在其他实施场景中,可以预先指定一个优先级序号为最高优先级序号。在本实施场景中,sm_procdispatchnum≠null,也就是说系统当前处于资源调度状态,sm_procdispatchnum的值即为当前调度的进程的优先级序号。将sm_procdispatchnum与g_procpriorityhighestnum比较大小,在本实施场景中,进程的优先级序号越大,则该进程的优先级越低,例如优先级序号为99的进程的优先级低于优先级序号为1的进程的优先级。如果sm_procdispatchnum>=g_procpriorityhighestnum,表示当前调度的进程的优先级低于或等于最高优先级,则可以对该进程对cpu的占用率进行限制,执行步骤s307。如果sm_procdispatchnum<g_procpriorityhighestnum,表示当前调度的进程的优先级高于最高优先级,则意味着所有可调度的进程对cpu的占用率均已被限制,执行步骤s306。

s306:系统当前的调度状态sm_status=1;

当前调度的进程的优先级序号sm_procdispatchnum=null;

当前cpu占用率被限制到的真实值sm_proclimitcpurate=null。

在一个具体的实施场景中,sm_procdispatchnum<g_procpriorityhighestnum。因此,将sm_status的值设置为1,表示所有待调度的进程对cpu的占用率均已限制到最低,令sm_procdispatchnum=null且sm_proclimitcpurate=null,表示本次资源调度结束,当前不再调度其他进程,执行步骤s313,结束本次资源调度。

s307:判断当前cpu占用率被限制到的真实值sm_proclimitcpurate是否等于null。

在一个具体的实施场景中,sm_procdispatchnum>=g_procpriorityhighestnum,需要对当前调度的进程对cpu的占用率进行限制,sm_proclimitcpurate=null,表示对当前调度的进程对cpu的占用率尚未进行限制,执行步骤s308。若sm_proclimitcpurate≠null,则表示已经对当前调度的进程对cpu的占用率进行限制,sm_proclimitcpurate的值即为当前该进程对cpu的占用率被限制到的真实值,可执行步骤s309进行进一步的限制。

s308:当前cpu占用率被限制到的真实值sm_proclimitcpurate=优先级序号为sm_procdispatchnum的进程的对cpu的最大占用率l_procmaxcpurate[sm_procdispatchnum]。

在一个具体的实施场景中,若sm_proclimitcpurate=null,则令sm_proclimitcpurate=l_procmaxcpurate[sm_procdispatchnum],即为当前该进程对cpu的占用率被限制到的真实值为优先级序号为sm_procdispatchnum的进程的对cpu的最大占用率。

s309:判断当前cpu占用率被限制到的真实值sm_proclimitcpurate是否大于或等于优先级序号为sm_procdispatchnum的进程的对cpu的保证占用率l_procmincpurate[sm_procdispatchnum]。

在一个具体的实施场景中,l_procmincpurate[sm_procdispatchnum]即为运行优先级序号为sm_procdispatchnum的进程所需对cpu的最低占用率。若sm_proclimitcpurate>=l_procmincpurate[sm_procdispatchnum],则表示该进程对cpu的占用率高于最低占用率,执行步骤s310对该进程对cpu的占用率进行限制,若sm_proclimitcpurate<l_procmincpurate[sm_procdispatchnum],则表示则该进程对cpu的占用率低于最低占用率,不能再限制其对cpu的占用率,执行步骤s312。

s310:将优先级序号为sm_procdispatchnum的进程对cpu的占用率限制到当前cpu占用率被限制到的真实值sm_proclimitcpurate。

在一个具体的实施场景中,sm_proclimitcpurate>=l_procmincpurate[sm_procdispatchnum],该进程对cpu的占用率高于最低占用率,因此将限制优先级序号为sm_procdispatchnum的进程对cpu的占用率。

s311:sm_proclimitcpurate=sm_proclimitcpurate-l_cpudispatchstep[sm_procdispatchnum];

系统当前的调度状态sm_status=0。

在一个具体的实施场景中,l_cpudispatchstep表示该进程在资源调度时的步进数,sm_proclimitcpurate=sm_proclimitcpurate-l_cpudispatchstep[sm_procdispatchnum]表示将优先级序号为sm_procdispatchnum的进程按照步进数逐步限制其对cpu的占用率。例如,将优先级序号为sm_procdispatchnum的进程的l_cpudispatchstep为3,则分3步将该进程对cpu的占用率限制到其l_procmincpurate。

在完成将该进程对cpu的占用率进行限制后,将sm_status的值设置为0,表示系统当前处于调度中,然后执行步骤s313,结束本次针对该进程的资源调度。

s312:当前调度的进程的优先级序号sm_procdispatchnum-1;

当前cpu占用率被限制到的真实值sm_proclimitcpurate=null;

系统当前的调度状态sm_status=0。

在一个具体的实施场景中,sm_proclimitcpurate<l_procmincpurate[sm_procdispatchnum],该进程对cpu的占用率不能再进一步限制,则将sm_procdispatchnum减1,在下一周期中,将执行对优先级高1级的进程进行cpu占用率的限制。令sm_proclimitcpurate=null,表示本次资源调度中对该进程的对cpu占用率的限制已经完成,将sm_status的值设置为0,表示系统当前处于调度中,然后执行步骤s313,结束本次资源调度。

s313:exit。

结束本次资源调度。

在本实施场景中,按照固定的周期执行该资源调度方法,在其他实施场景中,该资源调度方法可以为事件触发,例如,检测到优先级高于预设阈值的进程启动时,或者检测到对中央处理器的占用率高于预设阈值时,执行该资源调度方法。

在本实施场景中,该系统为linux系统,在其他实施场景中,该系统还可以为其他操作系统,例如windows系统。

通过上述描述可知,本实施例通过在检测到cpu当前资源总占用率s_cpuusagerate超过cpu资源告警激活门限g_cpualarmthreshold时,按照进程优先级从低到高的顺序逐步限制系统中的进程对cpu的占用率,可以在不影响进程运行的情况下有效释放cpu资源,给优先级高的重要的进程运行提供足够的资源保障,可以确保系统运行顺利,提高用户体验。

请参阅图4,图4是本发明提供的资源调度方法的第三实施例的流程示意图。本发明提供的资源调度方法包括:

s401:周期性获取系统中的中央处理器的当前资源总占用率。

s402:判断所述当前资源总占用率是否大于或等于预设的中央处理器资源告警激活门限。

本实施例中的步骤s401-s402与本发明提供的资源调度方法的第一实施例中的步骤s101-s102基本一致,此处不再赘述。

s403:如果所述当前资源总占用率小于所述中央处理器资源告警激活门限,则判断所述当前资源总占用率是否大于或等于预设的中央处理器资源安全门限。

在一个具体的实施场景中,除了预设cpu资源告警激活门限以外,还预设cpu资源安全门限,cpu资源安全门限低于cpu资源告警激活门限。当判断出cpu当前资源总占用率小于cpu资源告警激活门限时,进一步判断cpu当前资源总占用率与cpu资源安全门限的大小。

s404:如果所述当前资源总占用率大于或等于所述中央处理器资源安全门限,则维持当前的资源调度情况。

在一个具体的实施场景中,cpu当前资源总占用率大于或等于cpu资源安全门限,且小于cpu资源告警激活门限,则表示当前cpu资源充裕,足够重要的进程运行所需,并且也没有资源过剩。因此无需进行资源调度的步骤,维持当前的资源调度情况。

在本实施场景中,按照固定的周期执行该资源调度方法,在其他实施场景中,该资源调度方法可以为事件触发,例如,检测到用户手动启动该资源调度方法,或者检测到cpu温度超过预设阈值等。在本实施场景中,在本周期中当前资源总占用率大于或等于所述中央处理器资源安全门限,维持当前的资源调度情况,在下一个周期,将继续获取cpu当前资源总占用率,重复步骤s401-s404。

在本实施场景中,该系统为linux系统,在其他实施场景中,该系统还可以为其他操作系统,例如windows系统。

通过上述描述可知,本实施例在检测到cpu当前资源总占用率于或等于cpu资源安全门限,且小于cpu资源告警激活门限时,维持当前资源调度情况,可以保证cpu资源没有过剩而造成资源浪费,也可以在cpu资源不足的情况下有效释放cpu资源,给重要的进程运行提供足够的资源保障,可以确保系统运行顺利,提高用户体验。

请参阅图5,图5是本发明提供的资源调度方法的第四实施例的流程示意图。本发明提供的资源调度方法包括:

s501:周期性获取系统中的中央处理器的当前资源总占用率。

s502:判断所述当前资源总占用率是否大于或等于预设的中央处理器资源告警激活门限。

s503:如果所述当前资源总占用率小于所述中央处理器资源告警激活门限,则判断所述当前资源总占用率是否大于或等于预设的中央处理器资源安全门限。

本实施例中的步骤s501-s503与本发明提供的资源调度方法的第三实施例中的步骤s401-s403基本一致,此处不再赘述。

s504:如果所述当前资源总占用率小于所述中央处理器资源安全门限,则判断所述当前资源总占用率是否大于或等于预设的中央处理器资源告警取消门限。

在一个具体的实施场景中,预设cpu资源告警取消门限,cpu资源告警取消门限小于cpu资源安全门限。若cpu当前资源总占用率小于cpu资源安全门限,则表示当前cpu资源十分充足,可以解除一些进程对cpu占用率的限制。

s505:如果所述当前资源总占用率大于或等于所述中央处理器资源告警取消门限,则按照优先级从高到低的顺序逐步解除对所述系统中的进程对中央处理器的占用率的限制。

在一个具体的实施场景中,若cpu当前资源总占用率小于cpu资源安全门限,但是大于或等于cpu资源告警取消门限,表示则表示当前cpu资源过剩,可以解除一些进程对cpu占用率的限制。在本实施场景中,按照优先级从高到低的顺序逐步对系统中的进程对cpu的占用率的限制,可以让优先级高、重要性高的进程优先享有充足的cpu资源,有助于重要进程的顺利进行。

具体地,请结合参阅图6,图6是本发明提供的解除对系统中的进程对cpu的占用率的限制的方法的一实施例的流程示意图。本发明提供的解除对系统中的进程对cpu的占用率的限制的方法包括:

s601:判断当前调度的所述进程的优先级是否高于最低优先级。

在一个具体的实施场景中,获取所有进程的优先级,并确定其中的最低优先级。在其他实施场景中,可以预先指定一个优先级为最低优先级。将当前调度的进程的优先级与最低优先级进行比较,判断当前调度的进程的优先级是否高于最低优先级。

s602:如果高于,则解除当前调度的所述进程对中央处理器的占用率限制。

在一个具体的实施场景中,当前调度的进程的优先级高于最低优先级,则解除对该进程对cpu的占用率的限制,例如可以恢复到该进程对cpu的最大占用率。在其他实施场景中,如果前调度的进程的优先级高于最低优先级,则保留对该进程对cpu的占用率的限制。

在本实施场景中,按照固定的周期执行该资源调度方法,在其他实施场景中,该资源调度方法可以为事件触发,例如,检测到用户手动启动该资源调度方法,或者检测到cpu温度超过预设阈值等。在本实施场景中,在本周期中解除了一个进程对cpu占用率的限制后将不进行其他操作,在下一个周期,将继续获取cpu当前资源总占用率,重复步骤s501-s505。

在本实施场景中,该系统为linux系统,在其他实施场景中,该系统还可以为其他操作系统,例如windows系统。

通过上述描述可知,本实施例中当检测到前资源总占用率小于cpu资源安全门限,且大于或等于预设的cpu资源告警取消门限时,按照优先级从高到低的顺序逐步限制所述系统中的进程对cpu的占用率,可以在cpu资源过剩时,优先使得优先级高、重要性高的进程占用更多的cpu资源,可以提高重要进程的运行效率,避免资源浪费,提高用户体验。

请参阅图7,图7是本发明提供的资源调度方法的第五实施例的流程示意图。本发明提供的资源调度方法包括:

s701:cpu当前资源总占用率s_cpuusagerate>=cpu资源告警激活门限g_cpuunalarmthreshold并且cpu当前资源总占用率s_cpuusagerate<cpu资源安全门限g_cpusafethreshold。

在一个具体的实施场景中,检测到g_cpuunalarmthreshold<=s_cpuusagerate<g_cpusafethreshold时,表示当前cpu的资源总占用率较低,可能会造成资源浪费,因此需要解除至少部分进程对cpu占用率的限制,以充分利用cpu的资源。

s702:判断系统当前的调度状态sm_status是否等于2。

在本实施场景中,当判定需要解除各进程对cpu的占用率的限制时,读取系统当前的调度状态sm_status的值。

在本实施场景中,sm_status=0时,表示系统当前处于调度中;sm_status=1时表示所有待调度的进程对cpu的占用率均已限制到最低,即限制到每个进程的保证cpu占用率;sm_status=2时表示已经解除所有待调度的进程对cpu占用率的限制。当sm_status=2时,没有待调度的进程需要解除其对cpu占用的限制,执行步骤s709,结束本次资源调度。当sm_status≠2时,可能存在待调度的进程可以解除其对cpu占用率的限制,执行步骤s703。

s703:判断前调度的进程的优先级序号sm_procdispatchnum是否为null。

在一个具体的实施场景中,若sm_procdispatchnum=null,表示当前没有调度任何进程,执行步骤s704,若sm_procdispatchnum≠null,则表示系统当前处于调度状态,sm_procdispatchnum的值即为当前调度的进程的优先级序号,执行步骤s705。

s704:令当前调度的进程的优先级序号sm_procdispatchnum=最高优先级序号g_procpriorityhighestnum;

系统当前的调度状态sm_proclimitcpurate=null。

在一个具体的实施场景中,sm_procdispatchnum=null,表示当前没有调度任何进程,令m_procdispatchnum=g_procpriorityhighestnum,即为若调度尚未开始,则从优先级最高的进程开始调度,执行步骤s707。在本实施场景中,系统先获取所有待调度进程的优先级序号,并找出其中的最高优先级序号g_procpriorityhighestnum。在其他实施场景中,可以预先指定一个优先级序号为最高优先级序号。sm_status=0时,表示系统当前处于调度中。

s705:判断当前调度的进程的优先级序号sm_procdispatchnum是否小于或等于最低优先级序号g_procprioritylowestnum。

在一个具体的实施场景中,系统先获取所有待调度进程的优先级序号,并找出最低优先级序号g_procprioritylowestnum。在其他实施场景中,可以预先指定一个优先级序号为最高优先级序号。在本实施场景中,sm_procdispatchnum≠null,也就是说系统当前处于资源调度状态,sm_procdispatchnum的值即为当前调度的进程的优先级序号。将sm_procdispatchnum与g_procprioritylowestnum比较大小,在本实施场景中,进程的优先级序号越大,则该进程的优先级越低,例如优先级序号为99的进程的优先级低于优先级序号为1的进程的优先级。如果sm_procdispatchnum<=g_procprioritylowestnum,表示当前调度的进程的优先级高于或等于最低优先级,则可以解除该进程对cpu的占用率的限制。如果sm_procdispatchnum>g_procpriorityhighestnum,表示当前调度的进程的优先级低于于最低优先级,则意味着所有可调度的进程对cpu的占用率的限制均已被解除,执行步骤s706。

s706:令系统当前的调度状态sm_status=2;

当前调度的进程的优先级序号sm_procdispatchnum=null;

当前cpu占用率被限制到的真实值sm_proclimitcpurate=null。

在一个具体的实施场景中,sm_procdispatchnum<=g_procprioritylowestnum。因此,将sm_status的值设置为2,表示所有待调度的进程对cpu的占用率的限制均已解除,令sm_procdispatchnum=null,令sm_proclimitcpurate=null,表示本次资源调度结束,执行步骤709,结束本次资源调度。

s707:解除编号为sm_procdispatchnum的进程对cpu的占用率限制。

在一个具体的实施场景中,sm_proclimitcpurate<=g_procprioritylowestnum,则解除该进程对cpu占用率的限制,进一步的,可以将其对cpu的占用率该为其对cpu的最大占用率l_procmaxcpurate[sm_procdispatchnum]。

s708:当前调度的进程的优先级序号sm_procdispatchnum+1;

当前cpu占用率被限制到的真实值sm_proclimitcpurate=null;

系统当前的调度状态sm_status=0。

在一个具体的实施场景中,已经解除该进程对cpu的占用率的限制,则将sm_procdispatchnum加1,在后续步骤中将解除优先级低1级的进程进行cpu占用率的限制。令sm_proclimitcpurate=null,表示本次资源调度中对该进程的对cpu占用率的限制已经完成,将sm_status的值设置为0,表示系统当前处于调度中,然后执行步骤s709,结束本次资源调度。

s709:exit.

结束本次调度。

在本实施场景中,按照固定的周期执行该资源调度方法,在其他实施场景中,该资源调度方法可以为事件触发,例如,检测到优先级高于预设阈值的进程启动时,或者检测到对中央处理器的占用率高于预设阈值时,执行该资源调度方法。

在本实施场景中,该系统为linux系统,在其他实施场景中,该系统还可以为其他操作系统,例如windows系统。

通过上述描述可知,本实施例在检测到cpu资源告警激活门限g_cpuunalarmthreshold<=cpu当前资源总占用率s_cpuusagerate<cpu资源安全门限g_cpusafethreshold时,从有优先级最高的进程开始,按照优先级从高到底依次解除系统中进程对cpu的限制,使得优先级高、重要性高的进程占用更多的cpu资源,可以提高重要进程的运行效率,避免资源浪费,提高用户体验。

请参阅图8,图8是本发明提供的资源调度方法的第六实施例的流程示意图。本发明提供的资源调度方法包括:

s801:周期性获取系统中的中央处理器的当前资源总占用率。

s802:判断所述当前资源总占用率是否大于或等于预设的中央处理器资源告警激活门限。

s803:如果所述当前资源总占用率小于所述中央处理器资源告警激活门限,则判断所述当前资源总占用率是否大于或等于预设的中央处理器资源安全门限。

s804:如果所述当前资源总占用率小于所述中央处理器资源安全门限,则判断所述当前资源总占用率是否大于或等于预设的中央处理器资源告警取消门限。

本实施例中的步骤s801-s804与本发明提供的资源调度方法的第四实施例中的步骤s501-s504基本一致,此处不再赘述。

s805:如果所述系统中央处理器资源总占用率小于所述系统中央处理器资源告警取消门限,则解除所述系统中所有所述进程对中央处理器的占用率限制。

在一个具体的实施场景中,cpu资源告警取消门限小于cpu资源安全门限,当cpu资源总占用率小于cpu资源安全门限时,将cpu资源总占用率与cpu资源告警取消门限比较。若cpu资源总占用率小于cpu资源告警取消门限,表示cpu资源严重过剩,解除系统中所有进程对cpu的占用率的限制,以避免cpu资源浪费。

在本实施场景中,按照固定的周期执行该资源调度方法,在其他实施场景中,该资源调度方法可以为事件触发,例如,检测到用户手动启动该资源调度方法,或者检测到cpu温度超过预设阈值等。在本实施场景中,在本周期中解除了所有进程对cpu占用率的限制后将不进行其他操作,在下一个周期,将继续获取cpu当前资源总占用率,重复步骤s801-s805。

在本实施场景中,该系统为linux系统,在其他实施场景中,该系统还可以为其他操作系统,例如windows系统。

通过上述描述可知,本实施例中当检测到cpu资源总占用率小于cpu资源告警取消门限时,解除系统中所有进程对cpu的占用率的限制,避免cpu资源浪费。

请参阅图9,图9是本发明提供的资源调度装置的结构示意图。资源调度装置10包括:处理器11、存储器12和通信电路13,存储器12用于存储程序数据,处理器11用于运行存储器12中的程序数据以控制通信电路13进行通信并执行如下方法:

在一个具体的实施场景中,在一个预设周期内,获取系统中的cpu(centralprocessingunit,中央处理器)的当前资源总占用率,并将当前资源总占用率与预设的cpu资源告警激活门限进行对比,判断cpu当前资源总占用率是否大于或等于预设的cpu资源告警激活门限,其中cpu资源告警激活门限是指cpu资源可被占用的最大值。

在本实施场景中,本周期中cpu当前资源总占用率大于或等于预设的cpu资源告警激活门限,表示当前cpu的资源占用率过高,可能会影响某些重要的进程得不到所需的资源,从而造成系统运行卡顿。因此按照进程优先级从低到高的顺序逐步限制系统中的进程对cpu的占用率。

在另一个实施场景中,除了预设cpu资源告警激活门限以外,还预设cpu资源安全门限,cpu资源安全门限低于cpu资源告警激活门限。当判断出本周期内cpu当前资源总占用率小于cpu资源告警激活门限时,进一步判断本周期内cpu当前资源总占用率与cpu资源安全门限的大小。如果所述cpu当前资源总占用率大于或等于cpu资源安全门限,表示当前cpu资源被充分利用且不存在资源紧张,则维持当前的资源调度情况。

在另一个实施场景中,还预设cpu资源告警取消门限,cpu资源告警取消门限小于cpu资源安全门限。若本周期内cpu当前资源总占用率小于cpu资源安全门限,将本周期内的cpu资源总占用率与cpu资源告警取消门限比较,若大于或等于cpu资源告警取消门限,表示则表示当前cpu资源过剩,可以解除一些进程对cpu占用率的限制。在本实施场景中,按照优先级从高到低的顺序逐步限制系统中的进程对cpu的占用率,可以让优先级高、重要性高的进程优先享有充足的cpu资源,有助于重要进程的顺利进行。

在另一个实施场景中,本周期内cpu当前资源总占用率小于cpu资源告警取消门限,表示cpu资源严重过剩,解除系统中所有进程对cpu的占用率的限制,以避免cpu资源浪费。

通过上述描述可知,本实施例在一个预设周期内,通过将cpu当前资源总占用率与预设的cpu资源告警激活门限、cpu资源安全门限和cpu资源告警取消门限进行对比,根据比较的结果判断当前cpu的资源是使用紧张还是过剩,并采取对应的应对措施,可以保证在cpu资源紧张时,优先级高的重要进程可以有充足的cpu资源,而在cpu资源过剩时,优先级高的重要进程可以优先解除对cpu占用率的限制,从而占用更多的cpu资源,这样可以确保系统的顺利运行,且避免cpu资源被浪费,可以有效提高系统工作效率,提高用户体验。

请参阅图10,图10是本发明提供的具有存储功能的装置的一实施例的结构示意图。具有存储功能的装置20中存储有至少一个程序数据21,程序数据21用于执行如图1-图8所示的资源调度的方法。在一个实施例中,具有存储功能的装置可以是终端中的存储芯片、硬盘或者是移动硬盘或者优盘、光盘等其他可读写存储的工具,还可以是服务器等等。

通过上述描述可知,本发明具有存储功能的装置实施例中存储的程序可以在cpu资源紧张时,使得优先级高的重要进程可以有充足的cpu资源,而在cpu资源过剩时,优先级高的重要进程可以优先解除对cpu占用率的限制,从而占用更多的cpu资源,这样可以确保系统的顺利运行,且避免cpu资源被浪费,可以有效提高系统工作效率,提高用户体验。

区别于现有技术,本发明在cpu当前资源总占用率大于或等于预设的cpu资源告警激活门限时,按照进程优先级从低到高的顺序逐步限制系统中的进程对cpu的占用率;在cpu资源安全门限小于cpu资源告警激活门限且大于或等于cpu资源安全门限时,则维持当前的资源调度情况。在cpu当前资源总占用率小于cpu资源安全门限,且大于或等于cpu资源告警取消门限时,按照优先级从高到低的顺序逐步限制系统中的进程对cpu的占用率;在cpu当前资源总占用率小于cpu资源告警取消门限时,解除系统中所有进程对cpu的占用率的限制。这样可以在cpu资源紧张时,使得优先级高的重要进程可以有充足的cpu资源,而在cpu资源过剩时,优先级高的重要进程可以优先解除对cpu占用率的限制,从而占用更多的cpu资源,这样可以确保系统的顺利运行,且避免cpu资源被浪费,可以有效提高系统工作效率,提高用户体验。

以上所述仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1