开发者

Linux进程优先级解读

目录
  • 1.概念
    • 1.1基本概念
    • 1.2优先级vs权限
    • 1.3为什么要有优先级?
  • 2.查看系统进程
    • 2.1PRI和RI
    • 2.2PRI vs NI
  • 3.修改进程优先级的命令
    • 3.1用top命令更改已存在进程的nice
    • 3.2nice 命令
    • 3.3renice 命令
  • 4.其他概念
    • 5.总结

      1.概念

      1.1基本概念

      cpu资源分配的先后顺序,就是指进程的优先权(priority)。

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

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

       

      Linux进程优先级解读

      Linux中优先级数字越小,优先级越高。

      1.2优先级vs权限

      简单的说优先级和权限的区别:

      • 优先级:已经能了,获取资源的顺序。(排队号)
      • 权限:能不能获取资源。(python准考证)
      对比维度优先级(Priority)权限(Permission)
      定义进程获取 CPU 资源的优先顺序,决定调度优先级规定用户 / 用户组对文件 / 目录的访问、修改、执行权限
      作用对象仅针对运行中的进程(Process)仅针对文件和目录(File/Directory)
      核心目标优化 CPU 资源分配,提升系统响应速度和运行效率保护资源安全,防止未授权访问或操作
      数值 / 标识范围- 静态优先级:nice值(-20~19,值越小优先级越高)

      - 动态优先级:内核根据进程状态动态调整

      - 权限标识:r(读)、w(写)、x(执行)

      - 适用用户:u(所有者)、g(所属组)、o(其他用户)

      常用操作命令- nice:启动进程时设置优先级(如nice -n 5 ./app)

      - renice:调整已有进程优先级(如renice -10 1234)

      - chrt:设置实时进程优先级

      - chmod:修改权限(如chmod 755 file)

      - chown:修改所有者(如chown user:group file)

      - chgrp:修改所属组(如chgrp group file)

      示例场景- 后台备份进程设为低优先级(避免影响前台操作)

      - 实时监控进程设为高优先级(确保及时响应)

      - 系统配置文件仅root可写(rw-r--r--)

      - 脚本文件添加执行权限(chmod +x script.sh)

      与用户身份的关系普通用户只能降低自身进程优先级(或提升至有限范围),root可任意调整权限与用户身份强关联(所有者权限 > 组权限 > 其他用户权限),root拥有权限豁免权

      1.3为什么要有优先级?

      进程访问的资源(尤其是 CPU)始终是有限的,而系统中同时运行的进程往往数量较多,不可避免会出现资源竞争

      操作系统的调度机制虽以 “分时” 为基础,追求基本公平,但若无优先级区分,可能导致关键进程(如实时响应、系统核心任务)被非关键进程挤占资源,出现响应卡顿或延迟 ;同时,若完全 “平均分配” 资源,还可能引发 “饥饿问题”—— 某些进程因长期得不到足够调度而陷入停滞。

      2.查看系统进程

      2.1PRI和RI

      • 老规矩:先写个简单的进程代码: 
      #include <stdio.h>
      #include <sys/types.h>
      #include <unistd.h>
      
      int main()
      {
             	
      	printf("I am a process!  pid=%d\n",getpid());
      
      	return 0;
      
      }
      
      ps -al

      Linux进程优先级解读

      Linux进程优先级解读

        

      PRI代表这个进程可被执行的优先级,其值越小越早被执行
      NI

      进程优先级的修正数据,nice 值,nice其取值范围是-20至19,一共40个级别。

      新的优先级 = 优先级(默认80) + nice,

      这样,当nice值为负值的时候,那么该程序将会优先级值将变小,即其优先级会变高,则其越快被

      执行,所以调整进程优先级,在Linux下,就是调整进程nice值。

      2.2PRI vs NI

      需要强调一点的是,进程的nice值不是进程的优先级,他们不是一个概念,但是进程nice值会影响到进程的优先级变化。

      可以理解nice值是进程优先级的修正修正数据

      3.修改进程优先级的命令

      3.1用top命令更改已存在进程http://www.devze.com的nice

      • 输入top
      • 进入top后按“r”–>输入进程PID–>输入nice

      Linux进程优先级解读

      Linux进程优先级解读

      Linux进程优先级解读

      PRI 为99=进程默认值80 +nice值19 ,之前介绍 nice其取值范围是-2019,即使我们输入了100,nice值还是19,是为了防止调度出现问题,把优先级控制在可控范围内。

      • 再次修改nice值会失败,进程优先级不能经常修改

      Linux进程优先级解读

      • 可以使用root修改 

      Linux进程优先级解读

      • 我们

      Linux进程优先级解读

      结果变成了70,说明进程优先级是= 进程默认值+nice值 

      3.2nice 命令

      nice 命令用于在启动进程时设置其优先级。其原理是通过指定nice值(也叫NI值)来编程调整进程的基本优先级(PRI) ,新的优先级计算公式为:新的优先级 = 基本优先级 + nice 值

      nice值的范围是 - 20 到 19,数值越小,进程的优先级越高,也就意味着该进程在争夺 CPU 资源时更具优势,能获得更多的 CPU 时间片。但普通用户只能设置 nice 值为 0 到 19,只有 root 用户可以设置为 - 20 到 19 的任意值。

      • 语法格式
      nice [ -n <nice值> ] <命令> [<命令参数>]
      • 示例:
      sudo nice -n -10 ./myprocess

      Linux进程优先级解读

      3.3renice 命令

      renice命令用于修改已经在运行中的进程的优先级。在系统运行过程中,你可能发现某个进程占用资源过多影响了其他关键进程,或者某个后台进程优先级太低执行过慢,这时就可以使用 renice 来动态调整其www.devze.com优先级。

      • 语法格式: 
      renice [ -n <nice值> ] <进程PID>
      # 对指定用户启动的所有进程调整优先级
      renice [ -n <nice值> ] -u <用户名>
      • 示例: 
      renice 10 2873999

      Linux进程优先级解读

      4.其他概念

      术语含义说明
      竞争性系统进程数目众多,而 CPU 资源有限(甚至仅有 1 个),因此进程之间存在资源竞争。为实现高效任务处理和合理资源竞争,引入了优先级机制。
      独立性多进程运行时需独享各类资源,进程间运行过程互不干扰。
      并行多个进程在多个 CPU 上分别同时运行,称为并行。
      并发多个进程在单个 CPU 上通过进程切换的方式,在一段时间内使多个进程均得以推进,称为并发。

      5.总结

      Linux进程优先级解读

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

      0

      上一篇:

      下一篇:

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      最新运维

      运维排行榜