linux 线程优先级设置

2023-11-13

#include <sched.h>     

        pid_t pid = getpid();
      int curschdu = sched_getscheduler(pid);
      if (curschdu < 0)
      {
        printf ("getschedu err %s\n", strerror(errno));
      }
      printf("schedu befor %d\n", curschdu);

      struct sched_param s_param;
      s_param.sched_priority = sched_get_priority_max(SCHED_FIFO);
      printf("schedu max %d min %d\n", 
      sched_get_priority_max(SCHED_FIFO), 
      sched_get_priority_min(SCHED_FIFO));

      int ret = sched_setscheduler(pid, SCHED_FIFO, &s_param);
      if (ret < 0)
      {
        printf("setschedu err %s\n", strerror(errno));
      }

      curschdu = sched_getscheduler(pid);
      printf("schedu after %d\n", curschdu);   

SCHED_FIFO: 先进先出调度在先进先出的调度方式下,一个线程直到它被更高优先级的线程抢占或者运行结束,才会交出控制权。相同优先级的任务不能打断该线程。当线程完成后,内核会去寻找处于就绪状态相同优先级的线程,如果不存在, 则寻找低优先级线程。FIFO调度本身实现了数据的互斥, 在线程运行的时间内其他相同优先级线程无法进行资源抢占。

SCHED_RR: 时间片轮转调度在时间片轮转(RR: RoundRobin)调度下,一个线程放弃内核有三种情况:运行结束,被更高级优先级抢占或者消耗完自己的时间片。时间片是线程运行的最小时间单元,由操作系统预先设定。当时间片用完时,该线程自动交出控制权, 之后内核会按照和FIFO相同的方式搜索下一个工作线程。轮转调度可以防止某一个任务连续占用太多的资源,而导致其他线程信息得不到及时处理。缺点是轮转调度会增大由于任务切换而导致的开销。

SCHED_OTHER: 分时调度,一般采用CFS算法,CFS定义了一种新调度模型,它给cfs_rq(cfs的run queue)中的每一个进程都设置一个虚拟时钟-virtual runtime(vruntime)。如果一个进程得以执行,随着执行时间的不断增长,其vruntime也将不断增大,没有得到执行的进程vruntime将保持不变。
而调度器将会选择最小的vruntime那个进程来执行。这就是所谓的“完全公平”。不同优先级的进程其vruntime增长速度不同,优先级高的进程vruntime增长得慢,所以它可能得到更多的运行机会。
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux 线程优先级设置 的相关文章

  • 在 spring-boot 中设置 base-href 和 context-path - Angular 6 应用程序

    我正在构建一个 Web 应用程序 其中 UI 客户端组件是使用 Angular 6 构建的 后端 服务器端 位于 Spring boot 上 申请预计可在 http localhost 8080 FUtility 我通过在 appmodul
  • 有没有更简单的方法来分割/重建字符串?

    目前我正在使用String split 像这样 String tmp props get i getFullName split String name for int j 1 j lt tmp length j if j gt 1 nam
  • 仅使用公钥在 HD 钱包中生成以太坊地址 (bitcoinj/web3j)

    我尝试为使用 bitcoinj 库实现的 HD 钱包密钥生成以太坊地址 但我感到困惑 DeterministicSeed seed new DeterministicSeed some seed code here null 1409478
  • Java:while循环冻结程序

    我正在制作一个游戏 我需要每 3 秒更新一次 JProgressBar 为此 我使用 while 循环 问题是我的程序由于 while 循环而冻结 我在其他问题中读到它 他们没有帮助我解决这个问题 我不知道如何解决 这是我的代码 publi
  • 从另一个进程捕获 system.out 消息

    我有一个 JVM 1 它启动 JVM 2 我希望能够在 JVM 1 中监视来自 JVM 2 的 System out println 调用 直接的方法是 JVM A 执行系统命令来启动 JVM B 然后 JVM A 读取 B 的所有输出 S
  • 如何将日期字符串解析为Date? [复制]

    这个问题在这里已经有答案了 如何将下面的日期字符串解析为Date object String target Thu Sep 28 20 29 30 JST 2000 DateFormat df new SimpleDateFormat E
  • 合并和颜色样式不适用于 Apache POI excel 2003 格式

    在 Apache POI 中 我为某些单元格应用了一些样式并合并了这些单元格 当我在 2010 年或 2007 年打开时 它工作正常 但在 2003 年 格式样式消失了 每次保存 2003 Excel 文件之前都会弹出兼容性检查对话框 请参
  • 我可以使用 Selenium Webdriver 测试元素的顺序吗?

    有一个表单 其中有 3 个字段 具有 3 个不同的 ID fieldset div div fieldset
  • java.lang.ClassNotFoundException: org.jboss.logging.Logger

    我有一个奇怪的问题 我有一个JMS https en wiktionary org wiki JMS客户端应用程序和MDB https en wikipedia org wiki Enterprise JavaBeans Message d
  • 自 JRE 1.7.0_25 起,Batik 无法进行转换

    自从我更新到 JAVA 1 7 0 25 以来 蜡染在应用转换时会抛出异常 堆栈跟踪是 java awt image ImagingOpException Unable to transform src image at java awt
  • Java 声音可视化器

    我正在尝试制作一个java声音可视化工具 但我完全不知道如何在实时处理音频后立即从提取的音频中获取字节 我可以将程序与 wav 文件同步 但这不是我想要做的 我想用程序生成声音 然后播放它 而不将其保存在任何地方 谢谢您的帮助 本文可以帮助
  • 用于 Eclipse 的 Resharper [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 为什么replaceAll在这行代码中不起作用? [复制]

    这个问题在这里已经有答案了 String weatherLocation weatherLoc 1 toString weatherLocation replaceAll how weatherLocation replaceAll wea
  • gwt 文本框添加更改处理程序

    我有一个从设计师那里收到的文本框 但是我在 GWT 中编写了操作 问题是文本框为空 但是当通过按下按钮用值填充文本框时 将显示警报框 通知值已更改 但没有成功 帮助我 TextBox zip1 null function onModuleL
  • 带等待/通知的同步块与不带等待/通知的同步块之间的区别?

    如果我只是使用synchronized 不是wait notify方法 它仍然是线程安全的吗 有什么不同 Using synchronized使方法 块一次只能由一个线程访问 所以 是的 它是线程安全的 这两个概念是结合在一起的 而不是相互
  • 短 2 个字节

    我正在从串行端口读取一个长度为 133 字节的数据包 最后 2 个字节包含 CRC 值 我使用 Java 将 2 个字节值制成单个 我认为很短 这就是我所做的 short high 48 0x00ff short low 80 short
  • Web 服务客户端的 AXIS 与 JAX-WS

    我决定用Java 实现Web 服务客户端 我已经在 Eclipse 中生成了 Axis 客户端 并使用 wsimport 生成了 JAS WS 客户端 两种解决方案都有效 现在我必须选择一种来继续 在选择其中之一之前我应该 考虑什么 JAX
  • Eclipse 如何创建一个未解决编译问题的类?

    当我尝试使用 javac 编译此类时 出现编译错误并且未创建 Test class public class Test public static void main String args int x 1L lt this cannot
  • Android - 从渲染线程内结束活动

    下午好 我不熟悉 android 中的活动生命周期 并且一直在尽可能地阅读 但我不知道如何以良好的方式解决以下问题 我有一个使用 GLSurfaceView 的活动来在屏幕上绘制各种内容 在这个 GLSurfaceView 的渲染线程中 我
  • Java有没有类似微软CHESS的工具?

    是否有类似于 Microsoft 的现有 Java 工具CHESS http research microsoft com chess 或者 CHESS 源代码是否开放 以便我可以尝试将其转换为 Java 谷歌的织线工 http code

随机推荐

  • java Swing 时间选择器控件

    效果图 简要说明 一个视图类 HongYeLingGuDate 一个抽象接口 SelectHYDateAbstract 需要导入的jar包 http download csdn net detail male09 9884835 中的 fl
  • keil5报错:* RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT; USED: 08B5H BYTE (108%) *保姆级教程

    项目场景 keil uVsion5的编译的时代码的字节过大出现 问题描述 RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT 原因分析 原因就是你的keil为2048字节代码限制的版本 而你
  • docker从入门到实践

    本文的主要目的是帮助零基础的读者快速上手docker 并掌握一些相关的常见命令 同时 本文也是作者对学习docker的一个笔记记录 本文主要是从实例出发 讲解一些docker的基本操作 若有不妥或错误之处 烦请指出 不胜感激 PS 关于do
  • [机器学习与scikit-learn-27]:算法-回归-多元线性回归的几何原理、线性代数原理、本质(去掉激活函数的神经元)

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 123540305 目录 第1章 回归概
  • 虚拟显示器

    这个虚拟显示器只有驱动程序 没有直接双击就能安装的安装包 所以安装起来相对麻烦一点 不过这也是我找到的唯一的 免费 纯软件实现的方案了 原文链接 英文 https www amyuni com forum viewtopic php t 3
  • STM32最小系统|CSDN创作打卡

    文章目录 STM32最小系统的构成 晶振电路 复位电路 电源电路 下载电路 STM32最小系统的构成 晶振电路 晶振在起振的一瞬间会产生电感 为了消除这些电感干扰 会 在晶振的两端接入无极性电容 10 33pf 这里不推荐使用内部时钟源 R
  • idea不显示 target文件夹的解决方式

    第一种 比较简单的解决方式 但是可能适用面比较小 解决方式如下所示 第二种 稍微麻烦一点 如下图所示 点击 file gt 搜索框内输入 File Types 进入到图中所示的界面 把里面的 target删除掉就可以了 重启一下idea 如
  • 从0开始的leetCode: Add Two Number

    我的解法是 class Solution public ListNode addTwoNumbers ListNode l1 ListNode l2 int i 0 ListNode pre l1 while l1 null l1 val
  • DEBUG

    UnicodeDecodeError utf 8 codec can t decode byte 0x80 in position 3131 invalid start byte解决办法 阿里drl binpacking使用TensorFl
  • paddlenlp调用ERNIE、使用ERNIEKIT

    目录 paddle调用ERNIE 安装paddle和paddlenlp 下载 加载ERNIE预训练模型 tokenizer 获取文本语义特征向量表示 ERNIEKIT实践 安装 配置nltk 下载ERNIEKIT源码 运行ERNIEKIT
  • C#的基础语法---15种基本数据类型

    1 c 的基本单元是class class 类 即指同一类对象的抽象化概念 类里面的所有东西叫做类成员 属性 方法 事件 2 属性类型 C 中的数据类型一共15种 整数型 8种 位 代表整数的取值范围 2的位数次方 求出来 1就是最大值 符
  • 深入浅出讲解IDS(入侵检测系统)

    一 什么是IDS IDS是英文 intrusion Detection Systems 的缩写 中文意思是 入侵检测系统 入侵检测系统 是一种对网络传输进行即时监视 在发现可疑传输时发出警报或者采取主动反应措施的网络安全设备 专业上来讲 I
  • 我的创作纪念日-学习不止,笃行不怠

    机缘 平时的学习都会看很多视频教程 有一些会带ppt或者文稿 很多都没有 基本上都是猴子搬玉米 边学边忘 缺乏总结 就想尝试在CSDN上边学边记录 做总结 效果不错 在 CSDN 上学习并记录总结的具体方法如下 注册 CSDN 账号并登录
  • wsl2 安装ubuntu已经开启vt(虚拟化)仍然报错0x80370102

    一条命令 Enable WindowsOptionalFeature Online FeatureName VirtualMachinePlatform
  • 丰田一页纸极简思考法excel1+logic3

    公司书柜中无意get到的 因为当时对 思维 比较感兴趣 然后这本本图表内容多 书薄字少 就想着借出来看了 中午饭空的时间用了大概一个小时的样子 可以读一大半 废话了这么多 分享下这本书的内容吧 在丰田公司 有一个不成文的要求 不论是会议纪要
  • C语言中setjmp和longjmp函数

    C语言中setjmp和longjmp函数 setjmp和longjmp是C语言独有的 只有将它们结合起来使用 才能达到程序控制流有效转移的目的 按照程序员的预先设计的意图 去实现对程序中可能出现的异常进行集中处理 先来看一下这两个函数的定义
  • truncate mysql批量删除表的数据

    模板拼接执行语句 SELECT CONCAT truncate TABLE table schema TABLE NAME FROM INFORMATION SCHEMA TABLES WHERE table schema IN db na
  • 一文读懂如何配置Linux权限

    配置 var tmp fstab权限 Linux中权限是指控制用户或进程对文件或目录的访问 修改或执行的权限 Linux中有3种权限 读取权限 read 写入权限 write 执行权限 execute 权限是用数字表示的 有三位 每一位表示
  • Unity 控制摄像机镜头的上下左右移动

    private float FollowPosx FollowPosy private float moveAmount 5 控制镜头的移动速度 Update is called once per frame void Update if
  • linux 线程优先级设置

    include