一文辨析,性能分析top命令中进程NI和PR

news2024/11/18 23:43:19

分析 Linux 服务器性能,首先想到的命令肯定是 top, 通过它,我们可以看到当前服务器资源使用情况和进程运行资源占用情况。

图片

如果你想学习自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386   

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1.【接口自动化】目前软件测试的市场行情以及测试人员能力标准。、2.【接口自动化】全面熟练Requests库以及底层方法调用逻辑、3.【接口自动化】接口自动化实战及正则和JsonPath提取器的应用等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337.search-card.all.click 

在查看进程资源占用情况时,有两列大家是最难区分,PR(priority)进程优先级和 NI(nice)优先级切换等级,都是优先级,有什么区别呢?

如果,仔细观察,还会发现 PR 列的值是:rt 或大于等于 0 的数字;NI 列的值是:[-20, 19]之间的数字,这些又代表什么意思呢?

因为这些问题搞不清,所以这两列很难理解,下面,我就来给大家说说:

🗝️首先,还是老规矩,在不知道 Linux 命令的结果信息是什么意思的时候,可以查看命令的帮助信息,info top 查看帮助

图片

NI  --  Nice Value
           The  nice  value  of  the  task.   A negative nice value means
           higher priority, whereas a positive  nice  value  means  lower
           priority.   Zero  in this field simply means priority will not
           be adjusted in determining a task's dispatch-ability.
           这项任务的优先价值。负的nice值意味着更高的优先级,而正的nice值意味着更低的优先级。
           该字段中的0表示在确定任务的调度能力时不会调整优先级。

图片

PR  --  Priority 优先事项
           The scheduling priority of the task.  If you see `rt' in  this
           field, it means the task is running under real time scheduling
           priority.

           Under linux, real time priority is somewhat  misleading  since
           traditionally  the  operating itself was not preemptible.  And
           while the 2.6 kernel can be made mostly preemptible, it is not
           always so.
           任务的调度优先级。如果在该字段中看到“rt”,则表示任务正在实时调度优先级下运行。

           在linux下,实时优先级有些误导,因为传统上操作本身是不可抢占的。
     虽然2.6内核基本上是可抢占的,但并不总是如此。

估计看了帮助,还是有些愣,接下来,我们就来讲解一下:

首先,我们看到,任务列表数量很多,一般都超过了 CPU 的数量,超过了 CPU 的数量的进程,都要使用 CPU,就要排队,排队,有 3 种队列:Deadline 最后期限队列 dl_rq,实时任务队列 rt_rq,cfs 公平队列 cfs_rq. 每种队列中排队的任务比较多,事情就会比较复杂,所以需要有默认的、大家都遵循的‘优先级’,和出现紧急情况,能灵活调整的‘调度策略’。

如:在机场、火车站,排队上机(车),大多数人,都在排队,但是,如果有人快要误点了,这个人一般就是可以进入优先队列,被优先调度进入上机区域,这就是最后期限队列 dl_rq;而老、弱、病、残或 VIP 人,他们又会单独一个队列,一般都可以随进随走,快速通过的,这就是实时队列 rt_rq;其他人,没有特殊身份,就只能在一起排队,先后通过,这就是公平队列 cfs_rq,但,cfs_rq 队列实在太长了,总会有个别特殊情况的吧,对于突发情况,总得有个应对策略吧,所以,就有调度策略。

NI 是代表 nice 的意思,是一个进程用户态的一个概念;PR 代表 priority 优先级,是进程的实际优先级,是进程内核态的一个概念。

 一个进程,就好比一个人。人,总是说 琐事缠身,但是,也会有些自己想做主动做的事情。琐事,可能不需要大脑想很多,就是机械的做,这是 NI;而有些事,需要通过自己大脑思考,主动去做,这是 PR。

对于一个普通任务进程来说,PR 的值等于 NI 的值加 20,即:PR=NI+20, 所以,你就会发现,当进程的 NI 为 0,PR 就是 20;NI 为-20,PR 就是 0. 我们平时启动的一个进程,如果没有特意去指定任务优先级的话,默认情况下,都是普通任务进程,NI 的值为 0。

cfs 公平队列 cfs_rq,它的进程都是普通任务进程。

-20 是 NI 的最小值,也就是说,此进程的用户态拥有最高优先级,进程运行,当需要进行用户态和内核态的转换时,这种,就有着最高的优先级,优先被执行调度。

NI 相当于我们日常琐事,-20,说明你有很多事情没有完成,身体非常累,你现在最要紧的是把事情做完,所以,此时是拥有最高优先级的;0,说明你没事可做,做事的优先级就最低。

 进程列表中 NI 值越低,代表:这个进程在系统所有的进程中拥有最高优先级,会优先被调度,但是,并不代表这个进程将会有大量的进程上下文切换。

图片

 在 top 命令中,CPU 使用情况的数据中,也有一个 ni,这个 ni 是:用户进程空间内改变过优先级的进程占用 CPU 百分比。它是系统所有进程发生了用户态到系统态的调度,一个进程的用户态到另一个进程用户态间的调度,他们总的占用 CPU 时间比。

单个进程 NI 值低,拥有高的优先级,但是,如果这个进程被使用的少,它占用 CPU 的调度时间也会少,对 CPU 的 ni 值影响也会就少。所以,请不要把这两个 ni 强行关联。

对于一个实时任务进程来说,PR 内核态优先级为 rt(Realtime),这种任务,在 CPU 中实时执行。

Deadline 最后期限队列 dl_rq,实时任务队列 rt_rq,这两中队列的进程,都是 实时任务进程 

普通任务进程(cfs 公平队列 cfs_rq),它的调度策略有两种:SCHED_NORMAL, SCHED_BATCH

 SCHED_NORMAL:没什么特殊,就是普通任务使用的调度策略,就是进程使用 CPU 的时间,每次都相等

SCHED_BATCH:后台任务调度策略,不与终端交互

实时任务进程(Deadline 最后期限队列 dl_rq,实时任务队列 rt_rq),它的调度策略有三种:

SCHED_DEADLINE,SCHED_FIFO,SCHED_RR

SCHED_DEADLINE:距离当前时间最近的 deadline 任务优先被调度

SCHED_FIFO:相同优先级的任务,先来先执行;优先级更高的任务,可以插队

SCHED_RR:循环执行,每个任务分配相同时间,相同优先级任务,轮流执行,如果没有执行完,就到队列末尾,再分配时间执行,而优先级高的任务,可以插队抢先执行

三种队列,执行顺序是:Deadline 最后期限队列 dl_rq > 实时任务队列 rt_rq > cfs 公平队列 cfs_rq

实时任务进程,总是会比普通任务进程优先被执行

启动一个进程,默认 NI 为 0,是普通任务进程,也可以通过 nice 或 renice 命令,改变进程优先级 

nice --help
Usage: nice [OPTION] [COMMAND [ARG]...]
Run COMMAND with an adjusted niceness, which affects process scheduling.
With no COMMAND, print the current niceness.  Niceness values range from
-20 (most favorable to the process) to 19 (least favorable to the process).

Mandatory arguments to long options are mandatory for short options too.
  -n, --adjustment=N   add integer N to the niceness (default 10)
      --help     display this help and exit
      --version  output version information and exit

NOTE: your shell may have its own version of nice, which usually supersedes
the version described here.  Please refer to your shell's documentation
for details about the options it supports.

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
For complete documentation, run: info coreutils 'nice invocation'

nice -n 优先级整数 进程命令 可以在启动进程时指定进程用户态的优先级 NI

renice --help

Usage:
 renice [-n] <priority> [-p|--pid] <pid>...
 renice [-n] <priority>  -g|--pgrp <pgid>...
 renice [-n] <priority>  -u|--user <user>...

Options:
 -g, --pgrp <id>        interpret argument as process group ID
 -n, --priority <num>   specify the nice increment value
 -p, --pid <id>         interpret argument as process ID (default)
 -u, --user <name|id>   interpret argument as username or user ID
 -h, --help             display help text and exit
 -V, --version          display version information and exit

For more information see renice(1).

注意:nice 的范围是 [-20, 19], 所以在使用这些命令时,优先级整数范围别写错了。

nice 和 renice 命令,可以修改进程的优先级,但是,再怎么改,这个进程还是普通任务进程,如果,你想把一个任务指定为实时任务进程,则使用 chrt 命令

chrt --help
Show or change the real-time scheduling attributes of a process.

Set policy:
 chrt [options] <priority> <command> [<arg>...]
 chrt [options] --pid <priority> <pid>

Get policy:
 chrt [options] -p <pid>

Policy options:策略
 -b, --batch          set policy to SCHED_BATCH
 -d, --deadline       set policy to SCHED_DEADLINE
 -f, --fifo           set policy to SCHED_FIFO
 -i, --idle           set policy to SCHED_IDLE
 -o, --other          set policy to SCHED_OTHER
 -r, --rr             set policy to SCHED_RR (default)

Scheduling options:
 -R, --reset-on-fork       set SCHED_RESET_ON_FORK for FIFO or RR
 -T, --sched-runtime <ns>  runtime parameter for DEADLINE
 -P, --sched-period <ns>   period parameter for DEADLINE
 -D, --sched-deadline <ns> deadline parameter for DEADLINE

Other options:
 -a, --all-tasks      operate on all the tasks (threads) for a given pid
 -m, --max            show min and max valid priorities
 -p, --pid            operate on existing given pid
 -v, --verbose        display status information
 -h, --help     display this help and exit
 -V, --version  output version information and exit

For more details see chrt(1).

hrt -f -p 进程id 修改某个进程为实时任务进程,设置进程的调度策略为 SCHED_FIFO,进程用户态优先级 NI 为某个整数

好了,现在对进程的 NI 和 PR 有没有进一步的认识了呢?希望,学有所获!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/836823.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络安全【黑客】自学

1.什么是网络安全&#xff1f; 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有…

MySql UNION 一行转多列

背景:DataEase饼图有特定格式&#xff0c;并且报表要求全部使用SQL语句获取数据 原先数据格式如下&#xff0c;需要行转换列 转换后结果&#xff1a; 原理 字段1&#xff0c;target作为一个不存在的字段&#xff0c;用于命名。 字段2&#xff0c;count字段是关键&#xff0c;…

Centos更换网卡名称为eth0

Centos更换网卡名称为eth0 已安装好系统后需要修改网卡名称为eth0 编辑配置文件将ens33信息替换为eth0,可在vim命令模式输入%s/ens33/eth0/g替换相关内容 修改内核文件,添加内容:net.ifnames=0 biosdevname=0 [root@nova3 ~]# vim /etc/default/grub 使用命令重新生成g…

高级IO:五种IO模型

五种IO模型 阻塞IO 阻塞IO: 在内核将数据准备好之前, 系统调用会一直等待. 所有的套接字, 默认都是阻塞方式. 非阻塞IO 如果内核还未将数据准备好, 系统调用仍然会直接返回, 并且返回EAGAIN/EWOULDBLOCK错误码. 非阻塞IO往往需要程序员循环的方式反复尝试读写文件描述符, 这…

无人驾驶实战-第六课(动态环境感知与Tracking)

跟踪是在连续帧中根据物体信息关联(确定)同一物体 运动模型(motion model)&#xff1a;根据历史的位置和速度 ( 大小和方向) 建立模型&#xff0c;预测当前帧中物体的大致位置 外观模型(appearance model)&#xff1a;根据历史外观&#xff08;颜色 尺寸 2D/3D框 轮廓等&#…

开发运营监控

DevOps 监控使管理员能够实时了解生产环境中的元素&#xff0c;并有助于确保应用程序平稳运行&#xff0c;同时提供最高的业务价值&#xff0c;对于采用 DevOps 文化和方法的公司来说&#xff0c;这一点至关重要。 什么是开发运营监控 DevOps 通过持续开发、集成、测试、监控…

如何将超大文件传输给别人,超大文件如何传输呢?

我们在日常生活和工作中&#xff0c;经常会遇到需要把超大文件发送给别人的情况。但是&#xff0c;在互联网发展如此迅速的今天&#xff0c;我们还有哪些方法可以快速地传输超大文件呢&#xff1f;超大文件应该怎样传输才能保证效率和安全呢&#xff1f;这些问题一直困扰着我们…

利用PostGIS自带工具导入shp数据

一、shapefile导入PostGIS 1、利用PostGIS自带工具导入 开始程序搜索如下工具 打开工具界面如下图&#xff0c;点击View conncetion details进行数据库连接&#xff0c;点击Add File进行Shapefile所在路径加载&#xff0c;点击Option进行编码设置&#xff0c;设置完成后点击Im…

mac录屏怎么打开?很简单,让我来教你!

mac电脑作为一款广受欢迎的电脑系统&#xff0c;提供了多种方式来满足用户录屏的需求。无论您是要录制教学视频、制作演示文稿&#xff0c;还是记录游戏精彩瞬间&#xff0c;mac电脑都能帮助您实现这些目标。本文将为您介绍两种mac录屏的方法。通过本文的指导&#xff0c;您将能…

8.4一日总结

1.远程仓库的提交方式(免密提交) a.ssh:隧道加密传输协议,一般用来登录远程服务器 b.使用 git clone 仓库名 配置(生成公私钥对) ssh-Keygen [-t rsa -C 邮箱地址] 通过执行上述命令,全程回车,就会在~/.ssh/id_rsa(私钥)和id_rsa.pub(公钥),私钥是必须要保存好的,并不能…

明白均线信号的投资者就知道如何交易

在Forexclub上的交易的投资者&#xff0c;都在使用5、25和50周期的均线来分析收盘价。其中&#xff0c;5周期的均线为红色&#xff0c;25和50周期的均线为黄色。同时使用抛物面SAR指标&#xff0c;保留其默认参数。 开立多头头寸的条件是&#xff1a;5周期的红色均线从下方突破…

身体原来是一份宝贵的“情绪地图”, 疾病都在教导我们如何与世界相处

当我们生病时 很多时候&#xff0c;是一个契机 让我们来倾听自己内心的压抑的真实 聆听身体的声音 身体能够教会我们如何对待情绪 进而教导我们如何与世界相处 -1- 身体上&#xff0c;有你的情绪地图 皮肤是身体的镜子&#xff0c;身体则是心灵的镜子。生病&#xff0c…

亿欧智库:2023中国功效型护肤产品成分解析研究报告(附下载

关于报告的所有内容&#xff0c;公众【营销人星球】获取下载查看 核心观点 消费端&#xff1a;“纯净美妆〞概念火热&#xff0c;消费驱动因素向成分来源硬核转变 新冠疫情过后&#xff0c;消费者对于生活健康&#xff1a;自然&#xff0c;可持续的关注度持续上升。在消费者…

【小吉带你学Git】idea操作(1)_配置环境并进行基本操作

&#x1f38a;专栏【Git】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【Counting Stars 】 欢迎并且感谢大家指出小吉的问题&#x1f970; 文章目录 &#x1f354;环境准备⭐配置Git忽略文件&#x1f384;方法&#x1f33a;创…

【音视频】edge与chrome在性能上的比较

目录 结论先说 实验 结论 实验机器的cpu配置 用EDGE拉九路​编辑 google拉五路就拉不出来了 资源使用情况 edge报错​编辑 结论先说 实验 用chrome先拉九路&#xff0c;再想用edge拉九路&#xff0c;发现拉五路后怎么也拉不出&#xff1b; 后面发现cpu爆满&#xff1b;切…

Intellij IDEA运行报Command line is too long的解决办法

想哭&#xff0c;vue前端运行起来&#xff0c;对应的后端也得起服务。 后端出的这个bug&#xff0c;下面的博客写的第二种方法&#xff0c;完整截图是下面这个。 ​​​​​​​​​​​​​​​​​​​​Intellij IDEA运行报Command line is too long的解决办法 - 知乎 (zh…

中小企业的数字化营销应该如何着手?数字化营销到底要怎么做?

从侠义角度讲&#xff0c;数字化营销就是在数字化的媒体上做营销。传播本质上是一种营销的形式 从广义角度讲&#xff0c;我们不仅可以将营销数字化&#xff0c;也可以数字化很多事物&#xff0c;甚至行业&#xff0c;比如数字化制造业、数字化工厂、数字化商会等等 ​而这个…

致远A8+数据库账密信息泄露

声明 本文仅用于技术交流&#xff0c;请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 文章作者拥有对此文章的修改和解释权。如欲转载或传播此文章&#xff0c…

智慧工地3D可视化大屏数据展示提供实时数据和设备状态信息

智慧工地3D可视化大屏数据展示是一种基于数字化技术和虚拟仿真技术的智能化管理系统&#xff0c;可以为工地管理提供更加直观和高效的支持。以下是智慧工地3D可视化大屏数据展示可以提供的实用功能&#xff1a; 1.实时监测&#xff1a;数字孪生可视化系统可以将传感器数据与虚拟…

字符串的替换(两种方式)

文章目录 前言 一、使用Template模块中的函数template去替换 二、使用正则表达式替换字符串 总结 前言 记录使用正则表达式替换字符串的操作&#xff0c;和使用Template模块中的函数template去替换字符串的操作。 一、使用Template模块中的函数template去替换 注意&#…