CPU调优

1 调度优先级

nice命令可以用来调整进程优先级,正nice值调低优先级,而负值调高优先级,后者只能由超级用户设置,范围为:-20~+19

什么是nice值:进程可被执行的优先级的修正数值

CPU调优

PRI :代表这个进程可被执行的优先级(最终优先级),其值越小越早被执行
NI :代表这个进程的nice值

PRI即进程的优先级,此值越小进程的优先级别越高。而NI,也就是我们所要说的nice值(通过nice命令设置),其表示进程可被执行的优先级的修正数值。如前面所说,PRI值越小越快被执行,那么加入nice值后,将会使得PRI变为:PRI(new)=PRI(old)+nice。
所以,nice命令设置的优先级不是程序最终的优先级,而只是优先级的修正数值。

举个例子:通过nice命令,启动进程时指定nice值

命令格式:nice -n nice值 COM

CPU调优

上图说明了 第一次运行sleep没有设置nice值 默认的PRI值为80,第二次运行sleep把nice设置为-10,PRI的最终值为70,第三次运行sleep把nice设置为10,PRI的最终值为90.在CPU调度上的优先顺序为:第2次>第1次>第3次

 

更改一个已经在运行进程的优先级:renice命令

命令格式:renice nice值 -p 进程PID

CPU调优

nice命令在启动进程时候指定nice值,不能修改已运行进程nice,renice是修改已启动进程的nice值。

.

2 进程绑定(CPU亲和度)

一个进程可以绑定在一个或多个CPU上,这样可以通过提高缓存温度和内存本地性来提高性能。

首先我们绑定进程到CPU上应该知道我们的机器有几颗(几核)CPU

查看CPU数量

CPU调优

绑定进程到指定的CPU

通过taskset命令实现,这个方法可以使用CPU编号或者范围设置CPU关联性

CPU调优

CPU调优

测试绑定后的效果

CPU调优

  1. 使用dd命令创建一个后台执行的进程
  2. 使用pidstat命令查看15072PID运行在哪个CPU编号上
  3. 使用taskset把15072切换到CPU编号0上
  4. 再次使用pidstat查看是否切换成功
  5. 再次使用taskset切换15072进程到CPU编号6上
  6. 使用pidstat验证是否切换成功