调整进程优先权和利用taskset有效控制cpu资源

调整进程优先权和利用taskset有效控制cpu资源

分类: Linux 226人阅读 评论(0) 收藏 举报
linux 工作 list 脚本 任务 cmd

进程cpu资源分配就是指进程的优先权(priority)。优先权高的进程有优先执行权利。配置进程优先权对多任务环境的Linux很有用,可以改善系统性能。还可以把进程运行到指定的CPU上,这样一来,把不重要的进程安排到某个CPU,可以大大改善系统整体性能。

一、先看系统进程:
PR 就是 Priority 的简写,而 NI 是 nice
的简写。这两个值决定了PR的值,PR越小,进程优先权就越高,就越“优先执行”。换算公式为:PR(new) = PR(old) + NI

二、修改进程优先级的命令主要有两个:nice,renice
1、一开始执行程序就指定nice值:nice
# nice -n -5 /usr/local/mysql/bin/mysqld_safe &

Linux nice 命令详解
功能说明:设置优先权。
语  法:nice [-n
<优先等级>][--help][--version][执行指令]
补充说明:nice指令可以改变程序执行的优先权等级。

参  数:-n<优先等级>或-<优先等级>或�Cadjustment=<优先等级>
设置欲执行的指令的优先权等级。等级的范围从-20-19,其中-20最高,19最低,只有系统管理者可以设置负数的等级。
�Chelp  在线帮助。

�Cversion  显示版本信息。

―――――――――――――――――――――――――

2、调整已存在进程的nice:renice;PID为5200的进程nice设为-5

# renice -5 -p 5200

Linux renice 命令详解
功能说明:调整优先权。
语  法:renice [优先等级][-g
<程序群组名称>...][-p <程序识别码>...][-u <用户名称>...]

补充说明:renice指令可重新调整程序执行的优先权等级。预设是以程序识别码指定程序调整其优先权,您亦可以指定程序群组或用户名称调整优先权等级,并修改所有隶属于该程序群组或用户的程序的优先权。等级范围从-20�C19,只有系统管理者可以改变其他用户程序的优先权,也仅有系统管理者可以设置负数等级。

参  数:
-g <程序群组名称>  使用程序群组名称,修改所有隶属于该程序群组的程序的优先权。
-p
<程序识别码>  改变该程序的优先权等级,此参数为预设值。
-u <用户名称>
指定用户名称,修改所有隶属于该用户的程序的优先权。

常常感觉系统资源不够用,一台机子上跑了不下3个比较重要的服务,但是每天我们还要在上面进行个备份压缩等处理,网络长时间传输,这在就很影响本就不够用的系统资源;

这个时候我们就可以把一些不太重要的比如copy/备份/同步等工作限定在一颗cpu上,或者是多核的cpu的一颗核心上进行处理,虽然这不一定是最有效的方法,但可以最大程度上利用了有效资源,降低那些不太重要的进程占用cpu资源;

查看系统下cpu信息:

#cat /proc/cpuinfo
taskset就可以帮我们完成这项工作,而且操作非常简单;

该工具系统默认安装,rpm包名util-linux

#taskset �Chelp
taskset (util-linux 2.13-pre7)
usage: taskset [options]
[mask | cpu-list] [pid | cmd [args...]]
set or get the affinity of a
process
-p, �Cpid operate on existing given pid
-c, �Ccpu-list display and
specify cpus in list format
-h, �Chelp display this help
-v, �Cversion
output version information

举例:
1、开启一个只用0标记的cpu核心的新进程(job.sh是你的工作脚本)

#taskset -c 0 sh job.sh
2、查找现有的进程号,调整该进程cpu核心使用情况(23328举例用的进程号)

#taskset -pc 0 23328
pid 23328′s current affinity list: 0-3
#0-3表示使用所有4核进行处理
pid 23328′s new affinity list: 0
#调整后改为仅适用0标记单核处理
3、可在top中进行负载check

最后你可以在你的工作脚本中加入该指令来合理利用现有的cpu资源;


你可能感兴趣的:(调整进程优先权和利用taskset有效控制cpu资源)