Thread (89 messages) 89 messages, 6 authors, 2019-01-25

Re: [PATCH v6 09/16] sched/cpufreq: uclamp: Add utilization clamping for RT tasks

From: Peter Zijlstra <peterz@infradead.org>
Date: 2019-01-24 15:12:39
Also in: linux-pm, lkml

On Thu, Jan 24, 2019 at 12:38:35PM +0000, Patrick Bellasi wrote:
On 24-Jan 12:30, Patrick Bellasi wrote:
quoted
On 23-Jan 21:11, Peter Zijlstra wrote:
quoted
On Wed, Jan 23, 2019 at 02:40:11PM +0000, Patrick Bellasi wrote:
quoted
On 23-Jan 11:49, Peter Zijlstra wrote:
quoted
On Tue, Jan 15, 2019 at 10:15:06AM +0000, Patrick Bellasi wrote:
[...]
quoted
quoted
I'm thikning that if we haz a single bit, say:

  struct uclamp_se {
	...
	unsigned int	changed : 1;
  };

We can update uclamp_se::value and set uclamp_se::changed, and then the
next enqueue will (unlikely) test-and-clear changed and recompute the
bucket_id.
This mean will lazy update the "requested" bucket_id by deferring its
computation at enqueue time. Which saves us a copy of the bucket_id,
i.e. we will have only the "effective" value updated at enqueue time.

But...
quoted
Would that not be simpler?
... although being simpler it does not fully exploit the slow-path,
a syscall which is usually running from a different process context
(system management software).

It also fits better for lazy updates but, in the cgroup case, where we
wanna enforce an update ASAP for RUNNABLE tasks, we will still have to
do the updates from the slow-path.

Will look better into this simplification while working on v7, perhaps
the linear mapping can really help in that too.
Actually, I forgot to mention that:

    uclamp_se::effective::{
        value, bucket_id
    }

will be still required to proper support the cgroup delegation model,
where a child group could be restricted by the parent but we want to
keep track of the original "requested" value for when the parent
should relax the restriction.

Thus, since effective values are already there, why not using them
also to pre-compute the new requested bucket_id from the slow path?
Well, we need the orig_value; but I'm still not sure why you need more
bucket_id's. Also, retaining orig_value is already required for the
system limits, there's nothing cgroup-y about this afaict.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help