Skip to content

Commit cfd7e6c

Browse files
committed
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 Grace (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 Kyle Wang's 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: bd9bbc9 ("sched: Rework dl_server") Cc: Peter Zijlstra <peterz@infradead.org> Cc: Daniel Bristot de Oliveira <bristot@kernel.org> Cc: Juri Lelli <juri.lelli@redhat.com> Cc: Frederic Weisbecker <frederic@kernel.org> Signed-off-by: Koba Ko <kobak@nvidia.com>
1 parent b406505 commit cfd7e6c

1 file changed

Lines changed: 3 additions & 0 deletions

File tree

kernel/sched/deadline.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1620,6 +1620,9 @@ void sched_init_dl_servers(void)
16201620
u64 runtime = 50 * NSEC_PER_MSEC;
16211621
u64 period = 1000 * NSEC_PER_MSEC;
16221622

1623+
if (tick_nohz_full_cpu(cpu))
1624+
continue;
1625+
16231626
rq = cpu_rq(cpu);
16241627

16251628
guard(rq_lock_irq)(rq);

0 commit comments

Comments
 (0)