Linux的进程优先级NI和PR有啥区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux的进程优先级NI和PR有啥区别相关的知识,希望对你有一定的参考价值。

nice(NI)和priority(PR),并不是同一个概念。
NICE值应该是熟悉Linux/UNIX的人很了解的概念了,它是反应一个进程“优先级”状态的值,其取值范围是-20至19,一共40个级别。这个值越小,表示进程”优先级”越高,而值越大“优先级”越低。nice值虽然不是priority,但是它确实可以影响进程的优先级。一般会把nice值叫做静态优先级,这也基本符合nice值的特点,就是当nice值设定好了之后,除非我们用renice去改它,否则它是不变的。
实用priority值表示PRI和PR值,或者叫动态优先级。priority的值在之前内核的O1调度器上表现是会变化的,所以也叫做动态优先级。在内核中,进程优先级的取值范围是通过一个宏定义的,这个宏的名称是MAX_PRIO,它的值为140。
而这个值又是由另外两个值相加组成的,一个是代表nice值取值范围的NICE_WIDTH宏,另一个是代表实时进程(realtime)优先级范围的MAX_RT_PRIO宏。
说白了就是,Linux实际上实现了140个优先级范围,取值范围是从0-139,这个值越小,优先级越高。nice值的-20到19,映射到实际的优先级范围是100-139。
参考技术A 用top
-u
命令查看进程以及pid。命令如下:
$
top
-u
pid

进程id
user

进程所有者
pr

进程优先级
ni

nice值。负值表示高优先级,正值表示低优先级
virt

进程使用的虚拟内存总量,单位kb。本回答被提问者采纳

Linux进程PRI与NI值

1.PRI -> 进程的优先级,大部分系统(Linux、UCOSII)都是数字越低优先级越高,进程就优先运行 , Linux中的PRI(new) = PRI(old) + nice ,其中 , PRI(old)为系统算法决定 ,在创建时被赋予不同的值,用户不可修改 ,用户只能通过修改nice来修改进程的优先级

2.NI -> nice , 进程优先级的修正量, -20 ~ 19 ,用户可修改 (root用户可修改nice值-20 ~ 19 ,普通用户只能修改nice值0~19 )。一般情况下,子进程继承父进程的nice值,由于init进程的nice值为0,所有大部分进程的nice值都为 0。

3.用户可通过renice xx 进程号 的命令修改进程的优先级 ,其中xx为nice值,eg : renice 10 22401  ,注:PRI(old)被系统保留 ,每执行一次renice xx 进程号命令,都是在PRI(old)基础上+nice值

 

4.用户也可以使用nice -n xx 进程号 的命令以该优先级打开某个进程

 

 5.(1)第一点的某些描述不正确 , 需要继续研究

   (2)现大部分Linux系统的进程PRI 都为80 ,??????? ,还需继续研究Linux内核原理,可持续跟踪参考 http://blog.csdn.net/gatieme/article/details/51719208

 

以上,

2017/07/11

以上是关于Linux的进程优先级NI和PR有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

liunx-进程优先级nice

linux怎么查询进程和进程的id

Linux进程PRI与NI值

Linux操作系统进程优先级和进程切换

进程优先级,进程nice值和%nice的解释

浅谈对linux性能监控命令top的理解