Re: [RFC PATCH 0/8] cgroup/cpuset: Support RCU_NOCB on isolated partitions

Paul E. McKenney
2024-01-19T10:24:35Z

On Wed, Jan 17, 2024 at 11:35:03AM -0500, Waiman Long wrote:
> This patch series is based on the RFC patch from Frederic [1]. Instead
> of offering RCU_NOCB as a separate option, it is now lumped into a
> root-only cpuset.cpus.isolation_full flag that will enable all the
> additional CPU isolation capabilities available for isolated partitions
> if set. RCU_NOCB is just the first one to this party. Additional dynamic
> CPU isolation capabilities will be added in the future.
>
> The first 2 patches are adopted from Federic with minor twists to fix
> merge conflicts and compilation issue. The rests are for implementing
> the new cpuset.cpus.isolation_full interface which is essentially a flag
> to globally enable or disable full CPU isolation on isolated partitions.
> On read, it also shows the CPU isolation capabilities that are currently
> enabled. RCU_NOCB requires that the rcu_nocbs option be present in
> the kernel boot command line. Without that, the rcu_nocb functionality
> cannot be enabled even if the isolation_full flag is set. So we allow
> users to check the isolation_full file to verify that if the desired
> CPU isolation capability is enabled or not.
>
> Only sanity checking has been done so far. More testing, especially on
> the RCU side, will be needed.

There has been some discussion of simplifying the (de-)offloading code
to handle only offline CPUs. Along with some discussion of eliminating
the (de-)offloading capability altogehter.

We clearly should converge on the capability to be provided before
exposing this to userspace. ;-)

Thanx, Paul

> [1] https://lore.kernel.org/lkml/20220525221055.1152307-1-frederic@kernel.org/
>
> Frederic Weisbecker (2):
> rcu/nocb: Pass a cpumask instead of a single CPU to offload/deoffload
> rcu/nocb: Prepare to change nocb cpumask from CPU-hotplug protected
> cpuset caller
>
> Waiman Long (6):
> rcu/no_cb: Add rcu_nocb_enabled() to expose the rcu_nocb state
> cgroup/cpuset: Better tracking of addition/deletion of isolated CPUs
> cgroup/cpuset: Add cpuset.cpus.isolation_full
> cgroup/cpuset: Enable dynamic rcu_nocb mode on isolated CPUs
> cgroup/cpuset: Document the new cpuset.cpus.isolation_full control
> file
> cgroup/cpuset: Update test_cpuset_prs.sh to handle
> cpuset.cpus.isolation_full
>
> Documentation/admin-guide/cgroup-v2.rst | 24 ++
> include/linux/rcupdate.h | 15 +-
> kernel/cgroup/cpuset.c | 237 ++++++++++++++----
> kernel/rcu/rcutorture.c | 6 +-
> kernel/rcu/tree_nocb.h | 118 ++++++---
> .../selftests/cgroup/test_cpuset_prs.sh | 23 +-
> 6 files changed, 337 insertions(+), 86 deletions(-)
>
> --
> 2.39.3
>