第 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命令。