Linux的进程优先级的进程优先级NI和和PR到底有什么区别到底有什么区别
为什么要有进程优先级?
这似乎不用过多的解释,毕竟自从多任务操作系统诞生以来,进程执行占用cpu的能力就是一个必须要可以人为控制的
事情。因为有的进程相对重要,而有的进程则没那么重要。
进程优先级起作用的方式从发明以来基本没有什么变化,无论是只有一个cpu的时代,还是多核cpu时代,都是通过控
制进程占用cpu时间的长短来实现的。
就是说在同一个调度周期中,优先级高的进程占用的时间长些,而优先级低的进程占用的短些。
请大家真的不要混淆了系统中的这两个概念:nice(NI)和priority(PR),他们有着千丝万缕的关系,但对于当前的Linux
系统来说,它们并不是同一个概念。
我们看这个命令:
大家是否真的明白其中PRI列和NI列的具体含义有什么区别?
同样的,如果是top命令:
大家是否搞清楚了这其中PR值和NI值的差别?如果没有,那么我们可以首先搞清楚什么是nice值。
什么是NICE值?
NICE值应该是熟悉Linux/UNIX的人很了解的概念了,它是反应一个进程“优先级”状态的值,其取值范围是-20至19,一
共40个级别。
这个值越小,表示进程”优先级”越高,而值越大“优先级”越低。
例如,我们可以通过NICE命令来对一个将要执行的bash命令进行NICE值设置,方法是:
[root@zorrozou-pc0 zorro]# nice -n 10 bash
这样我就又打开了一个bash,并且其nice值设置为10,而默认情况下,进程的优先级应该是从父进程继承来的,这个
值一般是0。
我们可以通过nice命令直接查看到当前shell的nice值:
[root@zorrozou-pc0 zorro]# nice
10
对比一下正常情况:
[root@zorrozou-pc0 zorro]# exit
退出当前nice值为10的bash,打开一个正常的bash,我们查看下其 Nice值:
[root@zorrozou-pc0 zorro]# bash
[root@zorrozou-pc0 zorro]# nice
0
另外,使用renice命令可以对一个正在运行的进程进行nice值的调整,我们也可以使用比如top、ps等命令查看进程的
nice值,具体方法我就不多说了,大家可以参阅相关man page。
需要大家注意的是,我在这里都在使用nice值这一称谓,而非优先级(priority)这个说法。