前言

最近研发的产品出了点小bug,最后查到根本原因是,其中一个进程A使用基于FIFO的实时进程优先级,而另一个进程B是使用普通调度的进程优先级,而A和B两个进程是互相通信的,进程B会被饿死,而进程A也不能正常工作。分析问题过程中查找了一些资料,以下记录一些特别注意的点。

Linux进程调度的三种策略

(1)SCHED_OTHER,分时调度策略

(2)SCHED_FIFO,实时调度策略,先到先服务

(3)SCHED_RR,实时调度策略,时间片轮转

由于相关内容比较多,本人也末必比别人讲得更清楚,关于进程调度更详细的内容建议读《深入理解Linux内核》,网上的很多内容都是从此而来,也不一定比这本书讲得好。另可参考此链接

https://blog.csdn.net/maximuszhou/article/details/42042161

前面遇到bug的进程A就是使用SCHED_FIFO调度策略的,而进程B没有经过设置,默认是SCHED_OTHER。

如何设置为实时进程

查找资料的时候发现有个链接问,为什么设置FIFO策略,但和预想的不一致。链接在此 http://ask.csdn.net/questions/254095

从代码看是因为设置的方法不对,直接上代码,可以设置进程和线程的调度策略

1 #include

2 #include

3 #include

4 #include

5

6

7 pid_t pid =getpid();8 structsched_param param;9 param.sched_priority = sched_get_priority_max(SCHED_FIFO); //也可用SCHED_RR

10 sched_setscheduler(pid, SCHED_RR, &param); //设置当前进程

11 pthread_setschedparam(pthread_self(), SCHED_FIFO, &param); //设置当前线程

可以通过top命令查看进程是否成功,如果为"rt"表示是实时进程了。如果不成功,可能是权限问题,需要roo权限。

调整进程优先级

如果不调整调度策略,也可以提升进程优先级,使得进程得到更多的CPU,特别是交互式程序,用户体检更好。代码很简单,只需要调用nice(int n)函数即可。n的有效范围是-20~19,数值越小表示优先级越高。具体内容不在此复制粘贴,还是看《深入理解Linux内核》比较靠谱。

linux如何查看实时优先级,Linux进程优先级系统——设置实时进程优先级相关推荐

  1. Linux命令查看子进程命令,Linux基础命令——查看进程命令

    linux是一个 多进程   多用户的操作系统 ps(显示当前进程的状态) ps -ef  查看当前linux 进程 ps -ef | grep 'mysqld'  过滤mysql的进程 (grep  ...

  2. Linux端口查看及常见Linux端口说明

    Linux端口查看及常见Linux端口说明 现在各行业对服务器安全管理特别严格,不管是内网服务还是公网对外开放端口,都要经过严格的安全扫描. 常见linux服务器端口启用查询命令: 该命令可列出系统正 ...

  3. linux 进程优先级 之设置实时进程 (另一种方式是设置nice值)【转】

    转自:https://www.cnblogs.com/jkred369/p/6731353.html Linux内核的三种调度策略: 1,SCHED_OTHER 分时调度策略, 2,SCHED_FIF ...

  4. linux mysql查看所有表_Linux之系统操作命令

    ------·今天距2020年34天·------ 这是ITester软件测试小栈第84次推文 Linux登录与登出 登录系统 login 登出系统 logout 注销当前用户 exit 清屏命令 c ...

  5. linux命令查看cpu序列号,Linux下用命令查看CPU ID以及厂家等信息

    Linux下用命令查看CPU ID // 获得CPU ID dmidecode -t 4 | grep ID |sort -u |awk -F': ' '{print $2}' // 获得磁盘ID f ...

  6. linux ps查看完整时间,Linux ps 命令查看进程启动及运行时间

    引言 同事问我怎样看一个进程的启动时间和运行时间,我第一反应当然是说用 ps 命令啦. ps aux或ps -ef不就可以看时间吗? ps aux选项及输出说明 我们来重新复习下ps aux的选项,这 ...

  7. linux下查看bios命令,Linux/centos/ubuntu下查看主板BIOS信息

    第一步.要安装dmidecode这个包才能查询主板信息.Centos如下: [root@localhost ~]# yum install dmidecode Loaded plugins: fast ...

  8. linux命令查看内存数据,Linux 查看内存条数据和大小命令

    查看内存条数据和大小命令: sudo dmidecode | grep -A16 "Memory Device$" 需要root 权限.. [life@localhost mp3b ...

  9. linux 一直查看当前时间,Linux 查看当前时间

    一.查看和修改Linux的时区 1. 查看当前时区 命令 : "date -R" 2. 修改设置Linux服务器时区 方法 A 命令 : "tzselect" ...

最新文章

  1. live联系人导出到CSV乱码
  2. undo表空间文件丢失恢复(3)--无备份无redo的情况下恢复
  3. QT的QMultiSampleAntiAliasing类的使用
  4. linux /dev
  5. Matplotlib 中文用户指南 7.1 交互式导航
  6. 荣耀折叠屏手机发布日期曝光?将主打年轻用户
  7. 【Java】用随机数打印hello world
  8. 美国联邦政府2020财年网络安全预算分析:174亿美元如何分配?
  9. 李沐 动手学深度学习 第二版
  10. EMNLP-21-Exploring Task Difficulty for Few-Shot Relation Extraction
  11. python正弦函数_Python之正弦曲线实现方法分析
  12. conda 设置清华镜像源_conda使用清华镜像源问题
  13. 那个单位用计算机系统冷却,消防知识100题
  14. 计算机视觉最新进展概览2021年10月31日到2021年11月6日
  15. Linux-CentOS 安装yasm
  16. 【Day2.2】茶卡盐湖
  17. MyStack<T>
  18. Word 同时设置中文字体和英文字体
  19. 航顺HK HK32F103CBT6 MCU
  20. 钦州学院计算机视频,(钦州学院数学与计算机科学学院.doc

热门文章

  1. zynq的emio和axi_【ZYNQ7000学习之旅 - 01】EMIO练习
  2. 基于参考点的非支配遗传算法-NSGA-III(二)
  3. 花音机器人_【扑杀花音攻略组】超弩级光机器人攻略
  4. MySQL事务隔离级别及场景测试
  5. php 标签页切换,vue.js实现标签页切换效果
  6. 特征编码1 - 特征编码概述与分类
  7. pandas切割字符串并保存为新列
  8. java ipmitool_ipmitool使用手册
  9. java中Jackson_java 中的好东西 jackson
  10. Windows7系统下编译安装X264