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有啥区别的主要内容,如果未能解决你的问题,请参考以下文章