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.