CN106649042A - 一种cpu负载信息的处理方法及处理装置 - Google Patents
一种cpu负载信息的处理方法及处理装置 Download PDFInfo
- Publication number
- CN106649042A CN106649042A CN201611236321.7A CN201611236321A CN106649042A CN 106649042 A CN106649042 A CN 106649042A CN 201611236321 A CN201611236321 A CN 201611236321A CN 106649042 A CN106649042 A CN 106649042A
- Authority
- CN
- China
- Prior art keywords
- value
- delay parameter
- preset value
- cpu
- target data
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3024—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
Landscapes
- Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例公开了一种CPU负载信息的处理方法及处理装置,涉及CPU技术领域,用于更加准确的检测CPU负载状态。本发明实施例方法包括:在执行目标线程时,将目标线程的执行时刻记录在执行时刻表中,目标线程为预先创建的最低优先级的循环线程,每次循环包括预设时长的睡眠;计算执行时刻表中时间相邻的执行时刻之间的间隔时长;根据间隔时长确定时延参数的取值,时延参数的取值与间隔时长正相关;当时延参数的取值超过第一预设值时,判定CPU中央处理器处于过载状态。
Description
技术领域
本发明涉及CPU技术领域,具体涉及一种CPU负载信息的处理方法及处理装置。
背景技术
随着CPU正在处理以及等待处理的业务增多,CPU负载不断增大,但是任何网络设备对业务的处理能力是有上限的,当CPU过载时,会因无法处理接收的所有业务而出现数据包丢失的情况,可能影响已接受业务的接续性,甚至,当CPU负载继续增大到一定程度时,会出现CPU崩溃。因此需要检测CPU的负载状态,判断CPU是否发生过载,以便采取进一步的过载保护措施。
现有技术中通常通过检测CPU利用率来确定CPU的负载状态。随着CPU正在处理以及等待处理的业务增多,检测到的CPU利用率逐渐升高,认为此时的CPU负载越大。
但是,在CPU利用率升高至100%之后,若CPU负载继续增大,CPU利用率不再升高,维持在100%,此时便难以依靠CPU利用率来检测CPU负载状态,因此难以准确的判断CPU是否发生过载。
发明内容
本发明实施例提供了一种CPU负载信息的处理方法及处理装置,用于解决现有技术通过CPU利用率来检测CPU负载状态准确率不高的问题。
为达到上述目的,本发明实施例的一方面提供了一种CPU负载信息的处理方法,所述方法包括:
在执行目标线程时,将所述目标线程的执行时刻记录在执行时刻表中,所述目标线程为预先创建的最低优先级的循环线程,每次循环包括预设时长的睡眠;
计算所述执行时刻表中时间相邻的所述执行时刻之间的间隔时长;
根据所述间隔时长确定时延参数的取值,所述时延参数的取值与所述间隔时长正相关;
当所述时延参数的取值超过第一预设值时,判定所述CPU中央处理器处于过载状态。
结合第一方面,在第一方面的第一种可能的实现方式中,所述根据所述间隔时长确定时延参数的取值包括:
计算所述间隔时长与所述预设时长的时长差值;
对所述时长差值进行加权平均计算,得到所述时延参数的取值。
结合第一方面或者第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述方法还包括:
接收目标数据包;
判断所述目标数据包是否为已接受业务;
若是,则放通所述目标数据包;
若否,则获取所述时延参数的取值;
根据所述时延参数的取值来判断是否放通所述目标数据包。
结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述根据所述时延参数的取值来判断是否放通所述目标数据包包括:
判断所述时延参数的取值是否超过第二预设值,所述第二预设值小于或者等于所述第一预设值;
若否,则放通所述目标数据包;
若是,则判断所述时延参数的取值是否超过第三预设值,所述第三预设值大于所述第二预设值,并且小于第四预设值,所述第四预设值对应于所述CPU的崩溃状态;
若是,则丢弃所述目标数据包;
若否,则根据所述时延参数的取值进行概率丢包,所述概率丢包的丢包概率与时延参数的取值正相关。
结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述根据所述时延参数的取值进行概率丢包包括:
生成所述第二预设值至所述第三预设值之间的随机数;
判断所述随机数是否处于所述第二预设值与所述时延参数的取值之间;
若是,则丢弃所述目标数据包;
若否,则放通所述目标数据包。
本发明实施例的第二方面提供了一种CPU负载信息的处理装置,包括:
记录模块,用于在执行目标线程时,将所述目标线程的执行时刻记录在执行时刻表中,所述目标线程为预先创建的最低优先级的循环线程,每次循环包括预设时长的睡眠;
计算模块,用于计算所述执行时刻表中时间相邻的所述执行时刻之间的间隔时长;
确定模块,用于根据所述间隔时长确定时延参数的取值,所述时延参数的取值与所述间隔时长正相关;
判定模块,用于当所述时延参数的取值超过第一预设值时,判定所述CPU处于过载状态。
结合第二方面,在第二方面的第一种可能的实现方式中,所述确定模块包括:
第一计算单元,用于计算所述间隔时长与所述预设时长的时长差值;
第二计算单元,用于对所述时长差值进行加权平均计算,得到所述时延参数的取值。
结合第二方面或者第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述处理装置还包括:
接收模块,用于接收目标数据包;
第一判断模块,用于判断所述目标数据包是否为已接受业务;
放通模块,用于当所述判断模块判定所述目标数据包为已接受业务时,放通所述目标数据包;
获取模块,用于当所述判断模块判定所述目标数据包不是已接受业务时,获取所述时延参数的取值;
第二判断模块,用于根据所述获取模块获取的所述时延参数的取值来判断是否放通所述目标数据包。
结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述第二判断模块包括:
第一判断单元,用于判断所述时延参数的取值是否超过第二预设值,所述第二预设值小于或者等于所述第一预设值;
第一放通单元,用于当所述第一判断单元判定所述时延参数的取值未超过第二预设值时,放通所述目标数据包;
第二判断单元,用于当所述第一判断单元判定所述时延参数的取值超过第二预设值时,判断所述时延参数的取值是否超过第三预设值,所述第三预设值大于所述第二预设值,并且小于第四预设值,所述第四预设值对应于所述CPU的崩溃状态;
第一丢包单元,用于当所述第二判断单元判定所述时延参数的取值超过第三预设值时,丢弃所述目标数据包;
第二丢包单元,用于当所述第二判断单元判定所述时延参数的取值未超过第三预设值时,根据所述时延参数的取值进行概率丢包。
结合第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述第二丢包单元包括:
生成子单元,用于生成所述第二预设值至所述第三预设值之间的随机数;
判断子单元,用于判断所述随机数是否处于所述第二预设值与所述时延参数的取值之间;
丢包子单元,用于当所述判断子单元判定所述随机数处于所述第二预设值与所述时延参数的取值之间时,丢弃所述目标数据包;
放通子单元,用于当所述判断子单元判定所述随机数不处于所述第二预设值与所述时延参数的取值之间时,放通所述目标数据包。
从以上技术方案可以看出,本发明实施例具有以下优点:
本发明实施例基于预先创建的最低优先级的循环线程,每次循环包括预设时长的睡眠,CPU在执行目标线程时,会将目标线程的执行时刻记录在执行时刻表中,计算执行时刻表中时间相邻的执行时刻之间的间隔时长,并根据间隔时长确定时延参数的取值,时延参数的取值与间隔时长正相关。随着CPU正在处理以及等待处理的业务增多,CPU负载不断增大,执行目标线程的间隔时长不断延长,确定的时延参数的取值不断增大,这样,即使在CPU利用率升高至100%之后,若CPU负载继续增大,时延参数的取值仍然随之继续增大,因此依靠确定时延参数的取值能够更加准确的检测CPU负载状态,当时延参数的取值超过第一预设值时,可以判定CPU处于过载状态。
附图说明
图1是本发明CPU负载信息的处理方法一个实施例示意图;
图2是本发明CPU负载信息的处理方法另一个实施例示意图;
图3是本发明CPU负载信息的处理方法另一个实施例示意图;
图4是本发明CPU负载信息的处理装置一个实施例示意图;
图5是本发明CPU负载信息的处理装置另一个实施例示意图。
具体实施方式
本发明实施例提供了一种CPU负载信息的处理方法及处理装置,用于更加准确的检测CPU负载状态。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在CPU负载较小的情况下,CPU能够对接收的全部数据包进行正常处理,随着CPU正在处理以及等待处理的业务增多,CPU负载不断增大,由于网络设备对业务的处理能力是有上限的,当CPU过载时,CPU没有能力处理接收到的全部数据包,导致部分数据包丢失,若丢失的数据包属于已接受业务,会影响已接受业务的接续性,甚至,当CPU负载继续增大到一定程度时,会出现CPU崩溃,CPU将丢弃接收到的所有数据包。因此当CPU负载较大时,需要对CPU接收到的数据包进行卡控,主动丢弃一些新业务的数据包,一方面能够防止CPU因负载过大而崩溃,另一方面能够尽量保证已接受业务的接续性。为此,首要的需要对CPU的负载状态进行检测,判断CPU是否发生过载。
现有技术中通常通过检测CPU利用率来确定CPU的负载状态,随着CPU正在处理以及等待处理的业务增多,检测到的CPU利用率逐渐升高,认为此时的CPU负载增大。但是,在CPU利用率升高至100%之后,若CPU正在处理以及等待处理的业务继续增多,CPU利用率不再升高,仍维持在100%,但是此时CPU负载继续增大,因此依靠CPU利用率难以准确的检测CPU负载状态,难以准确的判断CPU是否发生过载。
为解决上述问题,本发明预先创建最低优先级的循环线程,该线程的每次循环包括预设时长的睡眠。若CPU正在处理以及等待处理的业务只有该循环线程,那么在该线程睡眠预设时长之后,CPU可以马上执行该线程,那么此次执行该线程的时刻距离前一次执行该线程的时刻的间隔时长最小,接近预设时长。随着CPU接收的业务不断增多,CPU正在处理以及等待处理的业务增多,那么在该线程睡眠预设时长之后,CPU无法马上执行该线程,该线程进入待处理线程队列,并且由于该线程的优先级最低,因此CPU需要优先处理其他待处理业务,最后才会执行该线程,那么此次执行该线程的时刻距离前一次执行该线程的时刻的间隔时长延长,远大于预设时长。因此,随着CPU正在处理以及等待处理的业务不断增多,CPU负载不断增大,此次执行该循环线程的时刻距离前一次执行该线程的时刻的间隔时长不断增大。这样,即使在CPU利用率升高至100%之后,若CPU负载继续增大,此次执行该循环线程的时刻距离前一次执行该线程的时刻的间隔时长仍然随之继续增大,因此依靠该间隔时长能够更加准确的检测CPU负载状态,判断CPU的过载状态。
为了便于本领域技术人员的理解,本发明通过以下实施例对本发明提供的技术方案的具体实现过程进行说明。
请参阅图1,本发明实施例中CPU负载信息的处理方法一个实施例包括:
101、将目标线程的执行时刻记录在执行时刻表中;
预先创建目标线程,该目标线程为最低优先级的循环线程,每次循环包括预设时长的睡眠。在执行目标线程时,将目标线程的执行时刻记录在执行时刻表中。若CPU为多核CPU,那么需要在每个CPU核上创建一个目标线程,并将该目标线程与该CPU核绑定,即该目标线程始终运行在该CPU上,用以检测各个CPU核的负载状态。
102、计算执行时刻表中时间相邻的执行时刻之间的间隔时长;
将目标线程的执行时刻记录在执行时刻表中之后,可以计算执行时刻表中时间相邻的执行时刻之间的间隔时长。
103、根据间隔时长确定时延参数的取值;
计算执行时刻表中时间相邻的执行时刻之间的间隔时长之后,可以根据最近一次或几次的间隔时长,可以确定时延参数的取值,时延参数的取值与间隔时长正相关。
104、当时延参数的取值超过第一预设值时,判定CPU处于过载状态。
在确定时延参数的取值之后,可以根据时延参数的取值判断CPU是否处于过载状态,当时延参数的取值超过第一预设值时,可以判定CPU处于过载状态。若CPU为多核CPU,确定的时延参数对应于该目标线程绑定的CPU核,根据该时延参数的取值可以判断其对应的CPU核是否处于过载状态。
随着CPU正在处理以及等待处理的业务增多,CPU负载不断增大,执行目标线程的间隔时长不断延长,确定的时延参数的取值不断增大,这样,即使在CPU利用率升高至100%之后,若CPU负载继续增大,时延参数的取值仍然随之继续增大,因此依靠确定时延参数的取值能够更加准确的检测CPU负载状态,当时延参数的取值超过第一预设值时,可以判定CPU处于过载状态。
在CPU上创建的目标线程可以为最低优先级的循环线程,每次循环包括预设时长的睡眠。那么,CPU每次执行该目标线程之后,该目标线程会转入睡眠状态,在睡眠预设时长后,该目标线程会进入CPU的待处理业务队列等待CPU再次执行。CPU在执行目标线程时,会将目标线程的执行时刻记录在执行时刻表中,计算执行时刻表中时间相邻的执行时刻之间的间隔时长,并根据间隔时长确定时延参数的取值,时延参数的取值与间隔时长正相关。在CPU上创建目标线程之后,可以目标线程之外设置目标线程的检测程序,检测目标线程的运行情况,并将目标线程的执行时刻记录在执行时刻表中,计算执行时刻表中时间相邻的执行时刻之间的间隔时长,并根据间隔时长确定时延参数的取值。为了提高记录的目标线程的执行时刻的准确性,减少另建目标线程的检测程序所占用的资源,可以在目标线程中加入相应的程序,来记录当前时刻,计算执行时刻表中时间相邻的执行时刻之间的间隔时长,并根据间隔时长确定时延参数的取值,将确定的时延参数的取值进行存储,供CPU获取,以检测CPU的负载状态。
其中,选取的预设时长过小,目标线程执行过于频繁,对CPU资源浪费过多,但是预设时长过长,由于CPU无法对睡眠时长内的负载状态进行检测,检测准确性降低。因此,使用者应根据实际应用需要对预设时长进行合理设置,一般情况下,预设时长的设置范围可以在2毫秒至100毫秒之间。
可选的,图1对应的实施例中,时延参数可以用以表示间隔时长相对于预设时长的时延,进一步的,为了减小时延参数的波动,可以对多个间隔时长对应的时延取平均值。具体,步骤103根据间隔时长确定时延参数的取值可以包括:计算间隔时长与预设时长的时长差值,之后可以对时长差值进行加权平均计算,得到时延参数的取值。为了便于本领域技术人员的理解,以下进行具体举例,以检测多核CPU的某一个CPU核负载状态为例,并且以在目标线程中加入相应的程序,来记录当前时刻,计算间隔时长,确定时延参数的取值为例,请参阅图2,本发明实施例中CPU负载信息的处理方法另一个实施例包括:
201、执行目标线程时,在第一时刻记录当前时刻;
在CPU核上创建的目标线程可以为最低优先级的循环线程,每次循环包括预设时长的睡眠。预设时长过小,目标线程执行过于频繁,对CPU资源浪费过多,但是预设时长过长,由于CPU无法对睡眠时长内的负载状态进行检测,检测的准确性降低。因此,使用者应根据实际应用需要对预设时长进行合理设置,一般情况下,预设时长的设置范围可以在2毫秒至100毫秒之间,本发明实施例以预设时长为20毫秒为例进行举例说明。本发明当该CPU核第n次执行该目标线程时(n为正整数),可以按照该目标线程中预设的程序记录当前时刻,记录的时刻即为该目标线程的执行时刻,并将记录的时刻存储在执行时刻表中。假设此时为第n次执行该目标线程,记录的当前时刻为第一时刻。
202、计算执行时刻表中第一时刻和与其时间相邻的第二时刻之间的间隔时长;
在记录第一时刻之后,可以从执行时刻表中获取与第一时刻时间相邻的第二时刻,第二时刻即为第一时刻之前该CPU核最近一次执行目标线程时记录的时刻,或者说,为该CPU核第n-1次执行该目标线程时记录的时刻,若n为1,那么第二时刻可以预设为0。比如执行时刻表中记录有三个时刻,分别是1点30分20秒5毫秒、1点30分20秒30毫秒、1点30分20秒60毫秒,假设1点30分20秒60毫秒为第一时刻,那么获取的第二时刻为1点30分20秒30毫秒。获取第二时刻之后,可以计算第一时刻与第二时刻之间的间隔时长,在本实施例中,第一时刻与第二时刻之间的间隔时长为30毫秒。
接下来需要根据间隔时长确定时延参数的取值,时延参数的取值与间隔时长正相关,具体的,可以为:
203、计算间隔时长与预设时长的时长差值;
计算得到第一时刻与第二时刻之间的间隔时长之后,可以计算间隔时长与预设时长的时长差值,在本实施例中,由于预设时长设置为20毫秒,因此时长差值为10毫秒。
204、对时长差值进行加权平均计算,得到时延参数的取值;
在第n-1次执行目标进程的过程中,CPU核计算的间隔时长为1点30分20秒5毫秒与1点30分20秒30毫秒之间的时间间隔,为25毫秒,得到的间隔时长与预设时长的时长差值为5毫秒。在计算得到第n次执行目标线程的时长差值之后,可以对第n次以及第n-1次执行该目标线程得到的时长差值进行加权平均计算,距离当前时刻越近,其权重可以越重,比如,最近一次的时长差值的权重为80%,其前一次计算得到的时长差值的权重为20%,那么经过加权平均计算得到的时延参数的取值为(80%*10毫秒+20%*5毫秒)=9毫秒。
可以理解的是,还可以选取更多的时长差值进行加权平均计算,本领域技术人员可以根据需要对加权平均计算的具体过程进行设置,此处不做限定。
205、判断时延参数的取值是否超过第一预设值,若是,则执行步骤206,若否,则执行步骤207;
在根据间隔时长确定时延参数的取值之后,可以判断时延参数的取值是否超过第一预设值,若是,则执行步骤206,若否,则执行步骤207。第一预设值可以通过对CPU的检测来具体设置,比如可以将CPU开始发生丢包时对应的时延参数的取值设置为第一预设值。
206、判定CPU处于过载状态;
若判定时延参数的取值超过第一预设值,则判定该CPU核处于过载状态。
207、执行其他操作。
若判定时延参数的取值不超过第一预设值,则可以执行其他操作。
通过图1和图2对应的实施例,可以计算执行目标线程的时延参数的取值,用于检测CPU的负载状态,时延参数的取值越大,表明CPU负载越大,当时延参数的取值超过第一预设值时,可以确定CPU处于过载状态。为了防止CPU的负载不断增大导致CPU崩溃,需要在CPU负载较大时,对CPU接收的数据包进行卡控,即选择性丢包,以下具体介绍CPU在接收数据包时,根据图1或者图2对应的实施例得到的时延参数的取值进行选择性丢包的过程,请参阅图3,本发明实施例中CPU负载信息的处理方法另一个实施例包括:
301、接收目标数据包;
网卡接收到目标数据包之后,可以通知CPU对目标数据包进行获取,对于多核CPU来说,某个CPU核可以接收目标数据包。
302、判断目标数据包是否为已接受业务,若是,则执行步骤303,若否,则执行步骤304;
CPU核接收目标数据包之后,可以判断目标数据包是否为已接受业务,比如目标数据包可以带有业务标识,若业务标识表明该目标数据包属于某一视频业务,那么在用户观看相应视频的过程中,该视频业务的数据包即为已接受业务。判断的具体方法有很多,为现有技术,此处不再赘述。
303、放通目标数据包;
若判定目标数据包属于已接受业务,则放通目标数据包,对目标数据包进行后续处理。
304、获取时延参数的取值;
若判定目标数据包不属于已接受业务,则可以获取该CPU核对应的时延参数的取值。可以理解的是,为了更加准确的表示当前CPU的负载状态,该时延参数的取值为最近一次执行目标线程的过程中计算得到的时延参数的取值,在本实施例中,假设获取的时延参数的取值为30毫秒。
在获取时延参数的取值之后,可以根据时延参数的取值来判断是否放通目标数据包。比如,可以当时延参数的取值超过某一预设值时,比如第一预设值时,便将目标数据包丢弃,这样虽然可以防止CPU崩溃,但是会产生CPU负载波动,即负载超过预设值时丢包,负载快速降低,造成负载短时间内过低,此时大量放通业务,又会导致CPU负载短时间内上升过多,这样波动的负载状态不利于系统稳定。为了稳定CPU负载,可以通过以下步骤进行选择性丢包:
305、判断时延参数的取值是否超过第二预设值,若否,则执行步骤306,若是,则执行步骤307;
在获取时延参数的取值之后,可以判断时延参数的取值是否超过第二预设值,第二预设值小于或者等于第一预设值,第二预设值设置为等于第一预设值时,对CPU的利用更加充分。
306、放通目标数据包;
当判定时延参数的取值不超过第二预设值时,表明此时CPU的负载较小,可以放通目标数据包。
307、判断时延参数的取值是否超过第三预设值,若是,则执行步骤308,若否,则执行步骤309;
当判定时延参数的取值超过第二预设值时,可以判断时延参数的取值是否超过第三预设值,第三预设值大于第二预设值,并且小于第四预设值,第四预设值对应于CPU的崩溃状态。
308、丢弃目标数据包;
若判定时延参数的取值超过第三预设值,则表明此时CPU负载过大,需丢弃目标数据包,以防止CPU负载继续增大。
309、生成第二预设值至第三预设值之间的随机数;
若判定时延参数的取值不超过第三预设值,则可以根据时延参数的取值进行概率丢包,使得概率丢包的丢包概率与时延参数的取值正相关。具体的,作为举例,可以生成第二预设值至第三预设值之间的随机数,假设第二预设值为20毫秒,第三预设值为100毫秒,那么则生成20至100的随机数。
310、判断随机数是否处于第二预设值与时延参数的取值之间,若是,则执行步骤311,若否,则执行步骤312;
在生成第二预设值至第三预设值之间的随机数之后,可以判断随机数是否处于第二预设值与时延参数的取值之间,在本实施例中,即判断生成的随机数是否处于20至30之间,若随机数处于20至30之间,比如生成的随机数为22,则执行步骤311,若随机数不处于20至30之间,比如生成的随机数为40,则执行步骤312。
311、丢弃目标数据包;
若随机数处于20至30之间,比如生成的随机数为22,则丢弃目标数据包。可见,若时延参数的取值距离第二预设值更近,则CPU负载相对较小,生成的随机数落入第二预设值与时延参数的取值之间的概率更小,丢弃目标数据包的概率更小。
312、放通目标数据包。
若随机数不处于20至30之间,则处于30至100之间,比如生成的随机数为40,则放通目标数据包。可见,若时延参数的取值距离第三预设值更近,则CPU负载相对较大,生成的随机数落入第二预设值与时延参数的取值之间的概率更大,丢弃目标数据包的概率更大,放通目标数据包的概率更小,能够有效防止CPU负载增大。
通过步骤310至步骤312,能够将时延参数的取值稳定在第二预设值和第三预设值之间的某个值,尽量减少CPU负载状态的波动。
上面对本发明实施例中的方法进行了描述,下面对本发明实施例中的装置进行描述。
请参阅图4,本发明实施例中CPU负载信息的处理装置的一个实施例包括:
记录模块401,用于在执行目标线程时,将目标线程的执行时刻记录在执行时刻表中,目标线程为预先创建的最低优先级的循环线程,每次循环包括预设时长的睡眠;
计算模块402,用于计算执行时刻表中时间相邻的执行时刻之间的间隔时长;
确定模块403,用于根据间隔时长确定时延参数的取值,时延参数的取值与间隔时长正相关;
判定模块404,用于当时延参数的取值超过第一预设值时,判定CPU处于过载状态。
优选的,确定模块403可以包括:
第一计算单元4031,用于计算间隔时长与预设时长的时长差值;
第二计算单元4032,用于对时长差值进行加权平均计算,得到时延参数的取值。
在通过图4对应的实施例中的装置获取时延参数的取值,并判断CPU的过载状态的基础上,本发明实施例中CPU负载信息的处理装置还可以包括图5对应的实施例中的装置,请参阅图5,本发明实施例中CPU负载信息的处理装置的另一个实施例包括:
接收模块501,用于接收目标数据包;
第一判断模块502,用于判断目标数据包是否为已接受业务;
放通模块503,用于当判断模块判定目标数据包为已接受业务时,放通目标数据包;
获取模块504,用于当判断模块判定目标数据包不是已接受业务时,获取时延参数的取值;
第二判断模块505,用于根据获取模块获取的时延参数的取值来判断是否放通目标数据包。
优选的,第二判断模块505包括:
第一判断单元5051,用于判断时延参数的取值是否超过第二预设值,第二预设值小于或者等于第一预设值;
第一放通单元5052,用于当第一判断单元判定时延参数的取值未超过第二预设值时,放通目标数据包;
第二判断单元5053,用于当第一判断单元判定时延参数的取值超过第二预设值时,判断时延参数的取值是否超过第三预设值,第三预设值大于第二预设值,并且小于第四预设值,第四预设值对应于CPU的崩溃状态;
第一丢包单元5054,用于当第二判断单元判定时延参数的取值超过第三预设值时,丢弃目标数据包;
第二丢包单元5055,用于当第二判断单元判定时延参数的取值未超过第三预设值时,根据时延参数的取值进行概率丢包。
优选的,第二丢包单元5055包括:
生成子单元50551,用于生成第二预设值至第三预设值之间的随机数;
判断子单元50552,用于判断随机数是否处于第二预设值与时延参数的取值之间;
丢包子单元50553,用于当判断子单元判定随机数处于第二预设值与时延参数的取值之间时,丢弃目标数据包;
放通子单元50554,用于当判断子单元判定随机数不处于第二预设值与时延参数的取值之间时,放通目标数据包。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种CPU负载信息的处理方法,其特征在于,包括:
在执行目标线程时,将所述目标线程的执行时刻记录在执行时刻表中,所述目标线程为预先创建的最低优先级的循环线程,每次循环包括预设时长的睡眠;
计算所述执行时刻表中时间相邻的所述执行时刻之间的间隔时长;
根据所述间隔时长确定时延参数的取值,所述时延参数的取值与所述间隔时长正相关;
当所述时延参数的取值超过第一预设值时,判定所述CPU中央处理器处于过载状态。
2.根据权利要求1所述的CPU负载信息的处理方法,其特征在于,所述根据所述间隔时长确定时延参数的取值包括:
计算所述间隔时长与所述预设时长的时长差值;
对所述时长差值进行加权平均计算,得到所述时延参数的取值。
3.根据权利要求1或2所述的CPU负载信息的处理方法,其特征在于,所述方法还包括:
接收目标数据包;
判断所述目标数据包是否为已接受业务;
若是,则放通所述目标数据包;
若否,则获取所述时延参数的取值;
根据所述时延参数的取值来判断是否放通所述目标数据包。
4.根据权利要求3所述的CPU负载信息的处理方法,其特征在于,所述根据所述时延参数的取值来判断是否放通所述目标数据包包括:
判断所述时延参数的取值是否超过第二预设值,所述第二预设值小于或者等于所述第一预设值;
若否,则放通所述目标数据包;
若是,则判断所述时延参数的取值是否超过第三预设值,所述第三预设值大于所述第二预设值,并且小于第四预设值,所述第四预设值对应于所述CPU的崩溃状态;
若是,则丢弃所述目标数据包;
若否,则根据所述时延参数的取值进行概率丢包,所述概率丢包的丢包概率与所述时延参数的取值正相关。
5.根据权利要求4所述的CPU负载信息的处理方法,其特征在于,所述根据所述时延参数的取值进行概率丢包包括:
生成所述第二预设值至所述第三预设值之间的随机数;
判断所述随机数是否处于所述第二预设值与所述时延参数的取值之间;
若是,则丢弃所述目标数据包;
若否,则放通所述目标数据包。
6.一种CPU负载信息的处理装置,其特征在于,包括:
记录模块,用于在执行目标线程时,将所述目标线程的执行时刻记录在执行时刻表中,所述目标线程为预先创建的最低优先级的循环线程,每次循环包括预设时长的睡眠;
计算模块,用于计算所述执行时刻表中时间相邻的所述执行时刻之间的间隔时长;
确定模块,用于根据所述间隔时长确定时延参数的取值,所述时延参数的取值与所述间隔时长正相关;
判定模块,用于当所述时延参数的取值超过第一预设值时,判定所述CPU处于过载状态。
7.根据权利要求6所述的CPU负载信息的处理装置,其特征在于,所述确定模块包括:
第一计算单元,用于计算所述间隔时长与所述预设时长的时长差值;
第二计算单元,用于对所述时长差值进行加权平均计算,得到所述时延参数的取值。
8.根据权利要求6或7所述的CPU负载信息的处理装置,其特征在于,所述处理装置还包括:
接收模块,用于接收目标数据包;
第一判断模块,用于判断所述目标数据包是否为已接受业务;
放通模块,用于当所述判断模块判定所述目标数据包为已接受业务时,放通所述目标数据包;
获取模块,用于当所述判断模块判定所述目标数据包不是已接受业务时,获取所述时延参数的取值;
第二判断模块,用于根据所述获取模块获取的所述时延参数的取值来判断是否放通所述目标数据包。
9.根据权利要求8所述的CPU负载信息的处理装置,其特征在于,所述第二判断模块包括:
第一判断单元,用于判断所述时延参数的取值是否超过第二预设值,所述第二预设值小于或者等于所述第一预设值;
第一放通单元,用于当所述第一判断单元判定所述时延参数的取值未超过第二预设值时,放通所述目标数据包;
第二判断单元,用于当所述第一判断单元判定所述时延参数的取值超过第二预设值时,判断所述时延参数的取值是否超过第三预设值,所述第三预设值大于所述第二预设值,并且小于第四预设值,所述第四预设值对应于所述CPU的崩溃状态;
第一丢包单元,用于当所述第二判断单元判定所述时延参数的取值超过第三预设值时,丢弃所述目标数据包;
第二丢包单元,用于当所述第二判断单元判定所述时延参数的取值未超过第三预设值时,根据所述时延参数的取值进行概率丢包,所述概率丢包的丢包概率与所述时延参数的取值正相关。
10.根据权利要求9所述的CPU负载信息的处理装置,其特征在于,所述第二丢包单元包括:
生成子单元,用于生成所述第二预设值至所述第三预设值之间的随机数;
判断子单元,用于判断所述随机数是否处于所述第二预设值与所述时延参数的取值之间;
丢包子单元,用于当所述判断子单元判定所述随机数处于所述第二预设值与所述时延参数的取值之间时,丢弃所述目标数据包;
放通子单元,用于当所述判断子单元判定所述随机数不处于所述第二预设值与所述时延参数的取值之间时,放通所述目标数据包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611236321.7A CN106649042B (zh) | 2016-12-28 | 2016-12-28 | 一种cpu负载信息的处理方法及处理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611236321.7A CN106649042B (zh) | 2016-12-28 | 2016-12-28 | 一种cpu负载信息的处理方法及处理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106649042A true CN106649042A (zh) | 2017-05-10 |
CN106649042B CN106649042B (zh) | 2019-08-06 |
Family
ID=58832223
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611236321.7A Active CN106649042B (zh) | 2016-12-28 | 2016-12-28 | 一种cpu负载信息的处理方法及处理装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106649042B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108255681A (zh) * | 2018-02-09 | 2018-07-06 | 腾讯科技(北京)有限公司 | 任务告警方法及装置 |
CN111831443A (zh) * | 2020-07-01 | 2020-10-27 | Oppo广东移动通信有限公司 | 处理器状态调整方法、装置、存储介质及电子设备 |
CN113778824A (zh) * | 2021-08-23 | 2021-12-10 | 深圳市联影高端医疗装备创新研究院 | 操作系统实时性检测方法、装置、计算机设备及存储介质 |
CN114928644A (zh) * | 2022-07-20 | 2022-08-19 | 深圳市安科讯实业有限公司 | 一种物联网网络融合加速网关 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0844575A (ja) * | 1994-08-03 | 1996-02-16 | Fujitsu Ltd | Cpuの監視及び負荷制御方式 |
CN1403912A (zh) * | 2001-09-06 | 2003-03-19 | Lg电子株式会社 | 在实时系统中测量中央处理器任务占用率的方法和装置 |
CN102880540A (zh) * | 2012-08-27 | 2013-01-16 | 南京智达康无线通信科技股份有限公司 | 一种保障接入控制器在高负载下正常工作的方法 |
CN103345432A (zh) * | 2013-06-07 | 2013-10-09 | 深圳中兴网信科技有限公司 | 多核cpu过载检测装置和多核cpu过载检测方法 |
US20160091949A1 (en) * | 2014-09-26 | 2016-03-31 | Thomas Buhot | Performance management for a multiple-cpu platform |
-
2016
- 2016-12-28 CN CN201611236321.7A patent/CN106649042B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0844575A (ja) * | 1994-08-03 | 1996-02-16 | Fujitsu Ltd | Cpuの監視及び負荷制御方式 |
CN1403912A (zh) * | 2001-09-06 | 2003-03-19 | Lg电子株式会社 | 在实时系统中测量中央处理器任务占用率的方法和装置 |
CN102880540A (zh) * | 2012-08-27 | 2013-01-16 | 南京智达康无线通信科技股份有限公司 | 一种保障接入控制器在高负载下正常工作的方法 |
CN103345432A (zh) * | 2013-06-07 | 2013-10-09 | 深圳中兴网信科技有限公司 | 多核cpu过载检测装置和多核cpu过载检测方法 |
US20160091949A1 (en) * | 2014-09-26 | 2016-03-31 | Thomas Buhot | Performance management for a multiple-cpu platform |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108255681A (zh) * | 2018-02-09 | 2018-07-06 | 腾讯科技(北京)有限公司 | 任务告警方法及装置 |
CN111831443A (zh) * | 2020-07-01 | 2020-10-27 | Oppo广东移动通信有限公司 | 处理器状态调整方法、装置、存储介质及电子设备 |
CN113778824A (zh) * | 2021-08-23 | 2021-12-10 | 深圳市联影高端医疗装备创新研究院 | 操作系统实时性检测方法、装置、计算机设备及存储介质 |
CN114928644A (zh) * | 2022-07-20 | 2022-08-19 | 深圳市安科讯实业有限公司 | 一种物联网网络融合加速网关 |
Also Published As
Publication number | Publication date |
---|---|
CN106649042B (zh) | 2019-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106649042A (zh) | 一种cpu负载信息的处理方法及处理装置 | |
CN1972197A (zh) | 网络适配器芯片内调节电能的方法和系统 | |
CN107657161A (zh) | 基于人脸识别的移动支付方法及相关产品 | |
CN108287800B (zh) | 一种基于单总线通信协议的总线仲裁系统及方法 | |
KR20120107720A (ko) | 센서 데이터 관리 방법 및 장치와 센서 데이터 분석 방법 및 장치 | |
CN105993036B (zh) | 一种自助终端的业务处理方法及系统 | |
EP2713270A1 (en) | Resource scheduling method and device | |
CN109228954B (zh) | 一种充电桩能源管理方法、系统及充电桩群系统 | |
CN106503237A (zh) | 一种pg成员选择方法、装置、存储池和分布式文件系统 | |
CN103560898A (zh) | 一种端口状态设置方法、端口优先级的选择方法及装置 | |
CN105993037B (zh) | 一种自助设备的业务处理方法及系统 | |
CN106844055A (zh) | 一种任务的执行方法和装置 | |
CN114357495B (zh) | 基于区块链的预言机链下聚合方法、装置、设备和介质 | |
CN107038137A (zh) | 一种热插拔的设备及方法 | |
EP3373162B1 (en) | Data persistence method and system in stream computing | |
CN106201843A (zh) | 一种终端数据的处理方法、装置及终端 | |
CN110601780B (zh) | 一种基于区块链的动态频谱接入方法 | |
CN105471955B (zh) | 分布式文件系统的写方法、客户端设备及分布式文件系统 | |
CN118211599A (zh) | 不同标签分布的异步式多读写器射频标签盘点方法及装置 | |
CN114443212A (zh) | 热迁移管理方法、装置、设备及存储介质 | |
CN105653471A (zh) | 存储空间分配方法、装置及电子设备 | |
CN106570011A (zh) | 一种分布式爬虫url种子分发方法、调度节点及抓取节点 | |
CN102855195A (zh) | 第二代低功耗双倍速率存储控制器及访问命令处理方法 | |
CN107231284A (zh) | 一种消息的发送方法和终端设备 | |
CN105264499B (zh) | 一种共享队列中的消息处理方法、装置及接收核 |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 518000 the first floor of A1 building, Nanshan Zhiyuan 1001, Nanshan District Xue Yuan Avenue, Shenzhen, Guangdong. Applicant after: SINFOR Polytron Technologies Inc Address before: 518055 First Floor, Building A1, Nanshan Zhiyuan, 1001 Xueyuan Avenue, Nanshan District, Shenzhen City, Guangdong Province Applicant before: Shenxinfu Electronics Science and Technology Co., Ltd., Shenzhen |
|
GR01 | Patent grant | ||
GR01 | Patent grant |