[GIT PULL] cgroup: Changes for v6.8

From: Tejun Heo
Date: Mon Dec 25 2023 - 16:09:38 EST


Merry Christmas and happy new year!

The following changes since commit 4a6c5607d4502ccd1b15b57d57f17d12b6f257a7:

workqueue: Make sure that wq_unbound_cpumask is never empty (2023-11-22 06:17:26 -1000)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git/ tags/cgroup-for-6.8

for you to fetch changes up to a7fb0423c201ba12815877a0b5a68a6a1710b23a:

cgroup: Move rcu_head up near the top of cgroup_root (2023-12-07 12:54:59 -1000)

----------------------------------------------------------------
cgroup: Changes for v6.8

- Yafang Shao added task_get_cgroup1() helper to enable a similar BPF helper
so that BPF progs can be more useful on cgroup1 hierarchies. While cgroup1
is mostly in maintenance mode, this addition is very small while having an
outsized usefulness for users who are still on cgroup1. Yafang also
optimized root cgroup list access by making it RCU protected in the
process.

- Waiman Long optimized rstat operation leading to substantially lower and
more consistent lock hold time while flushing the hierarchical statistics.
As the lock can be acquired briefly in various hot paths, this reduction
has cascading benefits.

- Waiman also improved the quality of isolation for cpuset's isolated
partitions. CPUs which are allocated to isolated partitions are now
excluded from running unbound work items and cpu_is_isolated() test which
is used by vmstat and memcg to reduce interference now includes cpuset
isolated CPUs. While it isn't there yet, the hope is eventually reaching
parity with the isolation level provided by the `isolcpus` boot param but
in a dynamic manner.

This involved a couple workqueue patches which were applied directly to
cgroup/for-6.8 rather than ping-ponged through the wq tree. This was
because the wq code change was small and the area is usually very static
and unlikely to cause conflicts. However, luck had it that there was a wq
bug fix in the area during the 6.7 cycle which caused a conflict. The
conflict is contextual but can be a bit confusing to resolve, so there is
one merge from wq/for-6.7-fixes.

----------------------------------------------------------------
Atul Kumar Pant (1):
selftests: cgroup: Fixes a typo in a comment

Josh Don (1):
cgroup: Fix documentation for cpu.idle

Tejun Heo (1):
Merge branch 'for-6.7-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq into for-6.8

Waiman Long (11):
workqueue: Add workqueue_unbound_exclude_cpumask() to exclude CPUs from wq_unbound_cpumask
selftests/cgroup: Minor code cleanup and reorganization of test_cpuset_prs.sh
cgroup/cpuset: Keep track of CPUs in isolated partitions
cgroup/cpuset: Take isolated CPUs out of workqueue unbound cpumask
cgroup/rstat: Reduce cpu_lock hold time in cgroup_rstat_flush_locked()
workqueue: Move workqueue_set_unbound_cpumask() and its helpers inside CONFIG_SYSFS
cgroup/cpuset: Expose cpuset.cpus.isolated
cgroup/rstat: Optimize cgroup_rstat_updated_list()
cgroup: Avoid false cacheline sharing of read mostly rstat_cpu
cgroup/cpuset: Include isolated cpuset CPUs in cpu_is_isolated() check
cgroup: Move rcu_head up near the top of cgroup_root

Yafang Shao (5):
cgroup: Remove unnecessary list_empty()
cgroup: Make operations on the cgroup root_list RCU safe
cgroup: Eliminate the need for cgroup_mutex in proc_cgroup_show()
cgroup: Add annotation for holding namespace_sem in current_cgns_cgroup_from_root()
cgroup: Add a new helper for cgroup1 hierarchy

Documentation/admin-guide/cgroup-v2.rst | 33 ++-
include/linux/cgroup-defs.h | 21 +-
include/linux/cgroup.h | 4 +-
include/linux/cpuset.h | 6 +
include/linux/sched/isolation.h | 4 +-
include/linux/workqueue.h | 2 +-
kernel/cgroup/cgroup-internal.h | 4 +-
kernel/cgroup/cgroup-v1.c | 34 +++
kernel/cgroup/cgroup.c | 45 ++--
kernel/cgroup/cpuset.c | 297 ++++++++++++++++------
kernel/cgroup/rstat.c | 150 +++++++----
kernel/workqueue.c | 167 ++++++++----
tools/testing/selftests/cgroup/test_cpuset_prs.sh | 222 ++++++++++------
tools/testing/selftests/cgroup/test_freezer.c | 2 +-
14 files changed, 708 insertions(+), 283 deletions(-)

--
tejun