From: Waiman Long <longman@redhat.com>
To: Tejun Heo <tj@kernel.org>,
lizefan@huawei.com, hannes@cmpxchg.org, peterz@infradead.org,
mingo@redhat.com
Cc: cgroups@vger.kernel.org, linux-kernel@vger.kernel.org,
kernel-team@fb.com, pjt@google.com, luto@amacapital.net,
efault@gmx.de, torvalds@linux-foundation.org, guro@fb.com
Subject: Re: [PATCH 5/6] cgroup: implement cgroup v2 thread support
Date: Mon, 17 Jul 2017 17:12:31 -0400 [thread overview]
Message-ID: <199bfed8-de84-da6d-6623-c45524443aaa@redhat.com> (raw)
In-Reply-To: <20170717020721.3612468-6-tj@kernel.org>
On 07/16/2017 10:07 PM, Tejun Heo wrote:
>
> +Threads
> +~~~~~~~
> +
> +cgroup v2 supports thread granularity for a subset of controllers to
> +support use cases requiring hierarchical resource distribution across
> +the threads of a group of processes. By default, all threads of a
> +process belong to the same cgroup, which also serves as the resource
> +domain to host resource consumptions which are not specific to a
> +process or thread. The thread mode allows threads to be spread across
> +a subtree while still maintaining the common resource domain for them.
> +
> +Controllers which support thread mode are called threaded controllers.
> +The ones which don't are called domain controllers.
> +
> +Marking a cgroup threaded makes it join the resource domain of its
> +parent as a threaded cgroup. The parent may be another threaded
> +cgroup whose resource domain is further up in the hierarchy. The root
> +of a threaded subtree, that is, the nearest ancestor which is not
> +threaded, is called threaded domain and serves as the resource domain
> +for the entire subtree.
The cgroup code uses the term "thread root" in quite a number of places.
So a developer may be confused when comparing the code and the
documentation. I would recommend either introducing "thread root" as an
alias for threaded domain here in the documentation or documenting that
"threaded domain = thread root" in the code.
> + cgroup.type
> +
> + A read-write single value file which exists on non-root
> + cgroups.
> +
> + When read, it indicates the current type of the cgroup, which
> + can be one of the following values.
> +
> + - "domain" : A normal valid domain cgroup.
> +
> + - "domain (threaded)" : A threaded domain cgroup which is
> + serving as the root of a threaded subtree.
> +
> + - "domain (invalid)" : A cgroup which is in an invalid state.
> + It can't be populated or have controllers enabled. It may
> + be allowed to become a threaded cgroup.
> +
> + - "threaded" : A threaded cgroup which is a member of a
> + threaded subtree.
> +
> + A cgroup can be turned into a threaded cgroup by writing
> + "threaded" to this file.
> +
> cgroup.procs
> A read-write new-line separated values file which exists on
> all cgroups.
Do we need to document that cgroup.procs isn't writable in a threaded
cgroup?
> @@ -4301,6 +4606,7 @@ static struct cgroup *cgroup_create(struct cgroup *parent)
> cgrp->self.parent = &parent->self;
> cgrp->root = root;
> cgrp->level = level;
> + cgrp->dom_cgrp = cgrp->dom_cgrp;
It is a no-op. I think it is better to modify it to
+ cgrp->dom_cgrp = cgroup_is_threaded(parent) ? parent->dom_cgrp : cgrp;
Then we won't have an invalid domain state.
Cheers,
Longman
next prev parent reply other threads:[~2017-07-17 21:18 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-17 2:07 [PATCHSET for-4.13] cgroup: implement cgroup2 thread mode, v3 Tejun Heo
2017-07-17 2:07 ` [PATCH 1/6] cgroup: reorganize cgroup.procs / task write path Tejun Heo
2017-07-17 2:07 ` [PATCH 2/6] cgroup: add @flags to css_task_iter_start() and implement CSS_TASK_ITER_PROCS Tejun Heo
2017-07-17 2:07 ` [PATCH 3/6] cgroup: introduce cgroup->dom_cgrp and threaded css_set handling Tejun Heo
2017-07-17 2:07 ` [PATCH 4/6] cgroup: implement CSS_TASK_ITER_THREADED Tejun Heo
2017-07-17 2:07 ` [PATCH 5/6] cgroup: implement cgroup v2 thread support Tejun Heo
2017-07-17 14:14 ` Peter Zijlstra
2017-07-17 14:26 ` Tejun Heo
2017-07-18 17:28 ` Peter Zijlstra
2017-07-18 17:35 ` Waiman Long
2017-07-18 17:54 ` Tejun Heo
2017-07-18 18:41 ` Peter Zijlstra
2017-07-18 18:47 ` Tejun Heo
2017-07-19 14:07 ` Peter Zijlstra
2017-07-19 16:34 ` Tejun Heo
2017-07-17 20:56 ` Waiman Long
2017-07-18 14:37 ` Waiman Long
2017-07-18 17:10 ` Tejun Heo
2017-07-18 17:23 ` Waiman Long
2017-07-19 16:29 ` Tejun Heo
2017-07-19 17:09 ` Waiman Long
2017-07-19 17:48 ` Tejun Heo
2017-07-17 21:12 ` Waiman Long [this message]
2017-07-19 15:40 ` Tejun Heo
2017-07-17 2:07 ` [PATCH 6/6] cgroup: update debug controller to print out thread mode information Tejun Heo
2017-07-17 21:19 ` Waiman Long
2017-07-19 15:31 ` Tejun Heo
2017-07-19 15:41 ` Waiman Long
2017-07-19 15:44 ` Tejun Heo
2017-07-17 14:48 ` [PATCHSET for-4.13] cgroup: implement cgroup2 thread mode, v3 Waiman Long
2017-07-17 14:51 ` Tejun Heo
2017-07-19 19:44 [PATCHSET for-4.13] cgroup: implement cgroup2 thread mode, v4 Tejun Heo
2017-07-19 19:44 ` [PATCH 5/6] cgroup: implement cgroup v2 thread support 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=199bfed8-de84-da6d-6623-c45524443aaa@redhat.com \
--to=longman@redhat.com \
--cc=cgroups@vger.kernel.org \
--cc=efault@gmx.de \
--cc=guro@fb.com \
--cc=hannes@cmpxchg.org \
--cc=kernel-team@fb.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lizefan@huawei.com \
--cc=luto@amacapital.net \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=pjt@google.com \
--cc=tj@kernel.org \
--cc=torvalds@linux-foundation.org \
/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
all inboxes | Powered by JetHome®