Hi, Waiman, May I know which kernel this patch series is based on? I'd like to test this feature, but cannot apply it cleanly on top of v6.6. thanks, rui On Wed, 2023-10-25 at 14:25 -0400, Waiman Long wrote: > v2: > - Add 2 read-only workqueue sysfs files to expose the user requested > cpumask as well as the isolated CPUs to be excluded from > wq_unbound_cpumask. > - Ensure that caller of the new workqueue_unbound_exclude_cpumask() > hold cpus_read_lock. > - Update the cpuset code to make sure the cpus_read_lock is held > whenever workqueue_unbound_exclude_cpumask() may be called. > > Isolated cpuset partition can currently be created to contain an > exclusive set of CPUs not used in other cgroups and with load > balancing > disabled to reduce interference from the scheduler. > > The main purpose of this isolated partition type is to dynamically > emulate what can be done via the "isolcpus" boot command line option, > specifically the default domain flag. One effect of the "isolcpus" > option > is to remove the isolated CPUs from the cpumasks of unbound > workqueues > since running work functions in an isolated CPU can be a major source > of interference. Changing the unbound workqueue cpumasks can be done > at > run time by writing an appropriate cpumask without the isolated CPUs > to > /sys/devices/virtual/workqueue/cpumask. So one can set up an isolated > cpuset partition and then write to the cpumask sysfs file to achieve > similar level of CPU isolation. However, this manual process can be > error prone. > > This patch series implements automatic exclusion of isolated CPUs > from > unbound workqueue cpumasks when an isolated cpuset partition is > created > and then adds those CPUs back when the isolated partition is > destroyed. > > There are also other places in the kernel that look at the > HK_FLAG_DOMAIN > cpumask or other HK_FLAG_* cpumasks and exclude the isolated CPUs > from > certain actions to further reduce interference. CPUs in an isolated > cpuset partition will not be able to avoid those interferences yet. > That > may change in the future as the need arises. > > Waiman Long (4): > 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 > > Documentation/admin-guide/cgroup-v2.rst | 10 +- > include/linux/workqueue.h | 2 +- > kernel/cgroup/cpuset.c | 286 +++++++++++++--- > -- > kernel/workqueue.c | 91 +++++- > .../selftests/cgroup/test_cpuset_prs.sh | 216 ++++++++----- > 5 files changed, 438 insertions(+), 167 deletions(-) >