目录
一、Linux进程优先级
1.什么是进程的优先级?
基本概念:
- cpu资源分配的先后顺序,就是指进程的优先权(priority)。
- 优先权高的进程有优先执行权利。配置进程优先权对多任务环境的linux很有用,可以改善系统性能。
- 还可以把进程运行到指定的CPU上,这样一来,把不重要的进程安排到某个CPU,可以大大改善系统整体性能。
通俗来理解
所谓的优先级就是得到某种资源的先后顺序,本质就是资源不足!!!
2.如何查看进程的优先级?
首先我们知道在linux系统中,用ps –l命令则会类似输出以下几个内容:
我们很容易注意到其中的几个重要信息,有下:
- UID : 代表执行者的身份
- PID : 代表这个进程的代号
- PPID :代表这个进程是由哪个进程发展衍生而来的,亦即父进程的代号
- PRI :代表这个进程可被执行的优先级,其值越小越早被执行
- NI :代表这个进程的nice值
那么我们怎么调整优先级呢?
Linux是支持动态优先级调整的
3.PRI and NI
PRI也还是比较好理解的,即进程的优先级,或者通俗点说就是程序被CPU执行的先后顺序,此值越小进程的优先级别越高那NI呢?就是我们所要说的nice值了,其表示进程可被执行的优先级的修正数值PRI值越小越快被执行,那么加入nice值后,将会使得PRI变为:PRI(new)=PRI(old)+nice这样,当nice值为负值的时候,那么该程序将会优先级值将变小,即其优先级会变高,则其越快被执行所以,调整进程优先级,在Linux下,就是调整进程nice值nice其取值范围是-20至19,一共40个级别,也就是说普通进程的PRI
首先,我们能够得到以下信息:
Linux创建进程的默认优先级是80!通过修改nice值可以修改其优先级!
但是普通进程的优先级的范围只能为60----99!
接下来通过修改实例证明
我首先创建了一个进程mycode,并让他一直处于运行
可以看到,我此时的pid为28924
接下来通过 用top命令更改已存在进程的nice
具体步骤:进入top后按“r”–>输入进程PID–>回车->输入nice值,如下图:
回车
输入pa -al重新查看优先级,此时PRI为90 ,NI为10,此时修改成功
接着我们输入-10
此时报错,显示权限不够,因为我账户现在为普通账户,我需要使用sudo 提升权限!!!
这也侧面说明了权限调低容易,调高难!!!
输入之前的命令后,我们得到下面结果,可以看到PRI不是我们想的那样变为80,而是变成70,这也说明了进程的每次的优先级修改是按照80为基准增加或者减少的
这里我们验证一下修改的范围:
先将nice值修改为100,验证降低范围,再将nice改为-100,验证提升范围,结果如图:
可以看到PRI降低最多到99 , nice值最大为19!!!
可以看到PRI提升最多到60 , nice值最小为-20!!!
至此,验证完毕,接下来总结:
- 1.操作系统在进行调度的时候,为了能使各个进程之间都能得到较为合理的资源分配,需要为各个进程之间设置优先级,以此来保证均衡调度。
- 2.如果取消优先级的范围,会让优先级低的进程一直得不到分配,容易引发进程饥饿问题!!!
- 3. 当然,Linux系统使用了一种 基于时间片轮转的方式 来调度每个进程,当一个进程的时间片耗尽,就会从该运行队列中剥离下来。
额外拓展概念 ,了解即可: