具体实施方式
如背景技术所述,由于缺乏基于实时监控数据的分析所得出的有效的监控策略,因此现有的技术方案无法从有效地实现各主控板CPU使用率的均衡分布。
针对上述问题,本发明的核心思想是:获取各进程(包括可倒换进程和不可倒换进程)的CPU使用率信息及其使用周期,确定单周期内某进程CPU的使用量。然后根据预设的CPU使用率的阈值,减去各主控板上已分配的CPU使用率(不可倒换进程的CPU使用率和/或预留的CPU使用率),通过每块主控板上可分配的CPU使用率确定各主控板上可分配的CPU处理总量。最后对可倒换的进程进行分布:使运行在同一主控板上的可倒换进程的CPU使用率的波峰相互错开,并使各主控板上已分配的可倒换进程的主控进程和备份进程在单个周期内的CPU处理总量的总和尽量接近于各主控板上可用于倒换主控进程的处理总量,从而达到各主控板CPU使用率的均衡。
相应地,本发明实施例提供了一种可倒换进程的分配方法,如图2所述,该方法具体包括以下步骤:
S201,按照预先设置的分配顺序为各主控板分别分配可倒换进程;
具体地,首先为当前的各主控板设置一个固定的分配顺序,在后续的分配过程中依据该顺序对主控板依次进行选择判断。在该步骤中,可采取主用主控板排在首位,其余备用主控板按照编号升序排序的方式,也可采取其他的方式,顺序的不同并不影响本发明的保护范围。
在为确定了分配顺序的主控板分配可倒换进程时,由于是按照顺序一一对应分配,因此将每轮分配周期根据奇偶进行划分,在奇数的分配周期内,将当前待分配的可倒换进程按照周期从小至大的顺序,依次与各主控板当前已分配的可倒换进程进行如下处理:
判断当前的待分配可倒换进程的周期是否与主控板上已分配的各可倒换进程周期互质,若为互质则直接转入下一步,若不为互质,则选择下一个待分配可倒换进程继续判断,当判断不存在与主控板上已分配的各可倒换进程周期均互质的待分配可倒换进程时,则选择一个与主控板上已分配的各可倒换进程周期互质个数最多的待分配可倒换进程转入下一步。
需要说明的是,由于1不与任何的数互质,所以当主控板上已分配的可倒换进程的周期为1时,则直接选择分配可倒换进程并转至下一步;
判断上一步骤中所选择的可倒换进程的主备处理量差值是否大于当前主控板可用于倒换主控进程的剩余处理量,若大于,则在剩余的待分配可倒换进程中按照上一步骤重新进行选择。
类似的,在偶数的分配周期内,将当前待分配的可倒换进程按照周期从大至小的顺序,依次与各主控板当前已分配的可倒换进程进行以上相同的处理过程。
通过以上的处理过程,可使当前主控板上已分配的各个可倒换进程的波峰互相错开,从而使得所有可倒换进程在任一时刻的使用率叠加值不高于主控板的可分配使用率。
由于每个可倒换进程的备用进程彼此之间相差不大,因此可被认为近似相同。本发明的技术方案预先假设每块主控板运行的均为可倒换进程的备用进程,并确定每个可倒换进程的主控进程的处理量与平均备用进程处理量之间的差值,通过可用于倒换主控进程的剩余处理量确定每块主控板可以容纳将多少备份进程转为主控进程,以及判断当前的待分配可倒换进程是否可被分配于该主控板上。
S202,根据分配结果生成分配策略,并依据所述分配策略对所述可倒换进程进行倒换。
在该步骤中,首先根据各所述主控板的主控进程分布情况以及分配策略,判断当前是否存在需要倒换的主控进程,并在判断结果为是的情况下在合适的倒换时机按照分配策略将所述需要倒换的主控进程进行倒换。
基于系统稳定性的考虑,在判断对可倒换进程的倒换时机时,需要遵循以下三条原则:
(1)、进程当前所在主控板CPU使用率较低;
(2)、进程倒换的目标主控板CPU使用率较低;
(3)、该进程的波峰刚刚过去。
根据以上三条原则,首先选择两块使用率低于一定阈值的主控板,判断是否有尚未倒换的主控进程,并在判断的过程中确定需要倒换的主控进程的数量,若有且只有一个尚未倒换的主控进程,则依据所述分配策略对所述主控进程进行倒换;若存在多个尚未倒换的主控进程,则依据所述分配策略对距使用率波峰值到达时间最远的主控进程进行倒换。
S203,监控各所述主控板的可倒换进程分配是否改变,若是,则转至步骤S201,若否则不做任何处理。
为了进一步阐述本发明的技术思想,现结合具体的应用场景,对本发明的技术方案进行说明。
如图3所示,为本发明具体实施例所提出的一种可倒换进程分配方法的流程示意图,包括如下步骤:
S301,配置监控时间和CPU使用率的阈值。
当配置监控进程的监控时间时,触发监控进程开启,定时器开始计时,定时器的超时时间即所配置的监控时间,定时器超时后,监控进程进入休眠状态。若要重新开启监控进程,需要再次配置监控时间。
需要指出的是,在该步骤中所配置的监控时间将高于一定的阈值,该阈值至少大于被监控的进程的周期。且该阈值越大,在监控时间不是被监控的进程周期的整数倍时,所计算出的各进程CPU平均使用率的误差则越小。
S302,获取各进程的CPU使用率和CPU使用周期。
在具体的应用场景中,为获取各进程的CPU使用率,可通过linux自带的/bin/top进程获取每个时间点的CPU各进程消耗情况,从而得到各业务的主控进程和备份进程在监控时间内的CPU的平均使用率。
而对于各进程的CPU使用周期,则需要根据具体情况进行选择性处理:对于有配置周期时间的进程,可以通过获取运行数据中的hello报文配置时间直接得到该进程的CPU使用周期;对于无法直接获取配置周期时间的进程,则可利用各个时间点的CPU的使用率情况来算得。具体地,在进程的CPU使用率记录中,寻找CPU使用率大于CPU的平均使用率,且前一时刻CPU使用率小于CPU的平均使用率的时间点,只要记录相邻两次这样的时间点,即可根据二次时间点的差值计算出CPU使用周期。
S303,利用监控进程记录的数据确定进程分布策略。
具体地,该步骤可分为以下若干过程:
(1)基于步骤302中所获取的各可倒换进程的主控进程和备份进程在监控时间内的CPU的平均使用率,根据监控所得数据以及实际经验,给主用主控板预留一部分的CPU使用率,再结合步骤301中配置的CPU使用率阈值,通过以下公式确定各主控板上剩余可分配的CPU使用率:
U主=阈值-∑U不可倒主-α
U备i=阈值-∑U不可倒备,(i=1,2,…n)
在上述公式中,U主代表主用主控板可分配的CPU使用率,U备i代表第i块备用主控板可分配的CPU使用率,i的取值不大于当前系统中所有备用主控板的数量n,α为主用主控板的CPU使用率预留值。
(2)通过以下公式确定每个可倒换进程的主控进程和备份进程在单周期内的CPU处理总量主j以及备j:
单周期内的CPU处理总量=CPU的平均使用率*CPU使用周期。
(3)通过以下公式确定主用主控板和备用主控板上需要分布的CPU处理总量的理论值:
M主=U主/(U主+∑U备i)*(∑主j+∑备j),(i=1,2,…n;j=1,2,…m)
M备i=U备i/(U主+∑U备i)*(∑主j+∑备j),(i=1,2,…n;j=1,2,…m)
其中,主j代表第j个可倒换进程的主控进程单周期内的CPU处理总量;备j代表第j个可倒换进程的备份进程单周期内的CPU处理总量,j的取值不大于当前系统中所有可倒换进程的数量m。
(4)确定进程的分布策略:
具体地,在该过程中,首先将当前系统中的可倒换进行按照各自的CPU使用周期Tj值进行排序,再从小至大依次选择与主控板数量相同的可倒换进程,将其分别分布在预先设定好顺序位的主控板上,主控板的顺序可采用如下的设置方式:主用主控板排在首位,其余备用主控板按照编号升序排序。
然后,依据以上定义的主控板顺序位,各主控板依次以周期从大至小的关系从剩余的可倒换进程中选择与已分配的主控进程的周期最小公倍数最大的可倒换进程。在本具体实施例中,各主控板当判断某个主控进程的周期与主控板上的主控进程的周期互质时,则停止轮询,若遍历之后不存在这样的数,则选择与主控板上的主控进程周期存在最多互质个数的周期的对应进程作为选中进程。而当已有的主控进程为1时,则仅按照排序关系选择即可。当所有的主控板均选择完毕之后,将相应的主控进程分布在主控板上,其备份进程分布在其他主控板上。
连续地,主控板按照预先设定的顺序位,继续按照周期升序和降序更替的方式从剩余的可倒换进程中选择,直至所有的可倒换进程都被选择完毕。
在上述分配的过程中,当某次选择过后,某块主控板上的CPU处理总量的理论值减去所有分布在其主控板上的主控进程和备份进程的单周期CPU处理总量小于零时,则取消此次选择,并从剩余的主控进程中选择使两者的差值绝对值最小的周期的对应进程作为其选中进程,并将该差值与在不选择任何进程情况下的CPU处理总量的理论值与所有分布在其主控板上的主控进程和备份进程的差值绝对值进行比较,若后者更小的话,则放弃该次选择。
最后,输出参数为一个二维向量的集合作为可倒换进程的分布策略,其中每个可倒换进程对应一个二维向量“L-source,L-destination”,L-source为该可倒换进程的主控进程当前所在的位置,L-destination为经过进程的分布策略计算后该可倒换进程的主控进程期望所在的位置。
S304,判断是否有需要倒换的进程,若是,则转至S305;若否,则转至步骤S307。
在计算进程分布策略完成后,通知监控进程,监控进程将当前各主控板上的进程与已有的分布策略进行对比,判断所有的可倒换进程是否已按照分布策略分布完毕。
S305,判断是否有合适的倒换时机,若是,则转至S306;若否,则转至步骤S304。
在该步骤中,首先从系统中选取CPU使用率低于一定阈值的主控板,随机选取其中的两块主控板形成组合,查询是否有需要倒换的进程刚好是要从这两块间进行倒换。
需要指出的是,如果遍历完当前可用的组合依旧没有可以倒换的时机,则可在等待一段时间重复该流程,该段时间可为一个监控周期,也可以为其他时间,具体时间长短可根据实际需要灵活设置,并不影响本发明的保护范围。
S306,对进程进行倒换。
当有多个需要倒换的进程刚好要从被选中的CPU使用率较低的主控板间进行倒换,则选取预计下次波峰到来时间最远的进程进行倒换。其中,下次波峰到来预期时间为上次波峰结束时间加上进程周期后与当前时间的差值。
S307,完成可倒换进程的分配。
S308,判断配置是否已更改,若是,则转至步骤301,若否,则转至步骤307。
倒换完成后,监控进程处于休眠状态,系统将按照这个进程分布状态运行。若用户修改相关配置,从而导致了各主控板上的CPU使用率变化,则监控进程选择重新进行可倒换进程的分配,保证各主控板的稳定运行。
以上为本发明所提出的一种可倒换进程的分配方法具体实施例,除此之外,本发明还提出了另一种可倒换进程的分配方法具体实施例,由于该实施例中仅对上一实施例的步骤S303进行改进,因此以下仅对该改进后的步骤的详细流程进行描述:
(1)获取代表主用主控板可分配的CPU使用率的U主,以及代表第i块备用主控板可分配的CPU使用率U备i,再将U主以及U备i减去备用进程的平均CPU使用率,获得代表主用主控板上剩余的可用于倒换主控进程的CPU使用率U主余和代表第i块备用主控板上剩余的可用于倒换主控进程的CPU使用率U备余i。
由于所有的可倒换进程对应于每个备用主控板均有备用进程,且所有的备用进程在CPU使用率上差距几乎相同,因此在计算主用主控板与备用主控板的剩余CPU可分配量时,可预先减去当前所有可倒换进程的备用进程的平均CPU使用率。
(2)通过以下公式分别确定可倒换进程的主控进程和备份进程在单周期内的CPU处理总量主j以及备j:
单周期内的CPU处理总量=CPU的平均使用率*CPU使用周期。
(3)通过以下公式确定主用主控板和备用主控板上可用于倒换主控进程的CPU剩余处理总量的理论值:
M主余=U主余/(U主余+∑U备余i)*(∑主j-∑备j),(i=1,2,…n)
M备余i=U备余i/(U主余+∑U备余i)*(∑主j-∑备j),(i=1,2,…n)
(4)确定进程的分布策略:
具体地,在该过程中,首先将当前系统中的可倒换进程按照各自的CPU使用周期Tj值进行排序,再从小至大依次选择与主控板数量相同的可倒换进程,将其分别分布在预先设定好顺序位的主控板上,主控板的顺序可采用如下的设置方式:主用主控板排在首位,其余备用主控板按照编号升序排序。
然后,依据以上定义的主控板顺序位,各主控板依次以周期从大至小的关系从剩余的可倒换进程中选择与已分配的主控进程的周期最小公倍数最大的可倒换进程。在本具体实施例中,各主控板当判断某个主控进程的周期与主控板上的主控进程的周期互质时,则停止轮询,若遍历之后不存在这样的数,则选择与主控板上的主控进程周期存在最多互质个数的周期的对应进程作为选中进程。而当已有的主控进程为1时,则仅按照排序关系选择即可。当所有的主控板均选择完毕之后,将相应的主控进程分布在主控板上,其备份进程分布在其他主控板上。
连续地,主控板按照预先设定的顺序位,继续按照周期升序和降序更替的方式从剩余的可倒换进程中选择,直至所有的可倒换进程都被选择完毕。
当某次选择过后,若某块主控板上的可用于倒换主控进程的剩余处理量减去所有分布在其主控板上的可倒换进程的主备处理量差值小于零时,则取消此次选择,并从剩余的主控进程中选择使两者的差值绝对值最小的进程作为其选中进程,并将该差值与在不选择任何进程情况下的CPU处理总量的理论值与所有分布在其主控板上的主控进程和备份进程的差值绝对值进行比较,若后者更小的话,则放弃该次选择。
最后,输出参数为一个二维向量的集合作为可倒换进程的分布策略,其中每个可倒换进程对应一个二维向量“L-source,L-destination”,L-source为该可倒换进程的主控进程当前所在的位置,L-destination为经过进程的分布策略计算后该可倒换进程的主控进程期望所在的位置。
以上为对前一实施例中“S303”的另一具体实施过程,虽然二者之间的步骤略有不同,但是其各自所达到的技术效果是一致的,即输出可靠的二维向量的集合作为可倒换进程的分布策略。本领域技术人员可根据实际情况在以上方法中进行选择,这样的改变并不影响本发明的保护范围。
由此可见,通过应用以上技术方案,使运行在同一主控板上的可倒换进程的CPU使用率的波峰相互错开,并使各主控板上已分配的可倒换进程在单个周期内的CPU处理总量的叠加值不大于各主控板上可分配的CPU使用率,从而达到各主控板CPU使用率的均衡。
为了实现上述的技术方案,如图4所述,本发明还提供了一种可倒换进程分配设备,应用于包括多个主控板的系统中,其特征在于,包括:
分配模块410,用于按照预先设置的分配顺序为各主控板分别分配可倒换进程,所述可倒换进程的主备处理量差值不大于当前主控板可用于倒换主控进程的剩余处理量,且所述主控板上已分配的可倒换进程在任一时刻的使用率叠加值不高于所述主控板的可分配使用率;
执行模块420,用于根据分配模块410的分配结果生成分配策略,并依据所述分配策略对所述可倒换进程进行倒换;
其中,所述可倒换进程的主备处理量差值为所述可倒换进程的主控进程处理量与平均备用进程处理量之间的差值;所述可用于倒换主控进程的剩余处理量为主控板可用于倒换主控进程的处理总量减去所述主控板已分配的可倒换进程的主备处理量差值;
分配模块410按照预先设置的分配顺序为各主控板分别分配可倒换进程,具体为:
在奇数的分配周期内,按照各可倒换进程的周期从小至大依次分配一个可倒换进程;
在偶数的分配周期内,按照各可倒换进程的周期从大至小依次分配一个可倒换进程。
进一步地,在具体的应用场景中,分配模块410,具体用于:
若待分配的可倒换进程的周期与所述主控板上已分配的各可倒换进程的周期互质,则为所述主控板分配所述待分配的可倒换进程;或,
若待分配的可倒换进程的周期与所述主控板上已分配的各可倒换进程的周期存在最多的互质组合,则为所述主控板分配所述待分配的可倒换进程;或,
若待分配的可倒换进程的周期与所述主控板上已分配的各可倒换进程的周期均不互质,则按照所述分配周期内各可倒换进程的周期顺序为所述主控板分配待分配的可倒换进程。
进一步地,在具体的应用场景中,分配策略包括各可倒换进程的主控进程当前的位置,以及经过分配后的期望位置,执行模块420,具体用于:
根据各所述主控板的可倒换进程分布情况以及分配策略,判断当前是否存在需要倒换的主控进程,并在判断结果为是的情况下在合适的倒换时机按照分配策略将所述需要倒换的主控进程进行倒换。
进一步地,在具体的应用场景中,执行模块420,具体用于:
选择两块使用率低于一定阈值的主控板,判断是否有尚未倒换的主控进程;
若有且只有一个尚未倒换的主控进程,则依据所述分配策略对所述主控进程进行倒换;
若存在多个尚未倒换的主控进程,则依据所述分配策略对距使用率波峰值到达时间最远的主控进程进行倒换。
进一步地,在具体的应用场景中,还包括:
监控模块430,用于监控各所述主控板的可倒换进程分配是否改变,若是,则重新为预先设置分配顺序的各主控板分配可倒换进程。
与现有技术相比,本发明实施例所提出的技术方案具有以下优点:
通过应用本发明实施例的技术方案,基于各可倒换进程的周期及其平均使用率,合理配置各主控板上主控进程及备份进程的分布策略,从而能够根据当前的硬件配置以及网络情况自动地对对进程进行合理分布优化,尽可能降低系统中出现CPU异常繁忙的概率,提高了硬件的运行稳定性。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施场景所述的方法。
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施场景的优劣。
以上公开的仅为本发明的几个具体实施场景,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。