17.2. RHEL for Real Time 内核的显著变化
在 ARM、AMD 和 Intel 64 位构架上启用了动态抢占调度
使用动态调度时,您可以在引导或运行时,而不是在编译时间更改内核的抢占模式。通过动态抢占处理,您可以覆盖默认的抢占模型,以改进调度延迟。
/sys/kernel/debug/sched/preempt
文件包含了支持运行时修改的当前设置。使用 DYNAMIC_PREEMPT
选项,将启动时的 preempt=
变量设为 none
、voluntary
或 full
。voluntary
抢占是默认值。
在 tuna
工具中添加了一个新的命令行界面
tuna
工具现在提供了一个命令行界面,它包括更标准化的命令菜单和更易于使用和维护的选项。新的命令行界面基于 argparse
解析模块。使用这个增强,您可以执行以下任务:
- 更改应用程序和内核线程的属性。
- 根据名称或号对中断请求(IRQ)进行操作。
- 使用进程标识符对任务或线程进行操作。
- 使用 CPU 或套接字号指定 CPU 和 CPU 集。
通过使用 tuna -h
命令,您可以打印命令行参数及其相应的选项。对于每个命令,有一些可选参数,您可以使用 tuna [command] -h
命令查看它们。
为于实时内核提供了运行时验证机制
运行时验证是一种轻量级且严格的方法,来检查系统事件及其正式规范之间的行为等效性。运行时验证有集成在附加到 tracepoints
的内核中的监控。如果状态偏离了定义的规范,则运行时验证程序会激活响应器,以通知或启用诸如在日志文件或系统关闭时捕获事件的响应,以避免在极端情况下故障的传播。
如需更多信息,请参阅 为实时低延迟操作优化 RHEL 9。
CONFIG_RT_GROUP_SCHED
在 RHEL 9 中已禁用
在 RHEL 8 中,默认控制组是 cgroup v1
,您可以使用控制文件(例如 /sys/fs/cgroup/cpu,cpuacct/cpu.rt_period_us
和 /sys/fs/cgroup/cpu,cpuacct/cpu.rt_runtime_us
)在每个 cgroup
基础上为实时任务指定 CPU 带宽。但是,在 RHEL 9 中,CONFIG_RT_GROUP_SCHED
内核配置选项被禁用,因为 cgroup v2
是默认的控制组,而 cgroup v2
CPU 控制器的等效控制文件不存在。请注意,/proc/sys/kernel/sched_rt_runtime_us
和 /proc/sys/kernel/sched_rt_period_us
全局设置仍然可用,您可以通过 stalld
后台进程使用它们,以防止 CPU 时间不足。