首页 > 解决方案 > 如何在 dyntick 模式下卸载 1HZ 滴答?

问题描述

似乎在内核 4.19 和 4.20 中,剩余的 1Hz 滴答声可以卸载到 dyntick 模式下的工作队列。但要做到这一点呢?

我试图通过以下方式实现这一目标:

  1. 设置 CONFIG_NOHZ_FULL=y, CONFIG_RCU_FAST_NO_HZ=y, CONFIG_RCU_NOCB_CPU=y

  2. 设置启动参数:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash isolcpus=nohz,domain,1-3 nohz=on nohz_full=1-3 rcu_nocbs=1-3 intel_pstate=disable irqaffinity=0 nmi_watchdog=0 nosoftlockup

  3. 修改 /sys/devices/virtual/workqueue/cpumask 为 1
  4. systemctl 停止 irqbalance
  5. 在 BIOS 中关闭涡轮模式、P 状态和超线程

但是,在 CPU 1 或 2 上运行任务时,1HZ 滴答声仍然存在。

我还使用https://kernel.googlesource.com/pub/scm/linux/kernel/git/frederic/dynticks-testing/中提供的工具测试了 dyntick 模式。它输出了很多:

tick_stop: success=0 dependency=SCHED.

卸载 1 HZ 滴答声我错过了什么?

标签: linuxkernel

解决方案


推荐阅读