【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资源,同时满足人与互联网的需求。

相关推荐
一拳一个娘娘腔1 小时前
从sudo配置到Root Shell:Linux Sudo提权全景深度解析与防御指南
linux·网络·安全
万法若空1 小时前
Cortex-A7的运行模式
linux·arm开发
YJlio1 小时前
用女娲蒸馏 Mark Russinovich 排障思维:打造 Windows 桌面运维专家 Skill
运维·windows·飞书·ai办公·多维表格·飞书v7.63·飞书问卷
yyuuuzz1 小时前
aws注册过程中的常见问题梳理
运维·服务器·网络·云计算·github·aws
德迅云安全-小潘1 小时前
手游架设全攻略:服务器选型、配置与部署一站式指南
运维·服务器
zhangrelay2 小时前
三分钟云课实践速通--C/C++程序设计--
linux·c语言·c++·笔记·学习·ubuntu
Hical_W2 小时前
从 io_context 出发,掌握 C++20 协程式异步 I/O,学会 TCP 服务器、定时器和多线程模型,结合 Hical 框架实战解读
服务器·tcp/ip·开源·c++20
CDN3602 小时前
2026年服务器运维实战:从eBPF内核观测到Serverless边缘计算
运维·服务器·serverless
isyangli_blog2 小时前
7. 使用Mininet 创建回环网络拓扑
服务器·网络·php