From: Tejun Heo <tj@kernel.org>
To: Waiman Long <longman@redhat.com>
Cc: "Michal Koutný" <mkoutny@suse.com>,
"Zefan Li" <lizefan.x@bytedance.com>,
"Johannes Weiner" <hannes@cmpxchg.org>,
"Jonathan Corbet" <corbet@lwn.net>,
"Shuah Khan" <shuah@kernel.org>,
linux-kernel@vger.kernel.org, cgroups@vger.kernel.org,
linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org,
"Juri Lelli" <juri.lelli@redhat.com>,
"Valentin Schneider" <vschneid@redhat.com>,
"Frederic Weisbecker" <frederic@kernel.org>,
"Mrunal Patel" <mpatel@redhat.com>,
"Ryan Phillips" <rphillips@redhat.com>,
"Brent Rowsell" <browsell@redhat.com>,
"Peter Hunt" <pehunt@redhat.com>, "Phil Auld" <pauld@redhat.com>
Subject: Re: [RFC PATCH 0/5] cgroup/cpuset: A new "isolcpus" paritition
Date: Mon, 5 Jun 2023 10:27:33 -1000 [thread overview]
Message-ID: <ZH5FNc6wjlGPsaaO@slm.duckdns.org> (raw)
In-Reply-To: <be64a569-4388-9dd9-3e06-36d716a54f6c@redhat.com>
Hello,
On Mon, Jun 05, 2023 at 04:00:39PM -0400, Waiman Long wrote:
...
> > file seems hacky to me. e.g. How would it interact with namespacing? Are
> > there reasons why this can't be properly hierarchical other than the amount
> > of work needed? For example:
> >
> > cpuset.cpus.exclusive is a per-cgroup file and represents the mask of CPUs
> > that the cgroup holds exclusively. The mask is always a subset of
> > cpuset.cpus. The parent loses access to a CPU when the CPU is given to a
> > child by setting the CPU in the child's cpus.exclusive and the CPU can't
> > be given to more than one child. IOW, exclusive CPUs are available only to
> > the leaf cgroups that have them set in their .exclusive file.
> >
> > When a cgroup is turned into a partition, its cpuset.cpus and
> > cpuset.cpus.exclusive should be the same. For backward compatibility, if
> > the cgroup's parent is already a partition, cpuset will automatically
> > attempt to add all cpus in cpuset.cpus into cpuset.cpus.exclusive.
> >
> > I could well be missing something important but I'd really like to see
> > something like the above where the reservation feature blends in with the
> > rest of cpuset.
>
> It can certainly be made hierarchical as you suggest. It does increase
> complexity from both user and kernel point of view.
>
> From the user point of view, there is one more knob to manage hierarchically
> which is not used that often.
From user pov, this only affects them when they want to create partitions
down the tree, right?
> From the kernel point of view, we may need to have one more cpumask per
> cpuset as the current subparts_cpus is used to track automatic reservation.
> We need another cpumask to contain extra exclusive CPUs not allocated
> through automatic reservation. The fact that you mention this new control
> file as a list of exclusively owned CPUs for this cgroup. Creating a
> partition is in fact allocating exclusive CPUs to a cgroup. So it kind of
> overlaps with the cpuset.cpus.partititon file. Can we fail a write to
Yes, it substitutes and expands on cpuset.cpus.partition behavior.
> cpuset.cpus.exclusive if those exclusive CPUs cannot be granted or will this
> exclusive list is only valid if a valid partition can be formed. So we need
> to properly manage the dependency between these 2 control files.
So, I think cpus.exclusive can become the sole mechanism to arbitrate
exclusive owenership of CPUs and .partition can depend on .exclusive.
> Alternatively, I have no problem exposing cpuset.cpus.exclusive as a
> read-only file. It is a bit problematic if we need to make it writable.
I don't follow. How would remote partitions work then?
> As for namespacing, you do raise a good point. I was thinking mostly from a
> whole system point of view as the use case that I am aware of does not needs
> that. To allow delegation of exclusive CPUs to a child cgroup, that cgroup
> has to be a partition root itself. One compromise that I can think of is to
> only allow automatic reservation only in such a scenario. In that case, I
> need to support a remote load balanced partition as well and hierarchical
> sub-partitions underneath it. That can be done with some extra code to the
> existing v2 patchset without introducing too much complexity.
>
> IOW, the use of remote partition is only allowed on the whole system level
> where one has access to the cgroup root. Exclusive CPUs distribution within
> a container can only be done via the use of adjacent partitions with
> automatic reservation. Will that be a good enough compromise from your point
> of view?
It seems too twisted to me. I'd much prefer it to be better integrated with
the rest of cpuset.
Thanks.
--
tejun
next prev parent reply other threads:[~2023-06-05 20:27 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-12 15:37 [RFC PATCH 0/5] cgroup/cpuset: A new "isolcpus" paritition Waiman Long
2023-04-12 19:28 ` Tejun Heo
[not found] ` <1ce6a073-e573-0c32-c3d8-f67f3d389a28@redhat.com>
2023-04-12 20:22 ` Tejun Heo
2023-04-12 20:33 ` Waiman Long
2023-04-13 0:03 ` Tejun Heo
2023-04-13 0:26 ` Waiman Long
2023-04-13 0:33 ` Tejun Heo
2023-04-13 0:55 ` Waiman Long
2023-04-13 1:17 ` Tejun Heo
2023-04-13 1:55 ` Waiman Long
2023-04-14 1:22 ` Waiman Long
2023-04-14 16:54 ` Tejun Heo
2023-04-14 17:29 ` Waiman Long
2023-04-14 17:34 ` Tejun Heo
2023-04-14 17:38 ` Waiman Long
2023-04-14 19:06 ` Waiman Long
2023-05-02 18:01 ` Michal Koutný
2023-05-02 21:26 ` Waiman Long
2023-05-02 22:27 ` Michal Koutný
2023-05-04 3:01 ` Waiman Long
2023-05-05 16:03 ` Tejun Heo
2023-05-05 16:25 ` Waiman Long
2023-05-08 1:03 ` Waiman Long
2023-05-22 19:49 ` Tejun Heo
2023-05-28 21:18 ` Waiman Long
2023-06-05 18:03 ` Tejun Heo
2023-06-05 20:00 ` Waiman Long
2023-06-05 20:27 ` Tejun Heo [this message]
2023-06-06 2:47 ` Waiman Long
2023-06-06 19:58 ` Tejun Heo
2023-06-06 20:11 ` Waiman Long
2023-06-06 20:13 ` Tejun Heo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZH5FNc6wjlGPsaaO@slm.duckdns.org \
--to=tj@kernel.org \
--cc=browsell@redhat.com \
--cc=cgroups@vger.kernel.org \
--cc=corbet@lwn.net \
--cc=frederic@kernel.org \
--cc=hannes@cmpxchg.org \
--cc=juri.lelli@redhat.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=lizefan.x@bytedance.com \
--cc=longman@redhat.com \
--cc=mkoutny@suse.com \
--cc=mpatel@redhat.com \
--cc=pauld@redhat.com \
--cc=pehunt@redhat.com \
--cc=rphillips@redhat.com \
--cc=shuah@kernel.org \
--cc=vschneid@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).