nice 修改linux进程优先级
当我们在执行多个作业时,其实每个作业都会进入到CPU的任务分配中,等待CPU来执行,而CPU会根据每个作业的优先级(priority)来判断谁比较重要,所以有的作业就会优先执行。
Linux 系统中,每个进程都会拥有一个“优先级(priority)”属性,利用该属性,让CPU判断哪个作业比较重要,哪个作业会优先执行,这使得系统资源分配得更合适。我们可以使用ps来观察优先级。
PRI就是Priority的简写,NI是nice的简写,它们凑在一起,才产生当前的PRI值。PRI越小,表示该进程“优先级越高”,PRI是由系统动态产生的,不是一直固定的值。NI(nice)则是我们额外提供的一个数值,它可以影响PRI的值,它的关联性是这样的:
PRI(new)= RPI(old)+nice
要特别留意,如果原来的PRI是50,并不是我们给予一个nice=5,就会让PRI变成55.因为是系统“动态”决定的,所以,虽然nice值是可以影响PRI,但最终的PRI仍要经过系统分析后才能决定。另外,nice值有正负,既然PRI越小越早执行,所以,当nice值为负时,该进程就会降低PRI值,即会优先处理。此外,必须注意:
1.一般用户的nice值为0~19;
2.root可用的nice值为-20~19;
3.一般用户仅可将nice值越调越高,如果本来nice为5,则只能调整到大于5的nice:
4.一般用户仅能调整属于自己的进程nice值。
也就是说,要调整某个进程的优先级,就是“调整该进程的nice值”。那么,如何给某个进程提供nice值呢?有两种方式,分别是:
1.开始执进程就立即提供一个特定的nice值:用nice命令;
2.调整某个已经存在的PID的nice值:用renice命令。
# nice [-n] command
参数:
-n :后面接一个数值,数值的范围是-20~19.
范例一: 用root给一个nice值为-5,用于执行vi,并观察该进程。
# nice -n -5 vi &
Renice 命令
# renice [number] PID
参数:
PID :某个进程的ID。
范例一 : 用上面nice范例中ps -l 的结果,将2576那个PID修改nice为10.