Timer 在Linux RT 4.19.188中,抢占\u RT\u FULL在隔离CPU上中断NO_HZ\u FULL

Timer 在Linux RT 4.19.188中,抢占\u RT\u FULL在隔离CPU上中断NO_HZ\u FULL,timer,linux-kernel,scheduler,linux-rt,Timer,Linux Kernel,Scheduler,Linux Rt,我正在Linux-4.19.188+patch-4.19.188-rt77中运行测试,并启用了PREEMPT_RT_FULL和NO_HZ_FULL 我在一个隔离的CPU上放置了一个带有SCHED_FIFO(优先级99)的无限循环。预期的结果是,根据NO_HZ_FULL实现,在隔离的CPU中不应该看到勾号 但是,在隔离的CPU中,“本地APCI定时器中断”的数量增加了HZ(在我的Linux中为每秒250次),这意味着勾号被激活了 我在谷歌搜索了一下互联网,发现了2018年9月报道的类似问题。从那时

我正在Linux-4.19.188+patch-4.19.188-rt77中运行测试,并启用了PREEMPT_RT_FULL和NO_HZ_FULL

我在一个隔离的CPU上放置了一个带有SCHED_FIFO(优先级99)的无限循环。预期的结果是,根据NO_HZ_FULL实现,在隔离的CPU中不应该看到勾号

但是,在隔离的CPU中,“本地APCI定时器中断”的数量增加了HZ(在我的Linux中为每秒250次),这意味着勾号被激活了

我在谷歌搜索了一下互联网,发现了2018年9月报道的类似问题。从那时起,Linux似乎一直没有修复它

问题是随机发生的,但并不总是存在。

我想知道是什么在隔离的CPU上设置了滴答计时器,我应该从哪里找出根本原因?

您是否确保正在运行进程的CPU不是主CPU?即使在
CONFIG\u NO\u HZ\u FULL=y
时,也必须至少有一个CPU滴答作响,这是主CPU(通常是CPU 0)。我可以确保这一点。我在一个有8个CPU的系统上启动Linux,隔离CPU6和CPU7,并在内核命令行中设置nohz_full=6,7 rcu_nocbs=6-7。然后taskset-c7chrt-f99循环在隔离的cpu7上运行无限./loop。正如我在问题中所说,有时CPU7中没有滴答声,但有时CPU7中有滴答声。这是非常混乱和难以调试的。