Linux系统的进程CPU占用率控制方法、终端设备及存储介质技术方案

技术编号:20865743 阅读:19 留言:0更新日期:2019-04-17 09:12
本发明专利技术涉及一种Linux系统的进程CPU占用率控制方法、终端设备及存储介质,该方法包括:S1:初始设置待监控进程的运行时间占比workingrate=CPU占用率pcpu=限制阈值limit,设定控制周期dt;S2:从第2控制时刻开始,计算待监控进程的CPU占用率pcpu;S3:根据当前控制时刻的CPU占用率pcpu,计算当前控制时刻的运行时间占比workingrate;S4:计算当前控制时刻的期望运行时间twork和期望暂停时间tsleep;S5:根据当前控制时刻的期望运行时间twork和期望暂停时间tsleep,通过linux信号SIGCONT和SIGSTOP信号控制待监控进程下一控制周期内运行twork时间,暂停tsleep时间。本发明专利技术能够完全在用户态环境下实现,不需要内核模进行支持,极大的提高对应用环境的兼容性。

【技术实现步骤摘要】
Linux系统的进程CPU占用率控制方法、终端设备及存储介质
本专利技术涉及计算机系统
,尤其涉及一种Linux系统的进程CPU占用率控制方法、终端设备及存储介质。
技术介绍
CPU计算资源作为现代计算机系统最重要资源组成部分,在保障整个计算机系统正常、稳定、高效运行中起到之至关重要的的作用。现代操作系统CPU资源通常由调度算进行管理,以Linux为例,在普通进程调度中公平性是一个重要的原则。Linux作为最具代表的现代操作系统,实现公平调度基本上是两种思路:1、给处于可执行状态的进程分配时间片(按照优先级),用完时间片的进程被放到“过期队列”中。等可执行状态的进程都过期了,再重新分配时间片。2、动态调整进程的优先级。随着进程在CPU上运行,其优先级被不断调低,以便其他优先级较低的进程得到运行机会。算法上保证了所有的进程在系统上能够得到公平的调度,因此每个进程的CPU占用率由该进程的自身的执行逻辑所决定,在不设置进程优先级的情况下系统不对进程的调度情况进行干预。随着硬件能力持续发展和现代操作系统的多任务属性,用户通常将多个业务运行在同一操作系统上,以提高系统资源的利用率。在多业务的操作系统上,由于业务逻辑无法完全预测、业务时效需不同等问题将最终将导致在系统默认CPU调度算法下无法满足用户业务系统正常运行的需求。Linux作为主流的现代操作系统,在各行各业中得到了广泛的应用,在当前信息时代的背景下计算机系统中的CPU计算资源已经成为一种至关重要的生产资料,CPU计算资源能否得到高效的利用不但直接关乎企业的成本支出,更是体现了社会生产力的发展水平。由于资源调度在系统内核中进行实现,因此常见的进程CPU占用率控制方式需要内核模块的配合进行实现。如Linux操作系统下的Cgroup(ControlGroups)机制,它以分组的形式对进程使用系统资源的行为进行管理和控制。用户通过对所进程进行分组,再对该分组整体进行资源的分配和控制,包括对进程对CPU的使用率的控制。Cgroup由内核态模块和用户态接口两部分构造,用户通过用户态接口获取和设置内核模块的各项参数。Cgroup架构复杂并且需要内核进行支持,因此,在单纯的CPU限制存在易用性差和兼容性不足的问题。
技术实现思路
针对上述问题,本专利技术旨在提供一种Linux系统的进程CPU占用率控制方法、终端设备及存储介质,本方法能够完全在用户态环境下实现,不需要内核模进行支持,极大的提高对应用环境的兼容性。具体方案如下:一种Linux系统的进程CPU占用率控制方法,包括以下步骤:S1:初始设置待监控进程的运行时间占比workingrate=CPU占用率pcpu=限制阈值limit,设定控制周期dt,设定控制时刻分别为:第1、2、……、n控制时刻;S2:从第2控制时刻开始,计算待监控进程的CPU占用率pcpu;S3:根据当前控制时刻的CPU占用率pcpu,计算当前控制时刻的运行时间占比workingrate:其中min()表示取两个数的最小值;S4:根据当前控制时刻的运行时间占比workingrate,计算当前控制时刻的期望运行时间twork和期望暂停时间tsleep:twork=dt×workingratetsleep=dt-dt×workingrateS5:根据当前控制时刻的期望运行时间twork和期望暂停时间tsleep,通过linux信号SIGCONT和SIGSTOP控制待监控进程下一控制周期内运行时间,暂停时间。进一步的,所述待监控进程的CPU占用率pcpu的计算方法如下:(1):获取待监控进程的配置参数,并根据配置参数查找到该待监控进程对应的proc虚拟文件系统路径;(2):遍历proc虚拟文件系统,读取所有进程的/proc/[pid]/stat文件,根据文件的ppid属性查找出待监控进程的所有子进程;(3):读取待监控进程和其所有子进程的/proc/[pid]/stat文件的utime和stime属性,计算该待监控进程的当前时刻的运行时间cputime,并根据公式T=cputime*1000/F,其中,F为已知的系统频率,将运行时间的单位转换为毫秒;(4)根据下列公式计算待监控进程的CPU占用率pcpu:其中,Tn为当前控制时刻的运行时间,Tn-1为前一控制时刻的运行时间。进一步的,所述配置参数为进程ID或者进程名称。进一步的,所述运行时间cputime为待监控进程及其所有子进程的utime和stime的累加之和。一种Linux系统的进程CPU占用率控制终端设备,包括处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本专利技术实施例上述的方法的步骤。一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现本专利技术实施例上述的方法的步骤。本专利技术采用如上技术方案,在传统的内核态进行资源控制和隔离的基础上提出了在用户态进行进程CPU资源占用率控制的装置,在一些内核版本不支持Cgroup和单纯的CPU资源控制的应用场景中能够对进程CPU资源占用率实现有效的控制,用户可以根据自己的需求设置控制策略,有效提高了CPU资源利用率,保障关键业务能够分配到足够的资源。附图说明图1所示为本专利技术实施例一的流程示意图。具体实施方式为进一步说明各实施例,本专利技术提供有附图。这些附图为本专利技术揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本专利技术的优点。现结合附图和具体实施方式对本专利技术进一步说明。实施例一:参考图1所示,本专利技术提供了一种Linux系统的进程CPU占用率控制方法,由于资源调度在系统内核中进行实现,因此常见的进程CPU占用率控制方式需要内核模块的配合进行实现。如Linux操作系统下的Cgroup(ControlGroups)机制,它以分组的形式对进程使用系统资源的行为进行管理和控制。用户通过对所进程进行分组,再对该分组整体进行资源的分配和控制,包括对进程对CPU的使用率的控制。Cgroup由内核态模块和用户态接口两部分构造,用户通过用户态接口获取和设置内核模块的各项参数。Cgroup架构复杂并且需要内核进行支持,因此在单纯的CPU限制用存在易用性差兼容性不足的问题。根据Linux信号机制,在用户态下通过对进程发送SIGSTOP或SIGCONT信号能够改变进程状态为暂停或执行,间接的改变了进程的调度逻辑,结合proc文件系统上/proc/[pid]/stat文件的下列特性:1、ppid:父进程ID2、utime:该任务在用户态运行的时间,单位为jiffies3、stime:该任务在核心态运行的时间,单位为jiffies4、start_time:该任务启动的时间,单位为jiffies通过遍历/proc目录下的/proc/[pid]/stat文件能够查找出该进程的所有子进程,并能通过/proc/[pid]/stat文中的utime和stime两项属性计算出某个进程的运行情况。本实施例方法具体包括以下步骤:S1:初始设置待监控进程的运行时间占比workingrate=限本文档来自技高网
...

【技术保护点】
1.一种Linux系统的进程CPU占用率控制方法,其特征在于:包括以下步骤:S1:初始设置待监控进程的运行时间占比workingrate=CPU占用率pcpu=限制阈值limit,设定控制周期dt,设定控制时刻分别为:第1、2、……、n控制时刻;S2:从第2控制时刻开始,计算待监控进程的CPU占用率pcpu;S3:根据当前控制时刻的CPU占用率pcpu,计算当前控制时刻的运行时间占比workingrate:

【技术特征摘要】
1.一种Linux系统的进程CPU占用率控制方法,其特征在于:包括以下步骤:S1:初始设置待监控进程的运行时间占比workingrate=CPU占用率pcpu=限制阈值limit,设定控制周期dt,设定控制时刻分别为:第1、2、……、n控制时刻;S2:从第2控制时刻开始,计算待监控进程的CPU占用率pcpu;S3:根据当前控制时刻的CPU占用率pcpu,计算当前控制时刻的运行时间占比workingrate:其中min()表示取两个数的最小值;S4:根据当前控制时刻的运行时间占比workingrate,计算当前控制时刻的期望运行时间twork和期望暂停时间tsleep:twork=dt×workingratetsleep=dt-dt×workingrateS5:根据当前控制时刻的期望运行时间twork和期望暂停时间tsleep,通过linux信号SIGCONT和SIGSTOP控制待监控进程下一控制周期内运行时间,暂停时间。2.根据权利要求1所述的Linux系统的进程CPU占用率控制方法,其特征在于:所述待监控进程的CPU占用率pcpu的计算方法如下:(1):获取待监控进程的配置参数,并根据配置参数查找到该待监控进程对应的proc虚拟文件系统路径;(2):遍历proc虚拟文件系统,读取所有进...

【专利技术属性】
技术研发人员:潘宵陈奋孙晓波龚利军陈荣有
申请(专利权)人:厦门服云信息科技有限公司
类型:发明
国别省市:福建,35

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1