Linux进程的调度优先级数字会在好几个地方出现:内核,用户,top命令。他们各自都有自己的表示法。

我们用一个实际的例子来说明,下面在Linux写一个最简单的程序:

编译它运行,把调度策略设置为SCHED_FIFO,优先级设置为50

$ sudo chrt -f 50 ./a.out

这个时候我们在top命令里面观察a.out:

我们看到a.out的PR(优先级是)-51,CPU利用率100%。

但是从内核的视角上面来看,又会用99减去用户在chrt里面设置的优先级:

上面的MAX_RT_PRIO的值为:

所以上述进程的优先级,在三个不同视角的值分别为:

用户

内核

Top

50

49

-51

咋回事

Linux的RT调度策略和普通进程在调度算法上面有差异,RT的SCHED_FIFO和SCHED_RR采用的是一个bitmap:

每次从第0bit开始往后面搜索第一个有进程ready的bit,然后调度这个优先级上面的进程执行,所以在内核里面,prio数值越小,优先级越高

但是从用户态的API里面,则是数值越大,优先级越高。下面的代码,一个线程通过调用API把自己设置为SCHED_FIFO,优先级50

这个上面的50,对应内核的49。

如果我们把优先级设置为51:

这个51,对应内核bitmap上面的48。

所以,你会发现,从用户的视角来看,数值变大,优先级变高。

上面这2个视角,都不是top命令的视角。对于RT的进程而言,TOP的视角里面的

PR= -1 -用户视角

譬如,下面用户视角的88

$ sudo chrt -f 88 ./a.out

对应内核视角的11,对应top视角的-89

这实在让人有一点晕!!

这里还有一个特例,就是用户视角的99(内核bitmap视角的0),显示为top命令的RT:

这说明一点,只有最高优先级的RT进程,才在top里面显示为rt。

普通的呢?

普通的讲nice的人相对来说比较简单,我们更关注它的nice值,-20~19之间,nice越低,优先级越高,权重越大,在CFS的红黑树左边的机会大。

你发现.nice为5的进程,在top命令显示PR是25。

下面我们看nice是-5的:

它显示的是PR=15。

由此大家可以发现规律,对于普通的采用CFS策略的NORMAL进程,top里面的

PR=20+NICE

在一起

总结一下,4个例子

用户

内核

Top

RT 50

49 (99-50)

-51 (-1-50)

RT 99

0

rt

NICE 5

 

25

NICE -5

 

15

由此发现,在top里面,RT策略的PR都显示为负数;最高优先级的RT,显示为rt。top命令里面也是,数字越小,优先级越高。

--------------------------------------

用户:

实时: 0 -99(越大优先级越高)

normal: nice -20 -- 19(越小优先级越高)

内核(0  -- 139):

实时:100 - 1 - (用户实时优先级 0 -- 99) == 0 -- 99 (越小优先级越高)

normal : 120 + nice(-20 -- 19) == 100 -- 139(越小优先级越高)

top:

实时: -1 -  用户实时优先级 == -100 -- -1 (越小优先级越高)

normal: 20+NICE = 0 -- 30 (越小优先级越高)

关于Linux进程优先级数字混乱的彻底澄清相关推荐

  1. linux shell数字怎么比较大小,Linux Shell 数字计算与比较

    直接上脚本, 使用$(())以及$[]进行数字计算 数值比较: n1 -eq n2检查n1是否等于n2         n1 -le n2检查n1是否小于等于n2 n1 -ge n2检查n1是否大于等 ...

  2. linux权限数字详解

    linux权限数字详解 1.常用linux文件权限: 444 r–r--r– 600 rw------- 644 rw-r–r-- 666 rw-rw-rw- 700 rwx------ 744 rw ...

  3. linux中数字进制转换

    linux中数字进制转换 文章目录 linux中数字进制转换 一.简介 二.简易转换 2.1 各种进制转10进制 2.2 10进制转各种进制 三.通用转换 一.简介 这里介绍linux中,数值各种进制 ...

  4. Linux权限数字:【r:读取权限用4表示、w:写入权限用2表示、x:执行权限用1表示】【7表示rwx、6表示rw-、5表示r-x、4表示r--】

    如果文件具有: r(读取)权限则权限用4表示,反之为0: w(写入)权限用2,反之为0: x(执行)权限用1,反之为0: 如果文件具有相应的权限就把rwx的权限加起来表示,这样: 7表示rwx, 6表 ...

  5. linux文件属性644到755,linux系统文件夹数字权限设置详解644、755、777

    linux系统文件夹数字权限设置详解644.755.777 ,左至右,第一位数字代表文件所有者的权限,第二位数字代表同组用户的权限,第三位数字代表其他用户的权限. 而具体的权限是由数字来表示的,读取的 ...

  6. linux线程优先级和nice值,如何使用nice和renice命令设置Linux进程优先级

    在本文中,我们将简要介绍内核调度程序 (也称为进程调度程序 )和进程优先级 ,这些主题超出了本指南的范围. 然后,我们将深入了解一些Linux进程管理 :了解如何运行具有修改优先级的程序或命令,还可以 ...

  7. linux 进程优先级 调度 nice pri

    转:http://www.linuxidc.com/Linux/2016-05/131244.htm 深入 Linux 的进程优先级 [日期:2016-05-11] 来源:liwei.life  作者 ...

  8. Linux 进程优先级 NICE、PRI

    这里写目录标题 NICE PRI 实时进程与非实时进程 实时进程调度策略 非实时进程调度策略 CFS完全公平调度 NICE nice值应该是熟悉Linux/UNIX的人很了解的概念了,我们都知它是反应 ...

  9. Linux进程优先级的调整

    进程的优先级 1.什么是进程的优先级 Linux是一个多用户.多任务的操作系统,系统中通常运行着非常多的进程.哪些进程先运行,哪些进程后运行,就由进程优先级来控制 思考:什么时候需要用到进程的优先级呢 ...

  10. Linux进程优先级的处理--Linux进程的管理与调度(二十二)

    日期 内核版本 架构 作者 GitHub CSDN 2016-06-14 Linux-4.6 X86 & arm gatieme LinuxDeviceDrivers Linux进程管理与调度 ...

最新文章

  1. [数据结构复习]树_二叉树
  2. CPU使用百分比测量
  3. LNMP架构环境搭建之mysql源码编译安装
  4. ASP.NET Web API之消息[拦截]处理(转)
  5. Android开发:1-3、Android常用布局
  6. python 重复执行任务_使用Python自动执行数字艺术家的重复任务
  7. 互联网公司2014前端笔试面试题:HTML/CSS篇
  8. mysql5.7优化案例_MYSQL5.7函数索引优化案例【企业数据库实战优化项目】
  9. vi单文件操作常用命令
  10. php开启ziparchive类,php压缩解压文件ZipArchive类的方法使用教程
  11. win10 软路由_锐龙 软路由+NAS+HTPC三合一(上)
  12. reactjs setState的两种写法
  13. 婴儿大脑MRI图谱集
  14. 怎样把ppt转换成html,如何将PPT文档转换成Flash/HTML的方法
  15. 19.通证的分类(各种分类一览表)
  16. 自签名SSL证书有风险吗?
  17. Github使用秘籍
  18. tikz绘图学习(长期更新)
  19. 基于51单片机的光照强度检测c语言程序,基于51单片机光照强度检测报告.doc
  20. windows开机自动进bios 常见的问题

热门文章

  1. 纯CSS实现的风车转动效果特效演示
  2. error: not found: value sc
  3. Seek and Destroy
  4. BZOJ4060 : [Cerc2012]Word equations
  5. 如何用bat批处理编译swf项目
  6. 我们是这样写升级日志的,处处可以体现人文情怀
  7. IOS中常见UI细节和常识
  8. Kafka 设计与原理详解(二)
  9. linux下批量查找UTF-8的BOM文件,并去除BOM
  10. 一个简单的基于postfix+extmail+mysql的邮件系统