Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1620728 > unrolled thread
| Started by | "Rafael J. Wysocki" <rafael@kernel.org> |
|---|---|
| First post | 2017-04-10 23:00 +0200 |
| Last post | 2017-04-11 23:00 +0200 |
| Articles | 3 — 2 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: [RFC/RFT][PATCH 2/2] cpufreq: schedutil: Utilization aggregation "Rafael J. Wysocki" <rafael@kernel.org> - 2017-04-10 23:00 +0200
Re: [RFC/RFT][PATCH 2/2] cpufreq: schedutil: Utilization aggregation Joel Fernandes <joelaf@google.com> - 2017-04-11 04:00 +0200
Re: [RFC/RFT][PATCH 2/2] cpufreq: schedutil: Utilization aggregation "Rafael J. Wysocki" <rafael@kernel.org> - 2017-04-11 23:00 +0200
| From | "Rafael J. Wysocki" <rafael@kernel.org> |
|---|---|
| Date | 2017-04-10 23:00 +0200 |
| Subject | Re: [RFC/RFT][PATCH 2/2] cpufreq: schedutil: Utilization aggregation |
| Message-ID | <tuOzL-5Pa-1@gated-at.bofh.it> |
On Mon, Apr 10, 2017 at 8:39 AM, Joel Fernandes <joelaf@google.com> wrote:
> Hi Rafael,
Hi,
> On Sun, Apr 9, 2017 at 5:11 PM, Rafael J. Wysocki <rjw@rjwysocki.net> wrote:
>> From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
>>
[cut]
>> @@ -154,22 +153,30 @@ static unsigned int get_next_freq(struct
>> return cpufreq_driver_resolve_freq(policy, freq);
>> }
>>
>> -static void sugov_get_util(unsigned long *util, unsigned long *max)
>> +static void sugov_get_util(struct sugov_cpu *sg_cpu, unsigned int flags)
>> {
>> + unsigned long cfs_util, cfs_max;
>> struct rq *rq = this_rq();
>> - unsigned long cfs_max;
>>
>> - cfs_max = arch_scale_cpu_capacity(NULL, smp_processor_id());
>> + sg_cpu->flags |= flags & SCHED_CPUFREQ_RT_DL;
>> + if (sg_cpu->flags & SCHED_CPUFREQ_RT_DL)
>> + return;
>>
>> - *util = min(rq->cfs.avg.util_avg, cfs_max);
>> - *max = cfs_max;
>> + cfs_max = arch_scale_cpu_capacity(NULL, smp_processor_id());
>> + cfs_util = min(rq->cfs.avg.util_avg, cfs_max);
>> + if (sg_cpu->util * cfs_max < sg_cpu->max * cfs_util) {
>
> Assuming all CPUs have equal compute capacity, doesn't this mean that
> sg_cpu->util is updated only if cfs_util > sg_cpu->util?
Yes, it does.
> Maybe I missed something, but wouldn't we want sg_cpu->util to be
> reduced as well when cfs_util reduces? Doesn't this condition
> basically discard all updates to sg_cpu->util that could have reduced
> it?
>
>> + sg_cpu->util = cfs_util;
>> + sg_cpu->max = cfs_max;
>> + }
>> }
Well, that's the idea. :-)
During the discussion at the OSPM-summit we concluded that discarding
all of the utilization changes between the points at which frequency
updates actually happened was not a good idea, so they needed to be
aggregated somehow.
There are a few ways to aggregate them, but the most straightforward
one (and one which actually makes sense) is to take the maximum as the
aggregate value.
Of course, this means that we skew things towards performance here,
but I'm not worried that much. :-)
Thanks,
Rafael
[toc] | [next] | [standalone]
| From | Joel Fernandes <joelaf@google.com> |
|---|---|
| Date | 2017-04-11 04:00 +0200 |
| Message-ID | <tuTg5-rs-15@gated-at.bofh.it> |
| In reply to | #1620728 |
On Mon, Apr 10, 2017 at 1:59 PM, Rafael J. Wysocki <rafael@kernel.org> wrote: [..] >>> + sg_cpu->util = cfs_util; >>> + sg_cpu->max = cfs_max; >>> + } >>> } > > > Well, that's the idea. :-) > > During the discussion at the OSPM-summit we concluded that discarding > all of the utilization changes between the points at which frequency > updates actually happened was not a good idea, so they needed to be > aggregated somehow. > > There are a few ways to aggregate them, but the most straightforward > one (and one which actually makes sense) is to take the maximum as the > aggregate value. > > Of course, this means that we skew things towards performance here, > but I'm not worried that much. :-) Does this increase the chance of going to idle at higher frequency? Say in the last rate limit window, we have a high request followed by a low request. After the window closes, by this algorithm we ignore the low request and take the higher valued request, and then enter idle. Then, wouldn't we be idling at higher frequency? I guess if you enter "cluster-idle" then probably this isn't a big deal (like on the ARM64 platforms I am working on). But I wasn't sure how expensive is entering C-states at higher frequency on Intel platforms is or if it is even a concern. :-D Thanks, Joel
[toc] | [prev] | [next] | [standalone]
| From | "Rafael J. Wysocki" <rafael@kernel.org> |
|---|---|
| Date | 2017-04-11 23:00 +0200 |
| Message-ID | <tvb3j-3yo-1@gated-at.bofh.it> |
| In reply to | #1620836 |
On Tue, Apr 11, 2017 at 3:57 AM, Joel Fernandes <joelaf@google.com> wrote: > On Mon, Apr 10, 2017 at 1:59 PM, Rafael J. Wysocki <rafael@kernel.org> wrote: > [..] >>>> + sg_cpu->util = cfs_util; >>>> + sg_cpu->max = cfs_max; >>>> + } >>>> } >> >> >> Well, that's the idea. :-) >> >> During the discussion at the OSPM-summit we concluded that discarding >> all of the utilization changes between the points at which frequency >> updates actually happened was not a good idea, so they needed to be >> aggregated somehow. >> >> There are a few ways to aggregate them, but the most straightforward >> one (and one which actually makes sense) is to take the maximum as the >> aggregate value. >> >> Of course, this means that we skew things towards performance here, >> but I'm not worried that much. :-) > > Does this increase the chance of going to idle at higher frequency? > Say in the last rate limit window, we have a high request followed by > a low request. After the window closes, by this algorithm we ignore > the low request and take the higher valued request, and then enter > idle. Then, wouldn't we be idling at higher frequency? I guess if you > enter "cluster-idle" then probably this isn't a big deal (like on the > ARM64 platforms I am working on). But I wasn't sure how expensive is > entering C-states at higher frequency on Intel platforms is or if it > is even a concern. :-D It isn't a concern at all AFAICS. Thanks, Rafael
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web