首页/系统/Linux 内核与性能调优速查/sched_rt_runtime_us 实时带宽限制
CPU 与调度60 条

sched_rt_runtime_us 实时带宽限制

SCHED_FIFO/SCHED_RR 任务在每个 sched_rt_period_us(默认 1s)内最多可占用的 CPU 时间(默认 950000us,即 95%),防止实时任务饿死普通任务。

实时带宽限制是什么

kernel.sched_rt_runtime_us 与 kernel.sched_rt_period_us 共同构成实时任务的带宽限制:在每个周期(默认 1 秒,即 1000000 微秒)内,实时调度策略的任务最多可以占用 950000 微秒,也就是 95% 的 CPU 时间。这是保护机制,避免一个失控的实时任务把普通任务彻底饿死。把运行时间设为 -1 表示关闭限制,实时任务可以无限占用 CPU。

基本信息

参数kernel.sched_rt_runtime_us 与 kernel.sched_rt_period_us
默认值950000 微秒 / 1000000 微秒,即 95% / 1 秒周期
作用对象SCHED_FIFO 与 SCHED_RR 策略的实时任务
关闭方式把运行时间设为 -1,表示不做限制
相关文件cgroup 中的 CPU 实时带宽控制文件可按分组细化
观测入口/proc/sched_debug 与实时任务的运行表现

典型使用场景

  • 实时应用调优:确保关键任务能在周期内获得足够 CPU 时间
  • 排查实时任务被限流:任务的执行时间出现周期性截断时核对这两个参数
  • 保护系统:防止异常实时任务拖垮整机,保持默认限制是常见做法
  • 隔离核规划:在专用核心上运行实时任务时评估是否放宽限制
  • 容器与分组管理:按分组细化实时带宽,避免影响其他业务

查看与调整

查看与调整
sysctl kernel.sched_rt_period_us kernel.sched_rt_runtime_us   # 读周期与额度
cat /proc/sys/kernel/sched_rt_runtime_us                        # 等价读法
sysctl -w kernel.sched_rt_runtime_us=900000                     # 收紧到 90%
chrt -f 50 /path/to/app                                         # 以实时策略启动进程
chrt -p $$                                                      # 查看当前进程的调度策略

落盘与回读

落盘与回读
# /etc/sysctl.d/99-rt.conf
kernel.sched_rt_period_us = 1000000    # 周期长度,单位微秒
kernel.sched_rt_runtime_us = 950000     # 每周期内实时任务的可用额度
# 回读命令:sysctl kernel.sched_rt_period_us kernel.sched_rt_runtime_us

取值与后果

设置含义风险
默认组合每周期保留 5% 给普通任务实时任务超时会被暂时抑制,属保护行为
收紧额度留给普通任务的比例更大实时任务的时延保障变弱
设为 -1不限制实时任务占用失控任务会造成系统假死,风险最高
按分组限制在容器或分组层面细化配置层级多,需要逐层核对
把运行时间设为 -1 等于允许实时任务无限占用 CPU,一个死循环的实时任务就能让系统失去响应。启用前确保相关任务已经被隔离到专用核心上,并验证过异常情况下的兜底手段。
容器内看到的实时带宽可能还被宿主限制:分组层的配置与全局设置叠加生效。排查时两层的值都要核对,单看一层容易得出错误结论。

易错点

  • 把限制关掉以求实时性:失控任务会导致系统假死,必须配合隔离核与兜底方案
  • 忽略周期与额度是一对参数:只改其中一个会让实际比例偏移预期
  • 容器内改完就认为生效:宿主侧可能还有一层限制,需要两层核对
  • 用实时策略解决普通性能问题:实时策略面向时延确定性,不是提升吞吐的工具
  • 不验证边界行为:额度收紧后实时任务是否仍满足时延要求需要实测确认

数据来源与参考

  • Linux 内核 Documentation/scheduler/sched-rt-group.rst
  • Linux 内核源码 kernel/sched/rt.c
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌