Re: [PATCH-next 00/23] cgroup/cpuset: Enable runtime update of nohz_full and managed_irq CPUs
From: Jing Wu
Date: Wed Jul 08 2026 - 22:38:44 EST
Since we offered to take the RCU/nocb piece, here is a concrete shape to
shoot at.
Constraint recap (kernel/rcu/tree_nocb.h): rcu_nocb_cpu_{offload,deoffload}()
require the CPU offline (they reject when cpu_online()) under cpus_read_lock +
nocb_mutex, and per Frederic the toggle really needs CPUHP_AP_IDLE_DEAD because
callbacks can still be enqueued before that. Reaching IDLE_DEAD pays the
stop_machine cost that disturbs other isolated partitions.
Observation: among the kernel-noise types, only RCU needs that deep offline;
tick, managed_irq and the watchdog reconfigure through the existing online-side
callbacks. So bundling RCU under HK_TYPE_KERNEL_NOISE makes every isolation
change pay the RCU cost.
Proposal:
1. Split HK_TYPE_RCU out of HK_TYPE_KERNEL_NOISE into its own
runtime-mutable type, plus an immutable HK_TYPE_RCU_BOOT snapshot.
HK_TYPE_KERNEL_NOISE keeps tick/timer/misc/wq.
2. Gate nocb changes behind an explicit, per-partition cpuset opt-in.
Default off: partition changes never touch rcu_nocb_mask, so no spike is
inflicted on other partitions. On: the isolated CPUs join/leave the nocb
set, paying the offline cost once at setup/teardown. This is Waiman's
admin-choice knob.
3. Do the toggle inside the serialized hotplug transition at
CPUHP_AP_IDLE_DEAD, rather than the remove_cpu() -> toggle -> add_cpu()
dance our v3 prototype used, which raced with concurrent hotplug.
Open questions:
- Frederic: is CPUHP_AP_IDLE_DEAD the right hook, and is a new cpuhp callback
there acceptable versus the current post-offline API?
- admin pre-offlines the target CPUs (your earlier suggestion) versus the
cpuset code cycling them via Thomas's per-CPU down/up primitive?
- does the "only RCU needs the deep offline" assumption hold for tick,
managed_irq and the watchdog?
If this shape sounds acceptable we will build it on top of your CPU down/up
primitives.
Thanks,
Jing Wu
Qiliang Yuan