From f7c99286f2b712cb4722fc97c71c503abd8ab2c1 Mon Sep 17 00:00:00 2001 From: Koba Ko Date: Wed, 15 Apr 2026 22:08:58 +0800 Subject: [PATCH] NVIDIA: SAUCE: sched/deadline: Skip DL server initialization on nohz_full CPUs The DL scheduler server (fair_server) is initialized on every online CPU with a default runtime of 50ms/1000ms. On nohz_full isolated CPUs, the DL server's dl_task_timer hrtimer fires periodically, which triggers hrtimer_interrupt(). This re-activates the tick's sched_timer (via tick_nohz_handler returning HRTIMER_RESTART) before the IRQ-exit path can suppress it through tick_nohz_full_update_tick(), causing the scheduler tick to run at full HZ rate on isolated CPUs. This is a regression from v6.8 where the DL server did not exist and nohz_full CPUs had no spurious hrtimer activity. Measured with osnoise tracer on ARM64 (nohz_full=4-64): Before: IRQ=~1000/s SIRQ=~30/s on isolated CPUs After: IRQ=0 SIRQ=0 on isolated CPUs (100.00000%) Verified across 6 reboot cycles with the osnoise method (CPUs 0-60, 10s runtime) - all isolated CPUs consistently at 100.00000% CPU availability. Skip DL server initialization for nohz_full CPUs since they are isolated and do not need CFS bandwidth protection. Fixes: bd9bbc96e8356 ("sched: Rework dl_server") Cc: Peter Zijlstra Cc: Daniel Bristot de Oliveira Cc: Juri Lelli Cc: Frederic Weisbecker Signed-off-by: Koba Ko --- kernel/sched/deadline.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c index 19b1a8b81c76c..82c2574b00efd 100644 --- a/kernel/sched/deadline.c +++ b/kernel/sched/deadline.c @@ -1620,6 +1620,9 @@ void sched_init_dl_servers(void) u64 runtime = 50 * NSEC_PER_MSEC; u64 period = 1000 * NSEC_PER_MSEC; + if (tick_nohz_full_cpu(cpu)) + continue; + rq = cpu_rq(cpu); guard(rq_lock_irq)(rq);