From: Tejun Heo <tj@kernel.org>
To: Patrick Bellasi <patrick.bellasi@arm.com>
Cc: linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org,
linux-api@vger.kernel.org, Ingo Molnar <mingo@redhat.com>,
Peter Zijlstra <peterz@infradead.org>,
"Rafael J . Wysocki" <rafael.j.wysocki@intel.com>,
Vincent Guittot <vincent.guittot@linaro.org>,
Viresh Kumar <viresh.kumar@linaro.org>,
Paul Turner <pjt@google.com>,
Quentin Perret <quentin.perret@arm.com>,
Dietmar Eggemann <dietmar.eggemann@arm.com>,
Morten Rasmussen <morten.rasmussen@arm.com>,
Juri Lelli <juri.lelli@redhat.com>, Todd Kjos <tkjos@google.com>,
Joel Fernandes <joelaf@google.com>,
Steve Muckle <smuckle@google.com>,
Suren Baghdasaryan <surenb@google.com>
Subject: Re: [PATCH v9 12/16] sched/core: uclamp: Extend CPU's cgroup controller
Date: Fri, 31 May 2019 08:35:45 -0700 [thread overview]
Message-ID: <20190531153545.GE374014@devbig004.ftw2.facebook.com> (raw)
In-Reply-To: <20190515094459.10317-13-patrick.bellasi@arm.com>
Hello, Patrick.
On Wed, May 15, 2019 at 10:44:55AM +0100, Patrick Bellasi wrote:
> Extend the CPU controller with a couple of new attributes util.{min,max}
> which allows to enforce utilization boosting and capping for all the
> tasks in a group. Specifically:
>
> - util.min: defines the minimum utilization which should be considered
> i.e. the RUNNABLE tasks of this group will run at least at a
> minimum frequency which corresponds to the util.min
> utilization
>
> - util.max: defines the maximum utilization which should be considered
> i.e. the RUNNABLE tasks of this group will run up to a
> maximum frequency which corresponds to the util.max
> utilization
Let's please use a prefix which is more specific. It's clamping the
utilization estimates of the member tasks which in turn affect
scheduling / frequency decisions but cpu.util.max reads like it's
gonna limit the cpu utilization directly. Maybe just use uclamp?
> These attributes:
>
> a) are available only for non-root nodes, both on default and legacy
> hierarchies, while system wide clamps are defined by a generic
> interface which does not depends on cgroups. This system wide
> interface enforces constraints on tasks in the root node.
I'd much prefer if they weren't entangled this way. The system wide
limits should work the same regardless of cgroup's existence. cgroup
can put further restriction on top but mere creation of cgroups with
cpu controller enabled shouldn't take them out of the system-wide
limits.
> b) enforce effective constraints at each level of the hierarchy which
> are a restriction of the group requests considering its parent's
> effective constraints. Root group effective constraints are defined
> by the system wide interface.
> This mechanism allows each (non-root) level of the hierarchy to:
> - request whatever clamp values it would like to get
> - effectively get only up to the maximum amount allowed by its parent
I'll come back to this later.
> c) have higher priority than task-specific clamps, defined via
> sched_setattr(), thus allowing to control and restrict task requests
This sounds good.
> Add two new attributes to the cpu controller to collect "requested"
> clamp values. Allow that at each non-root level of the hierarchy.
> Validate local consistency by enforcing util.min < util.max.
> Keep it simple by do not caring now about "effective" values computation
> and propagation along the hierarchy.
So, the followings are what we're doing for hierarchical protection
and limit propgations.
* Limits (high / max) default to max. Protections (low / min) 0. A
new cgroup by default doesn't constrain itself further and doesn't
have any protection.
* A limit defines the upper ceiling for the subtree. If an ancestor
has a limit of X, none of its descendants can have more than X.
* A protection defines the upper ceiling of protections for the
subtree. If an andester has a protection of X, none of its
descendants can have more protection than X.
Note that there's no way for an ancestor to enforce protection its
descendants. It can only allow them to claim some. This is
intentional as the other end of the spectrum is either descendants
losing the ability to further distribute protections as they see fit.
For proportions (as opposed to weights), we use percentage rational
numbers - e.g. 38.44 for 38.44%. I have parser and doc update commits
pending. I'll put them on cgroup/for-5.3.
Thanks.
--
tejun
next prev parent reply other threads:[~2019-05-31 15:35 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-15 9:44 [PATCH v9 00/16] Add utilization clamping support Patrick Bellasi
2019-05-15 9:44 ` [PATCH v9 01/16] sched/core: uclamp: Add CPU's clamp buckets refcounting Patrick Bellasi
2019-05-15 9:44 ` [PATCH v9 02/16] sched/core: uclamp: Add bucket local max tracking Patrick Bellasi
2019-05-15 9:44 ` [PATCH v9 03/16] sched/core: uclamp: Enforce last task's UCLAMP_MAX Patrick Bellasi
2019-05-15 9:44 ` [PATCH v9 04/16] sched/core: uclamp: Add system default clamps Patrick Bellasi
2019-05-15 9:44 ` [PATCH v9 05/16] sched/core: Allow sched_setattr() to use the current policy Patrick Bellasi
2019-05-15 9:44 ` [PATCH v9 06/16] sched/core: uclamp: Extend sched_setattr() to support utilization clamping Patrick Bellasi
2019-05-15 9:44 ` [PATCH v9 07/16] sched/core: uclamp: Reset uclamp values on RESET_ON_FORK Patrick Bellasi
2019-05-15 9:44 ` [PATCH v9 08/16] sched/core: uclamp: Set default clamps for RT tasks Patrick Bellasi
2019-05-15 9:44 ` [PATCH v9 09/16] sched/cpufreq: uclamp: Add clamps for FAIR and " Patrick Bellasi
2019-05-15 9:44 ` [PATCH v9 10/16] sched/core: uclamp: Add uclamp_util_with() Patrick Bellasi
2019-05-15 9:44 ` [PATCH v9 11/16] sched/fair: uclamp: Add uclamp support to energy_compute() Patrick Bellasi
2019-05-15 9:44 ` [PATCH v9 12/16] sched/core: uclamp: Extend CPU's cgroup controller Patrick Bellasi
2019-05-31 15:35 ` Tejun Heo [this message]
2019-06-03 12:24 ` Patrick Bellasi
2019-06-03 12:27 ` Patrick Bellasi
2019-06-05 14:03 ` Tejun Heo
2019-06-05 14:39 ` Patrick Bellasi
2019-06-05 14:44 ` Tejun Heo
2019-06-05 15:37 ` Patrick Bellasi
2019-06-05 15:39 ` Tejun Heo
2019-06-03 12:29 ` Patrick Bellasi
2019-06-05 14:09 ` Tejun Heo
2019-06-05 15:06 ` Patrick Bellasi
2019-06-05 15:27 ` Tejun Heo
2019-05-15 9:44 ` [PATCH v9 13/16] sched/core: uclamp: Propagate parent clamps Patrick Bellasi
2019-05-15 9:44 ` [PATCH v9 14/16] sched/core: uclamp: Propagate system defaults to root group Patrick Bellasi
2019-05-15 9:44 ` [PATCH v9 15/16] sched/core: uclamp: Use TG's clamps to restrict TASK's clamps Patrick Bellasi
2019-05-15 9:44 ` [PATCH v9 16/16] sched/core: uclamp: Update CPU's refcount on TG's clamp changes Patrick Bellasi
2019-05-30 10:15 ` [PATCH v9 00/16] Add utilization clamping support Patrick Bellasi
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=20190531153545.GE374014@devbig004.ftw2.facebook.com \
--to=tj@kernel.org \
--cc=dietmar.eggemann@arm.com \
--cc=joelaf@google.com \
--cc=juri.lelli@redhat.com \
--cc=linux-api@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=morten.rasmussen@arm.com \
--cc=patrick.bellasi@arm.com \
--cc=peterz@infradead.org \
--cc=pjt@google.com \
--cc=quentin.perret@arm.com \
--cc=rafael.j.wysocki@intel.com \
--cc=smuckle@google.com \
--cc=surenb@google.com \
--cc=tkjos@google.com \
--cc=vincent.guittot@linaro.org \
--cc=viresh.kumar@linaro.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;
as well as URLs for NNTP newsgroup(s).