23.4. 配置内核空循环时间


默认情况下,Red Hat Enterprise Linux 使用无空循环内核,它不会中断空闲的 CPU 减少功耗,并允许新处理器利用深度睡眠状态。Red Hat Enterprise Linux 还提供动态无空选项,这对于对延迟敏感的工作负载(如高性能计算或实时计算)非常有用。默认情况下禁用动态无空选项。您可以使用 cpu-partitioning TuneD 配置集为指定为 isolated_cores 的内核启用动态无空选项。

流程

  1. 要在特定内核中启用动态无空行为,在内核命令行中使用 nohz_full 参数指定这些核心。例如,在 16 核系统上启用 nohz_full=1-15 内核选项:

    # grubby --update-kernel=ALL --args="nohz_full=1-15"
    Copy to Clipboard Toggle word wrap

    这可启用内核 1 到 15 的动态无空行为,将所有时间保留到唯一未指定的内核(内核 0)。

  2. 当系统引导时,手动将 rcu 线程移到非延迟敏感的核心中,本例中为 core 0 :

    # for i in pgrep rcu[^c] ; do taskset -pc 0 $i ; done
    Copy to Clipboard Toggle word wrap
  3. 可选:在内核命令行中使用 isolcpus 参数,将特定内核与用户空间任务隔离开来。
  4. 可选:将内核的 write-back bdi-flush 线程的 CPU 关联性设置为 housekeeping 内核:

    echo 1 > /sys/bus/workqueue/devices/writeback/cpumask
    Copy to Clipboard Toggle word wrap

验证

  • 系统重启后,验证是否启用了 dynticks

    # journalctl -xe | grep dynticks
    Mar 15 18:34:54 rhel-server kernel: NO_HZ: Full dynticks CPUs: 1-15.
    Copy to Clipboard Toggle word wrap
  • 验证动态无空配置是否正常工作:

    # perf stat -C 1 -e irq_vectors:local_timer_entry taskset -c 1 sleep 3
    Copy to Clipboard Toggle word wrap

    这个命令会在 CPU 1 上测量升级,同时告诉 CPU 1 休眠 3 秒。默认内核计时器配置在常规 CPU 上显示大约 3100 勾号:

    # perf stat -C 0 -e irq_vectors:local_timer_entry taskset -c 0 sleep 3
    
     Performance counter stats for 'CPU(s) 0':
    
                 3,107      irq_vectors:local_timer_entry
    
      3.001342790 seconds time elapsed
    Copy to Clipboard Toggle word wrap

    配置动态无数内核后,您应该会看到大约 4 个空循环:

    # perf stat -C 1 -e irq_vectors:local_timer_entry taskset -c 1 sleep 3
    
     Performance counter stats for 'CPU(s) 1':
    
                     4      irq_vectors:local_timer_entry
    
           3.001544078 seconds time elapsed
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat