Re: [PATCH v2 0/4] cgroup/cpuset: Improve CPU isolation in isolated partitions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 11/9/23 04:02, Zhang, Rui wrote:
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.

It was originally based on the cgroup/for-6.7 branch. It should be applicable to v6.7 kernel now.

Cheers,
Longman

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(-)






[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]     [Monitors]

  Powered by Linux