CPU调优
1 调度优先级
nice命令可以用来调整进程优先级,正nice值调低优先级,而负值调高优先级,后者只能由超级用户设置,范围为:-20~+19
什么是nice值:进程可被执行的优先级的修正数值
PRI :代表这个进程可被执行的优先级(最终优先级),其值越小越早被执行
NI :代表这个进程的nice值
PRI即进程的优先级,此值越小进程的优先级别越高。而NI,也就是我们所要说的nice值(通过nice命令设置),其表示进程可被执行的优先级的修正数值。如前面所说,PRI值越小越快被执行,那么加入nice值后,将会使得PRI变为:PRI(new)=PRI(old)+nice。
所以,nice命令设置的优先级不是程序最终的优先级,而只是优先级的修正数值。
举个例子:通过nice命令,启动进程时指定nice值
命令格式:nice -n nice值 COM
上图说明了 第一次运行sleep没有设置nice值 默认的PRI值为80,第二次运行sleep把nice设置为-10,PRI的最终值为70,第三次运行sleep把nice设置为10,PRI的最终值为90.在CPU调度上的优先顺序为:第2次>第1次>第3次
更改一个已经在运行进程的优先级:renice命令
命令格式:renice nice值 -p 进程PID
nice命令在启动进程时候指定nice值,不能修改已运行进程nice,renice是修改已启动进程的nice值。
.
2 进程绑定(CPU亲和度)
一个进程可以绑定在一个或多个CPU上,这样可以通过提高缓存温度和内存本地性来提高性能。
首先我们绑定进程到CPU上应该知道我们的机器有几颗(几核)CPU
查看CPU数量
绑定进程到指定的CPU
通过taskset命令实现,这个方法可以使用CPU编号或者范围设置CPU关联性
测试绑定后的效果
- 使用dd命令创建一个后台执行的进程
- 使用pidstat命令查看15072PID运行在哪个CPU编号上
- 使用taskset把15072切换到CPU编号0上
- 再次使用pidstat查看是否切换成功
- 再次使用taskset切换15072进程到CPU编号6上
- 使用pidstat验证是否切换成功