7.6 进程优先级调整:nice、renice

在学习top时,我们看到其输出中有NI字段,标记了对应进程的优先级,该字段的取值范围是-20~19,数值越低代表优先级越高,也就能更多地被操作系统调度运行,如果一个进程在启动时并没有设定nice优先级,则默认使用0。普通用户也可以给自己的进程设定nice优先级,但是范围只限于0~19。不过top中不是还有一个PR字段吗,它也是进程的“优先级”,这两个概念怎么理解呢?实际上,Linux使用了“动态优先级”的调度算法来确定每一个进程的优先级,一个进程的最终优先级=优先级+nice优先级。

nice命令仅限于在启动一个进程的时候同时赋予其nice优先级,比如你自己写了一个脚本job.sh,你想以比较高的优先级来运行它,就可以这么做:


  1. [root@localhost ~]# nice -n -10 ./job.sh

对于已经启动的进程,可以用renice命令进行修改,不过,这需要先查询出该进程的PID(使用ps命令)。假设现在需要将PID为5555的进程的nice优先级调整为-10,则可以这么做:


  1. [root@localhost ~]# renice -10 -p 5555

除了使用renice外,还可以使用top提供的功能来修改,前提也是要查到该进程的PID,然后在top界面中按r键,在出现的PID to renice后输入PID,如图7-7所示。然后在出现的renice PID*to value后输入修改后的nice优先级既可,如图7-8所示。

7.6 进程优先级调整:nice、renice - 图1

图7-7 使用top修改进程的优先级

7.6 进程优先级调整:nice、renice - 图2

图7-8 输入修改后的nice优先级