CpuLimit脚本进程CPU使用率限制
第零章 序
在嵌入式平台调试程序的时候,经常会遇到进程占用cpu资源过高的情况,导致系统的稳定性降低,我们怎么来解决这个问题呢?
我们可以通过cpulimit工具来限制每个进程的cpu使用率,提供系统的整体稳定性。
cpulimit 命令的工作原理
为进程预设一个 cpu 占用率门限,并实时监控进程是否超出此门限,若超出则让该进程暂停运行一段时间。cpulimit 使用 SIGSTOP 和 SIGCONT 这两个信号来控制进程。它不会修改进程的 nice 值,而是通过监控进程的 cpu 占用率来做出动态调整。
cpulimit 的优势是可以控制进程的cpu使用率的上限值。但与 nice 相比也有缺点,那就是即使 cpu 是空闲的,进程也不能完全使用整个 cpu 资源。
第一章 安装及使用
wget -O cpulimit.zip https://github.com/opsengine/cpulimit/archive/master.zip
unzip cpulimit.zip
cd cpulimit-master
make
sudo cp src/cpulimit /usr/bin
上面的命令行,会先从从 GitHub 上将源码下载到本地,然后再解压、编译、并安装到 /usr/bin 目录下。
现在就可以使用cpulimit命令了!
举例:
cpulimit –e httpd –l 40 #限制httpd(进程名)的cpu使用率为40%
cpulimit –e /usr/local/bin/httpd –l 40
cpulimit –p 2960 –l 55 #限制pid为2960的进程的CPU占用为55%
-e httpd, –exe=httpd,两者等同。
-l 40, –limit=40, 两者等同。
具体可以参考cpulimit -h帮助文档。
来看一个实例:
限制mysqld进程的CPU使用率在200%以内:
使用前:
使用后:
使用之后,cpu使用率被限制,因为是cpu使用率在动态变动,cpulimit不能非常及时准确的调整,偶尔会有超过200%,但是不会超过太多。
第二章 脚本控制CPU
创建脚本文件cpulimit.sh
#!/bin/bash
# auth:kaliarch
# func:sys info check
# version:v1.0
# sys:centos6.x/7.xset -e
[ $(id -u) -gt 0 ] && exit 1# cpu使用超过百分之多少进行限制
PEC_CPU=20# 限制进程使用百分之多少,如果程序为多线程,单个cpu限制为85,如果为多核心,就需要按照比例写,例如cpu为2c,像限制多线程占比80%,就写170
LIMIT_CPU=30
# 日志
LOG_DIR=/data/cpulimit/log/# 超过阀值进程pid
PIDARG=$(ps -aux |awk -v CPU=${PEC_CPU} '{if($3 > CPU) print $2}')
CPULIMITCMD=$(which cpulimit)install_cpulimit() {[ ! -d /tmp ] && mkdir /tmp || cd /tmpwget -c https://github.com/opsengine/cpulimit/archive/v0.2.tar.gztar -zxf v0.2.tar.gzcd cpulimit-0.2 && make[ $? -eq 0 ] && cp src/cpulimit /usr/bin/
}do_cpulimit() {
[ ! -d ${LOG_DIR} ] && mkdir -p ${LOG_DIR}
for i in ${PIDARG};
doMSG=$(ps -aux |awk -v pid=$i '{if($2 == pid) print $0}')echo ${MSG}[ ! -d /tmp ] && mkdir /tmp || cd /tmpnohup ${CPULIMITCMD} -p $i -l ${LIMIT_CPU} &echo "$(date) -- ${MSG}" >> ${LOG_DIR}$(date +%F).log
done
}main() {hash cpulimit if [ $? -eq 0 ];thendo_cpulimitelseinstall_cpulimit && do_cpulimitfi
}main
接着只需使用sh cpulimit.sh,这样程序就会获取CPU超百分之20的进程程序,然后CpuLImit就会限流到百分之30,并且记录限流日志。
如果需要不定时的启动,则可以在脚本中定下循环控制器,持续运行main。
CpuLimit脚本进程CPU使用率限制相关推荐
- 进程CPU使用率计算
1.查看进程相关信息 cat /proc/进程号/stat 间隔period 秒再次查看进程信息,分别记录两次的utime和stime utime是第14位 stime是第15位 lastutime是 ...
- Ubuntu kswapd0 进程CPU使用率 超高
今天租户的云主机遇到了一个很奇怪的问题,CPU占用一直100%居高不下. 客户环境: Ubuntu 18.04 LTS 应用:MYsql , Ngnix 使用top命令查看,kswapd0 进程CPU ...
- java进程cpu使用率高_什么会导致Java应用程序的CPU使用率飙升?
问题 无限循环的while会导致CPU使用率飙升吗? 经常使用Young GC会导致CPU占用率飙升吗? 具有大量线程的应用程序的CPU使用率是否较高? CPU使用率高的应用程序的线程数是多少? 处于 ...
- Windows下用C语言获取进程cpu使用率,内存使用,IO情况
/** @file * @brief 进程统计信息函数的声明 * @author 张亚霏 * @date 2009/05/03 * @version 0.1 * */ #ifndef PROCESS_ ...
- c语言占用cpu的程序,Windows下用C语言获取进程cpu使用率,内存使用,IO情况
转自: http://zhangyafeikimi.iteye.com/blog/378658 process_stat.h /** @file * @brief 进程统计信息函数的声明 * @aut ...
- linux 循环 cpu使用率脚本,监控CPU使用率的三种方法(shell脚本)
监控CPU使用率的三种方法(shell脚本),供大家学习参考. 方法一: 复制代码 代码如下: #!/bin/sh #监控CPU使用率 #Written by Chameleon #Http://ch ...
- redis进程CPU使用率100%,kdevtmpfsi木马清除
病毒表现 CPU使用率无限接近100%,我的四核系统CPU使用率一直再395%-399%波动. 故障出现时间 宝塔面板安装redis之后 问题查找(百度) 木马病毒--kdevtmpfsi 通过red ...
- Java进程CPU使用率高排查
1.使用top 定位到占用CPU高的进程PID top 通过ps aux | grep PID命令 2.获取线程信息,并找到占用CPU高的线程 ps -mp pid -o THREAD,tid,tim ...
- 【Linux】限制进程的CPU使用率
目录 限制进程CPU使用率 限制进程资源的工具 限制进程CPU使用率 工具 cpulimit 安装 1. cpulimit安装 1.1 Ubuntu/Debian: # apt-get instal ...
最新文章
- 数论(一)——素数,GCD,LCM
- JavaWeb编程(十)Json语句
- 1.13 总结-深度学习第五课《序列模型》-Stanford吴恩达教授
- 阿里云前端周刊 - 第 13 期
- 503 service unavailable错误提示如何解决
- C语言再学习 -- 存储类、链接
- csv 导 mysql
- 计算机标准符合,计算机专利申请要符合哪些标准
- mysql-电商库演练1-创建数据-基本查询练习
- 最简单的《域中隔离用户的FTP站点》详解
- 【POJ 3276】【开关问题】Face The Right Way【暑期 No.4】
- STC单片机烧录时的坑不要踩
- linux acpidtd 进程,MaciASL提取的原版的DTDS编译提示有错误,大牛帮忙看下吧。
- 计算机图形学--全局光照(屏幕空间:SSDO,SSR)
- 《具体数学》部分习题解答2
- 使用学信网验证报告免费使用jetbrains全家桶
- 新手怎么创建域名?创建域名后怎么样建站?
- 微信端跳到外部浏览器进行apk文件下载
- python判断性别_惊呆|根据三围数据判断出用户性别竟是python使用逻辑回归算法搞的鬼!...
- [动态规划] 区间DP