【linux】进程优先级

目录

一、基本概念

二、查看进程优先级

三、nice值和进程优先级的修改

1.操作步骤

2.不可频繁修改进程优先级

四、进程优先级的变化范围

结论


一、基本概念

1.进程优先级是CPU资源分配的先后顺序,就是指进程的优先权,与权限不同的是,相比于权限的能不能,这些进程已经确定能够得到CPU的资源分配了,只不过是先后的问题罢了。

2.优先级高的进程有优先执行权利,配置进程优先权对多任务环境的Linux很有用,可以改善系统性能。

3.还可以把进程运行到指定的CPU上,这样一来,把不重要的进程安排到某个CPU,可以大大改善系统整体性能。

为什么要有进程的优先级呢?因为资源有限,要分配资源,就得设置优先级,决定进程获得某种资源的先后顺序。

二、查看进程优先级

先写一个打印hello world的死循环,方便查看进程优先级,执行后我们可以用ps -l来查看进程的优先级,但是这个指令只能查看bash进程的优先级,要想查看我们运行的进程的优先级需要用指令ps -al,如下:

接下来一一介绍如上图的优先级核心相关参数的意义

1.UID:代表执行者的身份,可以根据这个精准查到对进程优先级操作的人。

2.PID:进程的代号

3.PPID:进程的父进程代号

4.PRI:进程可被执行的优先级,其值越小越早被执行。

5.NI:代表这个进程的nice值,可用于修改进程的优先级。

三、nice值和进程优先级的修改

nice值是进程优先级的修正值,PRI表示进程优先级,修改进程优先级的计算方式为PRI(new) = PRI(old)+ nice,nice值默认为0,PRI(old)默认为80,属于定值,并非是上一次的PRI值,而是一直不变的定值,最后显示出来的PRI是计算得出的PRI(new)结果。

1.操作步骤

因此我们要修改进程的优先级就必须要修改nice值,要修改nice值,就需要以下几个步骤:

1.输入top指令

2.按下键盘'r'

3.输入进程PID

4.输入要修改成的nice值

最后回车即可,我们按q退出再来查看一下进程的优先级变化:

很显然,在原定值优先级为80的情况下加入值为10的NI(nice值),最后得到的进程优先级为90。

2.不可频繁修改进程优先级

在承接上一次的nice值修改之后,我用同样的步骤要将nice值修改为-10,也就是改回来,发现失败了,如下:

如果要强行修改,需要sudo提升权限,因此得出结论,进程优先级不可频繁修改,这是系统的自我保护,频繁修改nice值会导致CPU调度频繁切换,打破原有的调度平衡,增加系统开销,反而降低整体效率。

四、进程优先级的变化范围

刚才我们尝试修改进程优先级的时候,也只是把nice值修改为10或者-10,那如果我们把它修改得更大会怎么样呢?

此时我将nice值修改为100,我们来看看进程的优先级是不是变成了180:

发现了NI竟然在19就封顶了不能再大了!!!这是巧合吗?我们再试试看将nice值修改为-100(这里注意一点,普通用户修改nice值不能修改为负数,想要实验负数的范围,就必须要用sudo提升用户权限,即sudo top指令回车进入)

那么我们来把nice值修改为-100试试看:

这里发现NI最小也只能到-20,于是我们得出以下结论:

NI(nice值)的修改范围:【-20,19】

PRI(进程优先级)的范围:【60,99】

结论

进程优先级的变化范围只有40个梯度,是有限的,它强制我们更改优先级就不能改的太狠了,我们生活中遇到的操作系统基本上是属于分时操作系统,即多个进程轮流占用资源,实现并发的操作系统,有限的优先级变化范围,这样的调度策略,给进程分配时间片,相对公平公正,能够较为均衡地让不同的进程都能在一段时间内,能够得到CPU资源,同时满足人与互联网的需求。

相关推荐
大树883 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush43 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5204 小时前
Linux 11 动态监控指令top
linux
小宇宙Zz4 小时前
Maven依赖冲突
java·服务器·maven
Inhand陈工4 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智5 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
不会C语言的男孩5 小时前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
shushangyun_5 小时前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化