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

本文详细介绍了Linux系统中如何通过修改进程优先级和限制进程使用特定CPU核心来优化CPU资源分配。包括使用nice和renice命令调整进程优先级,以及使用taskset工具管理进程在多核CPU上的运行。对于资源紧张的多任务环境,这些技巧有助于提高系统性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进程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<优先等级>或-<优先等级>或–adjustment=<优先等级>
设置欲执行的指令的优先权等级。等级的范围从-20-19,其中-20最高,19最低,只有系统管理者可以设置负数的等级。
–help  在线帮助。

–version  显示版本信息。

—————————————————————————

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

# renice -5 -p 5200

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

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

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


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

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

查看系统下cpu信息:

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

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

#taskset–help
taskset (util-linux 2.13-pre7)
usage: taskset [options]
[mask |cpu-list] [pid | cmd [args...]]
set or get the affinity of a
process
-p, –pid operate on existing given pid
-c, –cpu-list display and
specify cpus in list format
-h, –help display this help
-v, –version
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资源;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值