第 41 章 为 RHEL 进行实时调优容器
主 RHEL 内核默认启用实时时间组调度功能 CONFIG_RT_GROUP_SCHED
。但是,对于实时内核,此功能会被禁用。
CONFIG_RT_GROUP_SCHED
功能是独立于 kernel-rt
软件包中使用的 PREEMPT_RT
补丁集开发的,旨在针对主 RHEL 内核上的实时进程操作。CONFIG_RT_GROUP_SCHED
功能可能会导致延迟高峰,因此可在 PREEMPT_RT
enabled 内核中禁用。因此,在主 RHEL 内核上运行的容器中运行您的工作负载时,必须将一些实时带宽分配给容器,以便能够在其内部运行 SCHED_FIFO
或 SCHED_RR
任务。
流程
在使用 podman 的
--cpu-rt-runtime
命令行选项前配置以下全局设置:# echo 950000 > /sys/fs/cgroup/cpu,cpuacct/machine.slice/cpu.rt_runtime_us
- 对于 CPU 隔离,请使用现有建议为 RT 工作负载设置一组内核。
-
使用要使用的隔离 CPU 内核列表运行
podman run --cpuset-cpus
。 指定要使用的非一致性内存访问(NUMA)内存节点。
*podman run --cpuset-mems=number-of-memory-nodes
这可避免跨 NUMA 节点内存访问。
-
要确保在容器启动时设置实际时间工作负载所需的最小内存量,请使用
*podman run --memory-reservation=limit
命令。
其他资源
-
podman-run(1)
手册页