首页 > 系统相关 >进程的优先级、NI、%ni

进程的优先级、NI、%ni

时间:2024-04-30 15:22:08浏览次数:27  
标签:NI 优先级 ni PRI 进程 NICE CPU nice

PRI:进程优先权,代表这个进程可被执行的优先级,值越小,优先级越高,越早被执行。
NI:进程NICE值,代表这个进程的优先值。
%nice:改变过优先级的进程的占用CPU的百分比。

man top 的解释:
time running niced user processes

PRI是比较好理解的,即进程的优先级,通俗地说是程序被CPU执行的先后顺序,此值越小进程的优先级别越高。
NI是我们的NICE值,表示进程可被执行的优先级修正数值。
PRI值越小越快被执行,加入NICE之后,PRI(new)=PRI(old)+nice。
由此看出,PR是根据NICE排序的,规则是NICE越小PR越前(小,优先权更大),即优先级会变高,则其越快被执行。如果NICE相同则进程uid是root的优先权更大。

在Linux系统中,nice范围从-20到+19,正值表示低优先级,负值表示高优先级,值为零表示不会调整该进程的优先级,具有最高优先级的程序,其nice值越低,
所以在Linux系统中,值-20使得一项任务变得非常重要;与之相反,如果任务的nice为+19,则表示它是一个高尚的、无私的任务,允许所有其他任务比自己
享有宝贵的CPU 时间的更大使用份额,这也是nice名称的来意。

进程在创建时被赋予不同的优先级值,如前面所说,nice的值表示进程优先级被修正数据值,因此,每个进程都在其计划执行时被赋予了一个nice值,这样系统就
可以根据系统的资源以及具体进程的各类资源消耗情况,主动干预进程的优先级值。在通常情况下,子进程会继承父进程的nice值,比如在系统启动过程中,init
会被赋予0,其他所有进程继承了这个nice值(因为其他进程都是init的子进程)。

对nice值一个形象比喻,假设在一个CPU轮转中,有2个runnable进程A和B,如果他们的nice值都为0,假设内核会给他们每人分配1k个CPU时间片。但是假设进程A的为0,B的
值为-10,那么此时CPU可能分别给A和B分配1k和1.5k的时间片。故可以形象地理解为,nice的值影响了内核分配给进程的cpu时间的多少,时间片越多的进程,其优先级越高,
其优先级值(PRI)越低。%nice,就是改变过优先级的进程的占用CPU的百分比,如上例中就是0.5k/2.5k=1/5=20%。

由此可见,进程nice和进程优先级不是一个概念,但是进程nice值会影响进程的优先级变化。

进程的nice值是可以被修改的,修改命令分别是nice和renice。
1、nice命令就是设置一个要执行command进程的nice值,其命令格式是 nice –n adjustment command command_option,如果这里不指定adjustment,则默认为10。
2、renice命令就是设置一个已经在运行的进程的nice值,假设一运行进程本来nice值为0,renice为3后,则这个运行进程的nice值就为3了。
说明:如果用户设置的nice值超过了nice边界值(-20到+19),系统就取nice的边界值作为进程的nice值。

对于非root用户,只将其底下的进程nice值变大而不能变小。如果想变小,得要有相应的权限。
对于root用户,可以给进程赋予更小的nice值。

同样,renice的执行也必须要有相应的权限方可执行。

调整进程的NICE(NI)值可以对进程的优先级进行控制,从而影响操作系统在分配CPU时间片时的决策。通过增加或减少Nice值,可以调整进程的优先级,使其在竞争CPU资源时获得
更多或更少的时间片。
具体来说,降低Nice值会增加进程的优先级,使其更有可能获得CPU时间片,这对于需要更及时响应的任务非常有用。而增加Nice值会降低进程的优先级,这对于需要在后台运行的
任务或者对系统影响较小的任务是有益的,因为他们不会过度竞争CPU资源。

总的来说,通过调整Nice值,系统管理员可以在系统负载高时合理分配CPU资源,以确保重要任务得到优先处理,同时保证其它任务也能够得到足够的执行时间。

标签:NI,优先级,ni,PRI,进程,NICE,CPU,nice
From: https://www.cnblogs.com/lixiaomeng/p/18168075

相关文章

  • Unity游戏框架设计之场景管理器
    Unity游戏框架设计之场景管理器简单介绍在游戏开发过程中,我们经常对Scene进行切换。为了不使场景切换时造成的游戏卡顿,可以Unity官方API利用协程的方式异步加载场景。同时,为提升Scene切换的玩家体验,我们经常会在场景切换的开始,先显示过渡UI,然后才对目标场景进行加载......
  • 当前上下文中不存在名称“InitializeComponent”
    使用VS(VisualStudio)编写C#.NET的WPF、Winform程序时,经常会遇到“当前上下文不存在initializecomponent”的提示,网上有很多种可能,我遇到的是如下解决办法( 怀疑是批量替换文件,或者修改文件名导致。):点击项目,删除如下内容: 或者注释掉:......
  • Go语言系列——自定义错误、panic和recover、函数是一等公民(头等函数)、反射、读取文件
    文章目录31-自定义错误使用New函数创建自定义错误使用Errorf给错误添加更多信息使用结构体类型和字段提供错误的更多信息使用结构体类型的方法来提供错误的更多信息32-panic和recover什么是panic?什么时候应该使用panic?panic示例发生panic时的deferrecoverpanic,re......
  • JavaScript运算符及优先级全攻略,点击立刻升级你的编程水平!
    在编程的世界里,运算符是构建逻辑、实现功能的重要工具。它能帮助我们完成各种复杂的计算和操作。今天,我们就来深入探索JavaScript中运算符的奥秘,掌握它们的种类和优先级,让你的代码更加高效、简洁!一、什么是运算符运算符,顾名思义,就是用于执行特定操作的符号。在JavaScript中,运......
  • Reflexion: Language Agents with Verbal Reinforcement Learning
    发表时间:2023(NeurIPS2023)文章要点:文章提出Reflexion框架,通过交互的方式获得反馈,并变成细致的语言feedback的形式作为下一轮的prompt,以此强化languageagents的能力,同时避免了更新大模型的参数。这样的好处有1)轻量,不需要finetuneLLM,2)feedback相比一个reward信号更加细致,3)充分......
  • uniapp将图片base64绘制到画布中
     html<viewclass="content"><canvascanvas-id="myCanvas"style="width:300px;height:300px;"></canvas></view> js//获取图片的完整base64this.qrurl=res.data......
  • selenium 未即时关闭引起的内存泄漏 差点死机
    seleniumwebdriverfirefox测试自动登录获取token,测试可以达到目的。然后日常摸鱼后发现浏览器快卡死了,切tty看top,任务没跑多少,内存倒是快榨干了,这不合理,也没有跑什么大内存程序,先把bt、sync给kill了,内存情况也没有太好转,于是看下内存占用,然后找内存占用高的进程,把这些占用高......
  • 使用DiskGenius工具来实现物理机迁移虚拟机,实现虚拟化
    背景介绍:在实习的过程中,公司需要将一台装有win7的mac笔记本电脑迁移到戴尔G15上,提出的方案是将此笔记本的win7系统虚拟化,在戴尔G15的VmWare虚拟机上运行。作为公司的技术实习生,研究了两天最后决定使用DiskGenius工具来进行操作。在最一开始,公司的技术发了一个名为Veritas™Syst......
  • Unity游戏框架设计之任务管理器
    Unity游戏框架设计之任务管理器简单介绍在游戏开发中,我们可能会遇到下述需求。当角色的生命值减少时,我们需要让角色播放受伤动画,让系统播放角色受伤音效,将当前的新的生命值更新到UI上等等操作。如果在角色的代码中直接实现上述的操作,则将导致代码的高度耦合,不利于后期的维护和......
  • Linux 初始化 init 系统
    目录Linux操作系统的启动流程:BIOS(或UEFI)启动:当计算机加电时,BIOS(基本输入输出系统)或更现代的UEFI(统一可扩展固件接口)会执行一系列的自检(POST,Power-OnSelfTest),以确保硬件正常工作。随后,BIOS/UEFI会根据用户设置的启动顺序来定位并加载引导设备(如硬盘、USB驱动器或网络)上的主......