Messages in this thread Patch in this message | | | Date | Tue, 9 Apr 2024 15:07:28 +0200 | From | Oleg Nesterov <> | Subject | Re: Nohz_full on boot CPU is broken (was: Re: [PATCH v2 1/1] wq: Avoid using isolated cpus' timers on queue_delayed_work) |
| |
On 04/09, Frederic Weisbecker wrote: > > Le Sun, Apr 07, 2024 at 03:09:14PM +0200, Oleg Nesterov a écrit : > > Well, the changelog says > > > > nohz_full has been trialed at a large supercomputer site and found to > > significantly reduce jitter. In order to deploy it in production, they > > need CPU0 to be nohz_full > > > > so I guess this feature has users. > > > > But after the commit aae17ebb53cd3da ("workqueue: Avoid using isolated cpus' > > timers on queue_delayed_work") the kernel will crash at boot time if the boot > > CPU is nohz_full. > > Right but there are many possible calls to housekeeping on boot before the > first housekeeper becomes online.
Well, it seems that other callers are more or less fine in this respect... At least the kernel boots fine with that commit reverted.
But a) I didn't try to really check, and b) this doesn't matter.
I agree, and that is why I never blamed this change in queue_delayed_work().
OK, you seem to agree with the patch below, I'll write the changelog/comment and send it "officially".
Or did I misunderstand you?
Oleg.
diff --git a/kernel/sched/isolation.c b/kernel/sched/isolation.c index 373d42c707bc..e912555c6fc8 100644 --- a/kernel/sched/isolation.c +++ b/kernel/sched/isolation.c @@ -46,7 +46,11 @@ int housekeeping_any_cpu(enum hk_type type) if (cpu < nr_cpu_ids) return cpu; - return cpumask_any_and(housekeeping.cpumasks[type], cpu_online_mask); + cpu = cpumask_any_and(housekeeping.cpumasks[type], cpu_online_mask); + if (cpu < nr_cpu_ids) + return cpu; + + WARN_ON_ONCE(system_state == SYSTEM_RUNNING); } } return smp_processor_id();
| |