千家信息网

Linux内核实时系统有哪些知识点

发表于:2024-11-27 作者:千家信息网编辑
千家信息网最后更新 2024年11月27日,这篇文章主要介绍"Linux内核实时系统有哪些知识点",在日常操作中,相信很多人在Linux内核实时系统有哪些知识点问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Lin
千家信息网最后更新 2024年11月27日Linux内核实时系统有哪些知识点

这篇文章主要介绍"Linux内核实时系统有哪些知识点",在日常操作中,相信很多人在Linux内核实时系统有哪些知识点问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Linux内核实时系统有哪些知识点"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

背景知识

Linux的调度策略包括SCHED_FIFO and SCHED_RR 和SCHED_OTHER

  • SCHED_FIFO(Round-robin线程调度策略)和SCHED_RR是"实时"策略。实现POSIX标准规定的固定优先级实时调度(fixed-priority real-time scheduling)。按照这些策略的任务会抢占其他所有任务。因为是抢占,如果它们不释放CPU,所以很容易使得某些低级别的任务得不到执行。

  • SCHED_FIFOSCHED_RR 之间的区别在于:在相同优先级的任务中,SCHED_RR 执行 round-robin 分配,每个任务都得到相同的cpu时间片策略。而SCHED_FIFO需要任务主动放弃cpu时间片。

  • SCHED_OTHER是常见的循环式分时调度策略,该调度策略根据系统中运行的其他任务为某个时间的调度任务。

SCHED_RR和SCHED_FIFO的问题:

红帽企业版Linux实时版中的两种实时调度策略具有一个主要特征:直到被更高优先级的线程抢占或直到它们"等待"(sleep/休眠或执行I/O)线程会一直运行。如果是SCHED_RR,在SCHED_RR优先级相同的线程中,操作系统可能会抢占一个线程,让另一个线程得以执行。

POSIX规范没有规定允许低优先级线程获得任何CPU时间的策略。

实时线程的这种特性意味着编写一个霸占100%的CPU的应用程序非常容易。乍一看,好像榨干了服务器是个不错的想法,但实际上,它引起了操作系统的许多问题。操作系统负责管理系统范围的资源和按CPU的资源,并且必须定期检查描述这些资源的数据结构,并对其执行内部管理活动。如果内核被SCHED_FIFO线程垄断,则它无法执行内务处理任务,最终整个系统将变得不稳定,从而可能导致崩溃。

中断处理程序以具有SCHED_FIFO优先级的线程(默认值:50)运行。具有或策略高于中断处理程序线程的cpuxiao hao x线程可能会阻止中断处理程序运行,并导致程序等待那些由中断发出的数据,从而使该程序饿死并失败。

红帽/CentOS的特殊策略/实时节流机制

在红帽企业版实时系统内核中,有个实时节流机制/SCHED_FIFOSCHED_RR限制实时调度的调度策略(real-time scheduler throttling)。

红帽企业版实时Linux内核带有一种保护机制,该机制使系统管理员可以分配资源配额以供实时任务使用。这个配额机制引入,算是一个保护机制。

这个机制用/proc文件系统中的两个参数控制。

/proc/sys/kernel/sched_rt_period_us定义时间周期,以微秒为单位,相当于100%的CPU资源带宽。默认值为1,000,000μs(1秒)。谨慎更改该时间段,时间段过长或太小都将危险。

/proc/sys/kernel/sched_rt_runtime_us定义所有实时任务可用的总带宽。默认值为950,000μs(0.95 s),即CPU带宽的95%。将该值设置为-1意味着实时任务最多可能占用100%的CPU时间。仅当在特殊场景实时任务经过精心设计并且没有明显的隐患(比如没有无限制的轮询循环)时,才可以这样配置。

对于实时调节机制的默认值定义的CPU时间的95%,意思是95%的cpu时间片可以通过实时任务中使用。剩余的5%将用于非实时任务(在SCHED_OTHER类似的调度策略下运行的任务)。而且需要注意,如果单个实时任务占用了95%的CPU时隙,则该CPU上剩余的实时任务将不会运行。剩下的5%的CPU时间仅由非实时任务使用。

默认值的设置带来两个好处:流氓实时任务不会通过不允许非实时任务运行来锁定系统,另一方面,实时任务最多具有95%的CPU他们的可用时间,可能会最大化效能。

聪明做法RT_RUNTIME_GREED

尽管SCHED_FIFOSCHED_RR/实时节流机制的工作原理是避免实时任务可能导致系统挂起,但是高级用户可能希望在没有非实时任务匮乏的情况下允许实时任务继续运行, 避免系统闲置。

启用后,此功能会在限制实时任务之前检查非实时任务是否饿死。如果实时任务被限制,则在系统空闲时或下一个周期开始时(以先到者为准),它将立即取消限制。

RT_RUNTIME_GREED通过以下命令 启用:

#echo RT_RUNTIME_GREED> /sys/kernel/debug/sched_features

要使所有CPU核都具有相同的rt_runtime,请禁用NO_RT_RUNTIME_SHARE逻辑:

#echo NO_RT_RUNTIME_SHARE> /sys/kernel/debug/sched_features

设置了这两个选项后,用户将保证所有CPU上的非RT任务都有一定的运行时间,同时使实时任务尽可能多地运行。

到此,关于"Linux内核实时系统有哪些知识点"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

实时 任务 系统 时间 策略 线程 调度 运行 机制 内核 知识 优先级 程序 资源 知识点 相同 红帽 处理 学习 限制 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库加密技术国外 长治软件开发培训基地在哪里 浙江hpe服务器云主机 网络安全宣传活动周安排会议 远程管理机房服务器 简述八大网络安全机制 默认数据库model的作用 北京大数据服务器机箱采购 数据库文件无法读取图片 常州市点赞网络技术 服务器拒绝发送您的离线文件 c获取数据库连接 上海电商软件开发服务收费 会网络技术和英语好找工作吗 西海岸新区软件开发公司 orc数据库入门教学 软件开发属于高新吗 小学生安全漫画网络安全电子书 福临药浴系统软件开发 服务器安装网卡驱动失败 软件开发专业贵不贵 家庭教育与网络安全讲了什么 安卓应用软件开发外包 重庆管理系统软件开发平台 不动产登记数据库保密工作 电脑互联网黑科技赚钱吗 武装突袭3如何建立自己的服务器 消防员如何做好网络安全事故 京东数据库的结构 英魂之刃服务器未响应是什么意思
0