博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个限制进程 CPU 使用率的解决方案
阅读量:7141 次
发布时间:2019-06-28

本文共 2611 字,大约阅读时间需要 8 分钟。

一个限制进程 CPU 使用率的解决方案

一 背景

在最近的一个项目中,需要限制 CPU 使用率。通过查阅各种资料,发现已经有直接可以使用的软件可以使用,这个软件就是cpulimit,这个软件使用非常简单。但是,结合实际使用场景,被限制的进程不能后台运行,一旦后台运行,进程即会立刻退出,而且该进程运行一段时间后会产生子进程及相关进程。针对这种情况,经过思考,通过以下解决方案解决该问题。

二 解决步骤

2.1 安装cpulimit

[root@gysl-dev ~]# yum -y install epel-release[root@gysl-dev ~]# yum -y install cpulimit

2.2 执行脚本

[root@gysl-dev ~]# sh cpulimit.sh

cpulimit.sh脚本内容:

#!/bin/bashwhile true;      do          sleep 30;        pgrep palrun>&/dev/null;          if [ $? -eq 0 ]; then              for pid in `pgrep palrun`;                  do                      cpulimit -l 70 -p $pid &                  done;          break;        fi;          done &

将以上脚本加入到需要限制 CPU 使用率的进行启动脚本的最前面,对该脚本的解释。

由于需要限制 CPU 使用率的进程不能在后台运行,所以把限制脚本加入到启动脚本的最前面,并切换到后台运行,sleep 30秒,待需要限制的进程启动并创建子进程后对其进行限制。

三 总结

3.1 官方帮助信息

[root@gysl-dev ~]# cpulimit --helpUsage: cpulimit [OPTIONS...] TARGET   OPTIONS      -l, --limit=N          percentage of cpu allowed from 0 to 100 (required) #限制 CPU 使用百分比      -v, --verbose          show control statistics #显示控制统计      -z, --lazy             exit if there is no target process, or if it dies      -i, --include-children limit also the children processes #同时也限制子进程      -h, --help             display this help and exit   TARGET must be exactly one of these:      -p, --pid=N            pid of the process (implies -z)      -e, --exe=FILE         name of the executable program file or path name      COMMAND [ARGS]         run this command and limit it (implies -z)

3.2 cpulimit命令使用实践

[root@gysl-dev ~]# cpulimit -l 70 -v -p 62581 cpu detectedProcess 6258 foundPriority changed to -10Members in the process group owned by 6258: 1%CPU    work quantum    sleep quantum   active rate70.09%   73424 us        26575 us       73.42%69.86%   70778 us        29221 us       70.78%69.94%   71703 us        28296 us       71.70%69.77%   70495 us        29504 us       70.50%69.91%   74194 us        25805 us       74.19%69.49%   69281 us        30718 us       69.28%69.78%   72668 us        27331 us       72.67%70.35%   70634 us        29365 us       70.63%69.66%   72786 us        27213 us       72.79%70.27%   69679 us        30320 us       69.68%69.56%   72325 us        27674 us       72.33%70.40%   71926 us        28073 us       71.93%69.43%   71330 us        28669 us       71.33%69.50%   72184 us        27815 us       72.18%70.16%   69835 us        30164 us       69.84%69.37%   74080 us        25919 us       74.08%69.84%   69417 us        30582 us       69.42%69.95%   71415 us        28584 us       71.42%70.81%   71334 us        28665 us       71.33%

转载于:https://blog.51cto.com/3842834/2364081

你可能感兴趣的文章
VM with share disk configuration
查看>>
解决:Loading kernel module CAP_SYS_MODULE CAP_NET_ADMIN alias netdev-eth0 instead
查看>>
mysql limit分页查询优化写法
查看>>
Citrix XenDesktop7 XenApp7 组件概念介绍
查看>>
如何做一名合格的部门经理
查看>>
OSPF 你懂多少之经典问题50 个
查看>>
CentOS 6.4安装配置LNMP服务器(Nginx+PHP+MySQL)
查看>>
"不能连接到服务器"时收到错误消息 Lync 在线用户尝试登录到移动设备上的 Lync 2010 移动客户端...
查看>>
对HTTP 缓存的一些简单理解
查看>>
Android软件工程师之不归路
查看>>
MySQL找回root账号的密码
查看>>
python原生Ajax 文件上传
查看>>
Html5的新特性
查看>>
在servlet中读取资源文件--------菜鸟小结
查看>>
android小代码
查看>>
MyDataBase
查看>>
用GTK开发一个画图程序(windows)
查看>>
第十四章 磁盘配额
查看>>
Python 代码性能优化技巧
查看>>
关于memcache的一些知识
查看>>