第 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_FIFOSCHED_RR 任务。

流程

  1. 在使用 podman 的 --cpu-rt-runtime 命令行选项前配置以下全局设置:

    # echo 950000 > /sys/fs/cgroup/cpu,cpuacct/machine.slice/cpu.rt_runtime_us

  2. 对于 CPU 隔离,请使用现有建议为 RT 工作负载设置一组内核。
  3. 使用要使用的隔离 CPU 内核列表运行 podman run --cpuset-cpus
  4. 指定要使用的非一致性内存访问(NUMA)内存节点。

    *podman run --cpuset-mems=number-of-memory-nodes

    这可避免跨 NUMA 节点内存访问。

  5. 要确保在容器启动时设置实际时间工作负载所需的最小内存量,请使用 *podman run --memory-reservation=limit 命令。

其他资源

  • podman-run(1) 手册页