CN112052088B - 自适应的进程cpu资源限制方法、装置、终端及存储介质 - Google Patents
自适应的进程cpu资源限制方法、装置、终端及存储介质 Download PDFInfo
- Publication number
- CN112052088B CN112052088B CN202010893829.4A CN202010893829A CN112052088B CN 112052088 B CN112052088 B CN 112052088B CN 202010893829 A CN202010893829 A CN 202010893829A CN 112052088 B CN112052088 B CN 112052088B
- Authority
- CN
- China
- Prior art keywords
- cpu
- target process
- sampling period
- utilization rate
- target
- 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.)
- Active
Links
Images
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
- G06F9/5044—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 hardware capabilities
-
- 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明涉及一种自适应的进程CPU资源限制方法、装置、终端及存储介质。方法包括:获取系统的基本信息,根据系统的基本信息判断系统是否支持cgroups;当系统不支持cgroups时,选择cpulimit方式进行CPU使用率的监控;并且在cpulimit监控过程中,如果在当前第一采样周期里,目标进程的CPU使用率未超过设定阈值,则在下一个第一采样周期中不对所述目标进程进行暂停控制。本发明实施例自动检测系统环境,根据获取的系统基本信息选择最优的CPU使用率限制方法,当系统不支持cgroups时,选择cpulimit方式进行CPU使用率的监控,并且在cpulimit的监控过程中,通过添加阈值控制逻辑,减少控制信号的发送,从而减少监控程序自身的CPU使用率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种自适应的进程CPU资源限制方法、装置、终端及存储介质。
背景技术
cpulimit是为Linux系统设计的控制进程CPU使用率的程序,它实时监控进程的cpu使用率,并根据预设的阈值计算一个控制周期内进程需要暂停和运行的时间,然后向进程交替发送SIGSTOP和SIGCONT这两个信号来控制进程的执行状态,从而限制进程的CPU使用率。现有技术中,cpulimit需要持续的对进程交替发送SIGSTOP和SIGCONT信号,在进程本身CPU使用率不超过阈值的时候也会频繁发送信号,从而产生额外的开销。
cgroups是linux内核实现的进程管理机制,具有精确度高,使用便捷开销低的特点。但不适用于内核版本低于2.6.24的发行版本,当前很多企业出于稳定性考虑,依然有大量内核版本较低的发行版本在使用。支持cgroups的系统也可能没有启用cpu子系统或者cpu子系统未挂载。因此通过cgroups进行CPU限制存在局限性。
目前主流的主机安全系统中,通过在主机上运行agent程序来执行入侵检测,环境监控,文件扫描等任务。这些任务需要较大的CPU开销,会影响主机的其它服务程序。特别是主机上的服务在处理高并发大流量任务时,agent的CPU开销会严重降低服务质量。由于主机上的操作系统类型及版本多样,现有的一些技术方案在使用上有一定的局限性。
发明内容
本发明所要解决的技术问题是针对现有技术存在的问题,提供一种自适应的进程CPU资源限制方法、装置、终端及存储介质。
为解决上述技术问题,本发明实施例提供一种自适应的进程CPU资源限制方法,包括:
获取系统的基本信息,根据所述系统的基本信息判断系统是否支持cgroups;当所述系统不支持cgroups时,选择cpulimit方式进行CPU使用率的监控;
并且在cpulimit监控过程中,如果在当前第一采样周期里,目标进程的CPU使用率未超过设定阈值,则在下一个第一采样周期中不对所述目标进程进行暂停控制。
为解决上述技术问题,本发明实施例还提供一种自适应的进程CPU资源限制装置,包括:
监控方式选择模块,用于通过监控程序获取系统的基本信息,根据所述系统的基本信息判断系统是否支持cgroups;当所述系统不支持cgroups时,选择cpulimit方式进行CPU使用率的监控;
进程监控模块,用于在cpulimit监控过程中,如果在当前第一采样周期里,目标进程的CPU使用率未超过设定阈值,则在下一个第一采样周期中不对所述目标进程进行暂停控制。
为解决上述技术问题,本发明实施例还提供一种终端,所述终端包括处理器、存储器和通信总线;所述通信总线用于实现处理器和存储器之间的连接通信;所述处理器用于执行存储器中存储的一个或者多个计算机程序,以实现上述技术方案所述的自适应的进程CPU资源限制方法的步骤。
为解决上述技术问题,本发明实施例还提供一种存储介质,所述存储介质存储有一个或者多个计算机程序,所述一个或者多个计算机程序可被一个或者多个处理器执行,以实现上述技术方案所述的自适应的进程CPU资源限制方法的步骤。
本发明的有益效果是:能够限制指定进程的CPU使用率,避免指定进程CPU占用率过高影响其它进程的运行效率;自动检测系统环境,根据获取的系统基本信息选择最优的CPU使用率限制方法,当系统不支持cgroups时,选择cpulimit方式进行CPU使用率的监控,实现兼容不同的主机系统,自适应的对目标进程的CPU资源进行监控,并且在cpulimit的监控过程中,通过添加阈值控制逻辑,减少控制信号的发送,从而减少监控程序自身的CPU使用率。
本发明附加的方面及其优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明实践了解到。
附图说明
图1为本发明一实施例提供的自适应的进程CPU资源限制方法流程图;
图2为本发明另一实施例提供的自适应的进程CPU资源限制方法流程图;
图3为本发明实施例提供的cpulimit机制下的进程CPU资源限制方法流程图;
图4为本发明实施例提供的目标进程的子进程CPU资源限制方法流程图;
图5为本发明实施例提供的自适应的进程CPU资源限制方法装置结构框图;
图6为本发明实施例提供的终端结构示意图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
图1为本发明实施例提供的自适应的进程CPU资源限制方法流程图。如图1所示,该方法包括:
S110,获取系统的基本信息,根据所述系统的基本信息判断系统是否支持cgroups;
其中,系统的基本信息可以包括Linux系统内核版本(2.6.24版本开始支持cgroups)以及CPU子系统挂载情况。
S120,当所述系统不支持cgroups时,选择cpulimit方式进行CPU使用率的监控;
S130,在cpulimit监控过程中,如果在当前第一采样周期里,目标进程的CPU使用率未超过设定阈值,则在下一个第一采样周期中不对所述目标进程进行暂停控制。该实施例中,第一采样周期取值可以取100ms。
本发明实施例提供的自适应的进程CPU资源限制方法,能够限制指定进程的CPU使用率,避免指定进程CPU占用率过高影响其它进程的运行效率;通过自动检测系统环境,根据获取的系统基本信息选择最优的CPU使用率限制方法,当系统不支持cgroups时,选择cpulimit方式进行CPU使用率的监控,实现兼容不同的主机系统,自适应的对目标基础的CPU资源进行监控,并且在cpulimit的监控过程中,通过添加阈值控制逻辑,减少控制信号的发送,从而减少监控程序自身的CPU使用率。
图2为本发明另一实施例提供的自适应的进程CPU资源限制方法流程图。如图2所示,该方法包括:获取系统的基本信息,根据所述系统的基本信息判断系统是否支持cgroups;其中,系统的基本信息可以包括Linux系统内核版本(2.6.24版本开始支持cgroups)以及CPU子系统挂载情况。CPU子系统挂载情况包括CPU子系统是否启用以及CPU子系统是否被挂载。
当所述系统支持cgroups且CPU子系统已启用以及CPU子系统已被挂载时,优先选择cgroups进行CPU使用率的监控;当所述系统不支持cgroups时,选择cpulimit方式进行CPU使用率的监控。
在cgroups监控过程中,获取CPU子系统挂载目录,在CPU子系统中创建目标进程控制组,并进行CPU使用率阈值的配置,将需要监控的目标进程的PID加入所述目标进程控制组。具体通过将PID写入cgroup.procs,PID对应进程的子线程(thread)将自动加入控制组。
并且在cpulimit监控过程中,获取目标进程的线程列表,计算目标进程的CPU使用率,根据CPU使用率计算运行时间配额,根据计算结果发送控制信号;该实施例中,将agent作为目标进程。agent是具有多个线程的程序,系统统计显示的CPU使用率包括主线程和子线程的CPU使用率总和。
其中,所述进行CPU使用率阈值的配置,包括:对CPU控制周期cpu.cfs_period_us以及控制组限制CPU占用的时间cpu.cfs_quota_us进行配置;CPU使用率阈值workingrate=cpu.cfs_quota_us/cpu.cfs_period_us。
本发明实施例中,通过检查主机系统的基本信息,自动选择进程CPU使用率限制方法,优先使用Cgroups机制,当不具备Cgroups使用条件时,选择cpulimit方式。即自适应选择进程CPU使用率监控方式,具有良好的兼容性。
本发明另一实施例提供的自适应的进程CPU资源限制方法包括:获取系统的基本信息,根据所述系统的基本信息判断系统是否支持cgroups;当所述系统不支持cgroups时,选择cpulimit方式进行CPU使用率的监控;并且在cpulimit监控过程中,如果在当前第一采样周期里,目标进程的CPU使用率超过设定阈值,则计算下一个第一采样周期中目标进程进程运行时间和暂停时间的配额;如果在当前第一采样周期里,目标进程的CPU使用率未超过设定阈值,则在下一个第一采样周期中不对所述目标进程进行暂停控制。
图3为本发明实施例提供的cpulimit机制下的进程CPU资源限制方法流程图。如图3所示,cpulimit机制下,该方法包括:获取CPU核数,根据所述CPU核数计算采样率,更新目标进程组,判断目标进程组是否为空,如果为空则结束,否则获取目标进程的CPU使用率,判断所述目标进程的CPU使用率是否超过设定阈值。该实施例中,将agent作为目标进程。
如果目标进程的CPU使用率超过设定阈值,则计算下一个第一采样周期给目标进程分配的运行时间twork及暂停时间tsleep,判断twork是否大于0,如果twork大于0,则向目标进行发送SIGCONT信号,然后等待twork时间,再向目标进程发送SIGSTOP信号,然后等待tsleep时间,进入下一个第一采样周期,更新目标进程组;如果twork小于或等于0,则直接向目标进行发送SIGSTOP信号,然后等待tsleep时间,进入下一个第一采样周期,更新目标进程组。
如果目标进程的CPU使用率未超过设定阈值,则判断是否需要唤醒进程,如果不需要唤醒,则等待进入下一个第一采样周期;如果需要唤醒,则设置twork,然后向目标进程发送SIGCONT,然后等待twork时间,再向目标进程发送SIGSTOP信号,然后等待tsleep时间,进入下一个第一采样周期,更新目标进程组。
具体地,cpulimit实时计算当前时间片(如100ms)内进程的cpu使用率real_usage(包括用户态和内核态),如果超过阈值limit,则按照比例计算下一个时间片中允许进程执行的时间twork和暂停时间tsleep,计算方法可参考twork=100ms*limit*(real_usaget/100),tsleep=100ms-twork。
本发明实施例,当系统不支持cgroups时,选择cpulimit方式进行CPU使用率的监控,实现兼容不同的主机系统,自适应的对目标基础的CPU资源进行监控,并且在cpulimit的监控过程中,通过添加阈值控制逻辑,减少控制信号的发送,从而减少监控程序自身的CPU使用率。
可选地,自适应的进程CPU资源限制方法还包括通过hash set获取两次采样间隔内的新增进程列表,根据所述新增进程列表构造进程树,从所述进程树中获取目标进程的全部子进程,然后分别检查子进程的CPU使用率,对于超过预设上限的子进程,向其发送终止运行的信号,其中,所述两次采样间隔确定第二采样周期。该实施例中,第二采样周期取值可以取2s。
所述通过hash set获取两次采样间隔内的新增进程列表包括:创建集合pre_pids和集合cur_pids,集合pre_pids用于记录所述第二采样周期中上一次采样时的进程PID集合;集合cur_pids用于记录所述第二采样周期中当前采样时的进程PID集合,通过比较两个集合得到两次采样间隔内的新增进程PID,从而得到两次采样间隔时间内的新增进程列表。
图4为本发明实施例提供的目标进程的子进程CPU资源限制方法流程图。如图4所示,创建两个空集合pre_pids和cur_pids,其中,集合pre_pids用于记录上一次采样时的进程PID集合,集合cur_pids用于记录当前采样时的进程PID集合;判断是否结束监控,如果是则结束,否则等待下一个采样周期,枚举当前系统进程并存入集合cur_pids;通过比较集合pre_pids和cur_pids提取上次采样至当前采样时新增多的进程PID,并将新增多的进程PID存入集合new_pids;将cur_pids中的PID更新到结合集合pre_pids中;根据集合new_pids构造进程树,提取进程树中目标进程的子进程列表,获取各子进程的CPU使用率,对于超过预设上限的子进程,向其发送终止运行的信号。
现有技术中,cgroups不能自动管理子进程,加入控制组的进程的子进程,只有通过fork创建的子进程才能继承父进程的cgroup关系,而通过execve创建的子进程不会自动加入父进程的cgroup控制组。cpulimit有子进程管理机制但是开销太大。cpulimit是通过遍历系统中所有进程的状态信息,从而得到子进程以及子进程的PID,然后进行监控。每次遍历都会读取每个进程的状态信息,而获取状态信息需要系统调用,当系统进程树较多时,cpulimit自身开销会显著增加。
本发明实施例中,通过创建一个新的线程利用hash set来获取子进程列表,具体通过hash set记录上一次获取的系统进程PID集合,更新子进程列表时,先比较本次得到的系统进程PID集合与上次获取的系统进程PID集合得到新增的系统进程PID,然后再读取新增进程PID的状态信息,只从新增的PID列表中提取子进程,这样很大程度减少了系统调用,整体算法复杂度得到大幅优化。
agent会有一些子进程,这些子进程如果开销高了就直接给子进程发终止运行的信号,预设上限可以设定为一个固定值比如80,那么子进程CPU占用超过80%就会被终止,这样可以有效防止子进程出现异常情况而长时间占用CPU。
上文结合图1至图4,详细描述了根据本发明实施例提供的自适应的进程CPU资源限制方法。下面结合图5,详细描述本发明实施例提供的自适应的进程CPU资源限制装置。
如图5所示,本发明实施例还提供一种自适应的进程CPU资源限制装置,包括:监控方式选择模块和进程监控模块。
监控方式选择模块,用于通过监控程序获取系统的基本信息,根据所述系统的基本信息判断系统是否支持cgroups;当所述系统不支持cgroups时,选择cpulimit方式进行CPU使用率的监控;
进程监控模块,用于在cpulimit监控过程中,如果在当前第一采样周期里,目标进程的CPU使用率未超过设定阈值,则在下一个第一采样周期中不对所述目标进程进行暂停控制。
本发明实施例提供的自适应的进程CPU资源限制装置,能够限制指定进程的CPU使用率,避免指定进程CPU占用率过高影响其它进程的运行效率;通过自动检测系统环境,根据获取的系统基本信息选择最优的CPU使用率限制方法,当系统不支持cgroups时,选择cpulimit方式进行CPU使用率的监控,实现兼容不同的主机系统,自适应的对目标基础的CPU资源进行监控,并且在cpulimit的监控过程中,通过添加阈值控制逻辑,减少控制信号的发送,从而减少监控程序自身的CPU使用率。
进程监控模块还用于,如果在当前第一采样周期里,目标进程的CPU使用率超过设定阈值,则计算下一个第一采样周期中目标进程进程运行时间和暂停时间的配额。
具体地,cpulimit实时计算当前时间片(如100ms)内进程的cpu使用率real_usage(包括用户态和内核态),如果超过阈值limit,则按照比例计算下一个时间片中允许进程执行的时间twork和暂停时间tsleep,计算方法可参考twork=100ms*limit*(real_usaget/100),tsleep=100ms-twork。
监控方式选择模块还用于当所述系统支持cgroups时,优先选择cgroups方式进行CPU使用率的监控;进程监控模块还用于,当所述系统支持cgroups时,获取CPU子系统挂载目录,在CPU子系统中创建目标进程控制组,并进行CPU使用率阈值的配置,将需要监控的目标进程的PID加入所述agent控制组。
所述进行CPU使用率阈值的配置,包括:对CPU控制周期cpu.cfs_period_us以及控制组限制CPU占用的时间cpu.cfs_quota_us进行配置;CPU使用率阈值workingrate=cpu.cfs_quota_us/cpu.cfs_period_us。
可选地,自适应的进程CPU资源限制装置还包括子进程监控模块,子进程监控模块用于通过hash set获取两次采样间隔内的新增进程列表,根据所述新增进程列表构造进程树,从所述进程树中获取目标进程的全部子进程,然后分别检查子进程的CPU使用率,对于超过预设上限的子进程,向其发送终止运行的信号,其中,所述两次采样间隔确定第二采样周期。
通过hash set获取两次采样间隔内的新增进程列表包括:创建集合pre_pids和集合cur_pids,集合pre_pids用于记录所述第二采样周期上一次采样时的进程PID集合;集合cur_pids用于记录所述第二采样周期当前采样时的进程PID集合,通过比较两个集合得到两次采样间隔内的新增进程PID,从而得到两次采样间隔时间内的新增进程列表。
本发明实施例中,通过创建一个新的线程利用hash set来获取子进程列表,具体通过hash set记录上一次获取的系统进程PID集合,更新子进程列表时,先比较本次得到的系统进程PID集合与上次获取的系统进程PID集合得到新增的系统进程PID,然后再读取新增进程PID的状态信息,只从新增的PID列表中提取子进程,这样很大程度减少了系统调用,整体算法复杂度得到大幅优化。
本实施例提供一种终端,如图6所示,该终端包括处理器601、存储器602和通信总线603;
通信总线603用于实现处理器601和存储器602之间的连接通信;
处理器601用于执行存储器602中存储的一个或者多个计算机程序,以实现上述各实施例中的自适应的进程CPU资源限制方法的步骤,在此不再一一赘述。
本发明实施例还提供一种计算机可读存储介质,包括指令,当所述指令在计算机上运行时,使所述计算机执行上述实施例提供的自适应的进程CPU资源限制方法。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种自适应的进程CPU资源限制方法,其特征在于,包括如下步骤:
获取系统的基本信息,根据所述系统的基本信息判断系统是否支持cgroups;当所述系统不支持cgroups时,选择cpulimit方式进行CPU使用率的监控;
并且在cpulimit监控过程中,如果在当前第一采样周期里,目标进程的CPU使用率未超过设定阈值,则在下一个第一采样周期中不对所述目标进程进行暂停控制;
如果目标进程的CPU使用率超过设定阈值,则计算所述下一个第一采样周期给目标进程分配的运行时间twork及暂停时间tsleep,判断twork是否大于0,如果twork大于0 ,则向目标进行发送SIGCONT信号,然后等待twork时间,再向目标进程发送SIGSTOP信号,然后等待tsleep时间,进入所述下一个第一采样周期,更新目标进程组;如果twork小于或等于0,则直接向目标进程进行发送SIGSTOP信号,然后等待tsleep时间,进入所述下一个第一采样周期,更新目标进程组;
如果目标进程的CPU使用率未超过设定阈值,则判断是否需要唤醒进程,如果不需要唤醒,则等待进入所述下一个第一采样周期;如果需要唤醒,则设置twork,然后向目标进程发送SIGCONT,然后等待twork时间,再向目标进程发送SIGSTOP信号,然后等待tsleep时间,进入所述下一个第一采样周期,更新目标进程组。
2.根据权利要求1所述的自适应的进程CPU资源限制方法,其特征在于,当所述系统支持cgroups且CPU子系统已启用以及CPU子系统已被挂载时,优先选择cgroups进行CPU使用率的监控;并且在cgroups监控过程中,获取CPU子系统挂载目录,在CPU子系统中创建目标进程控制组,并进行CPU使用率阈值的配置,将需要监控的目标进程的PID加入所述目标进程控制组。
3.根据权利要求2所述的自适应的进程CPU资源限制方法,其特征在于,所述进行CPU使用率阈值的配置,包括:对CPU控制周期cpu.cfs_period_us以及控制组限制CPU占用的时间cpu.cfs_quota_us进行配置;其中,所述CPU使用率阈值
workingrate=cpu.cfs_quota_us/cpu.cfs_period_us。
4.根据权利要求1至3任一项所述的自适应的进程CPU资源限制方法,其特征在于,还包括,通过hash set获取两次采样间隔内的新增进程列表,根据所述新增进程列表构造进程树,从所述进程树中获取目标进程的全部子进程,然后分别检查子进程的CPU使用率,对于超过预设上限的子进程,向其发送终止运行的信号,其中,所述两次采样间隔确定第二采样周期。
5.根据权利要求4所述的自适应的进程CPU资源限制方法,其特征在于,所述通过hashset获取两次采样间隔内的新增进程列表包括:创建集合pre_pids和集合cur_pids,集合pre_pids用于记录所述第二采样周期中上一次采样时的进程PID集合;集合cur_pids用于记录所述第二采样周期中当前采样时的进程PID集合,通过比较两个集合得到两次采样间隔内的新增进程PID,从而得到两次采样间隔时间内的新增进程列表。
6.一种自适应的进程CPU资源限制装置,其特征在于,包括:
监控方式选择模块,用于通过监控程序获取系统的基本信息,根据所述系统的基本信息判断系统是否支持cgroups;当所述系统不支持cgroups时,选择cpulimit方式进行CPU使用率的监控;
进程监控模块,用于在cpulimit监控过程中,如果在当前采样周期里,目标进程的CPU使用率未超过设定阈值,则在下一个采样周期中不对所述目标进程进行暂停控制;
所述进程监控模块,具体用于如果目标进程的CPU使用率超过设定阈值,则计算所述下一个第一采样周期给目标进程分配的运行时间twork及暂停时间tsleep,判断twork是否大于0,如果twork大于0 ,则向目标进行发送SIGCONT信号,然后等待twork时间,再向目标进程发送SIGSTOP信号,然后等待tsleep时间,进入所述下一个第一采样周期,更新目标进程组;如果twork小于或等于0,则直接向目标进程进行发送SIGSTOP信号,然后等待tsleep时间,进入所述下一个第一采样周期,更新目标进程组;
如果目标进程的CPU使用率未超过设定阈值,则判断是否需要唤醒进程,如果不需要唤醒,则等待进入所述下一个第一采样周期;如果需要唤醒,则设置twork,然后向目标进程发送SIGCONT,然后等待twork时间,再向目标进程发送SIGSTOP信号,然后等待tsleep时间,进入所述下一个第一采样周期,更新目标进程组。
7.根据权利要求6所述的自适应的进程CPU资源限制装置,其特征在于,还包括子进程监控模块,所述子进程监控模块用于通过hash set获取两次采样间隔内的新增进程列表,根据所述新增进程列表构造进程树,从所述进程树中获取目标进程的全部子进程,然后分别检查子进程的CPU使用率,对于超过预设上限的子进程,向其发送终止运行的信号,其中,所述两次采样间隔确定第二采样周期。
8.一种终端,其特征在于,所述终端包括处理器、存储器和通信总线;
所述通信总线用于实现处理器和存储器之间的连接通信;
所述处理器用于执行存储器中存储的一个或者多个计算机程序,以实现根据权利要求1至5中任一项所述的自适应的进程CPU资源限制方法的步骤。
9.一种存储介质,其特征在于,所述存储介质存储有一个或者多个计算机程序,所述一个或者多个计算机程序可被一个或者多个处理器执行,以实现根据权利要求1至5中任一项所述的自适应的进程CPU资源限制方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010893829.4A CN112052088B (zh) | 2020-08-31 | 2020-08-31 | 自适应的进程cpu资源限制方法、装置、终端及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010893829.4A CN112052088B (zh) | 2020-08-31 | 2020-08-31 | 自适应的进程cpu资源限制方法、装置、终端及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112052088A CN112052088A (zh) | 2020-12-08 |
CN112052088B true CN112052088B (zh) | 2021-07-13 |
Family
ID=73607407
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010893829.4A Active CN112052088B (zh) | 2020-08-31 | 2020-08-31 | 自适应的进程cpu资源限制方法、装置、终端及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112052088B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112685180B (zh) * | 2020-12-29 | 2023-10-10 | 杭州海康威视数字技术股份有限公司 | 计算单元分配方法、装置及计算单元分配系统 |
CN114237839A (zh) * | 2021-11-22 | 2022-03-25 | 珠海全志科技股份有限公司 | 加速游戏运行的方法、装置及计算机可读存储介质 |
CN117331793B (zh) * | 2023-11-27 | 2024-02-23 | 南京掌控网络科技有限公司 | 一种自动值守的进程监控方法与系统 |
CN118193186B (zh) * | 2023-11-27 | 2024-08-02 | 北京微步在线科技有限公司 | 一种资源控制方法、装置、计算机设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102307224A (zh) * | 2011-05-17 | 2012-01-04 | 华为软件技术有限公司 | 云计算系统中业务隔离的实现方法及装置、云服务器 |
CN102654841A (zh) * | 2011-03-02 | 2012-09-05 | 中国电信股份有限公司 | 细粒度分配虚拟机计算资源的方法和设备 |
CN108334409A (zh) * | 2018-01-15 | 2018-07-27 | 北京大学 | 一种细粒度的高性能云资源管理调度方法 |
CN109634812A (zh) * | 2018-12-11 | 2019-04-16 | 厦门服云信息科技有限公司 | Linux系统的进程CPU占用率控制方法、终端设备及存储介质 |
CN111221625A (zh) * | 2019-12-31 | 2020-06-02 | 北京健康之家科技有限公司 | 文件检测方法、装置及设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106959889A (zh) * | 2016-01-11 | 2017-07-18 | 阿里巴巴集团控股有限公司 | 一种服务器资源调整的方法和装置 |
CN109656789A (zh) * | 2017-10-12 | 2019-04-19 | 阿里巴巴集团控股有限公司 | Io性能检测方法及系统 |
CN107943591A (zh) * | 2017-12-05 | 2018-04-20 | 郑州云海信息技术有限公司 | 一种基于linux的多主机进程管理的方法 |
CN111031022A (zh) * | 2019-12-05 | 2020-04-17 | 安徽大学 | 基于Slurm的资源管理调度方法、装置、电子设备及存储介质 |
-
2020
- 2020-08-31 CN CN202010893829.4A patent/CN112052088B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102654841A (zh) * | 2011-03-02 | 2012-09-05 | 中国电信股份有限公司 | 细粒度分配虚拟机计算资源的方法和设备 |
CN102307224A (zh) * | 2011-05-17 | 2012-01-04 | 华为软件技术有限公司 | 云计算系统中业务隔离的实现方法及装置、云服务器 |
CN108334409A (zh) * | 2018-01-15 | 2018-07-27 | 北京大学 | 一种细粒度的高性能云资源管理调度方法 |
CN109634812A (zh) * | 2018-12-11 | 2019-04-16 | 厦门服云信息科技有限公司 | Linux系统的进程CPU占用率控制方法、终端设备及存储介质 |
CN111221625A (zh) * | 2019-12-31 | 2020-06-02 | 北京健康之家科技有限公司 | 文件检测方法、装置及设备 |
Non-Patent Citations (2)
Title |
---|
《 一种能效优化的MapReduce资源比模型》;宋杰 等;《宋杰》;20150131;第38卷(第1期);全文 * |
《云计算环境中高能效资源分配方法的研究》;侯泓颖;《中国优秀硕士学位论文全文数据库(信息科技辑)电子期刊》;20160315;第2016年卷(第3期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112052088A (zh) | 2020-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112052088B (zh) | 自适应的进程cpu资源限制方法、装置、终端及存储介质 | |
CN109936604B (zh) | 一种资源调度方法、装置和系统 | |
US8424007B1 (en) | Prioritizing tasks from virtual machines | |
EP2414932B1 (en) | Execution of a plugin according to plugin stability level | |
CN109298990B (zh) | 日志存储方法、装置、计算机设备及存储介质 | |
JP2012525641A (ja) | アプリケーション効率エンジン | |
CN101595456A (zh) | 用于事务资源控制的方法和系统 | |
US11220688B2 (en) | Oversubscription scheduling | |
CN111949368A (zh) | 应用程序控制方法及装置 | |
US9135064B2 (en) | Fine grained adaptive throttling of background processes | |
US20230409391A1 (en) | Thread priority adjusting method, terminal, and computer-readable storage medium | |
CN110928746A (zh) | 可调配的业务处理系统、方法、装置及可存储介质 | |
CN109753338B (zh) | 虚拟gpu使用率的检测方法和装置 | |
CN110569238B (zh) | 一种基于大数据的数据治理方法、系统、存储介质和服务端 | |
US20200142736A1 (en) | Computer processing system with resource optimization and associated methods | |
CN107872480B (zh) | 大数据集群数据平衡方法和装置 | |
CN114461323B (zh) | 一种卡顿处理方法、装置、电子设备及存储介质 | |
CN110413573B (zh) | 日志存储控制方法、装置、计算机设备和存储介质 | |
CN116089098A (zh) | 一种线程死循环检测方法、设备及装置 | |
CN110515701B (zh) | 一种虚拟机的热迁移方法及装置 | |
CN106657284A (zh) | 数据流处理的方法和装置 | |
CN107678866B (zh) | 一种基于嵌入式操作系统的分区通信方法及装置 | |
CN112269545A (zh) | 一种分布式文件系统磁盘写入的自动均衡方法及存储介质 | |
CN113467901A (zh) | 一种任务调度的方法及相关设备 | |
CN114143574B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |