Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1208143 > unrolled thread

Re: [RFCv5 PATCH 40/46] sched/cpufreq_sched: compute freq_new based on capacity_orig_of()

Started byPeter Zijlstra <peterz@infradead.org>
First post2015-08-15 22:00 +0200
Last post2015-08-17 14:20 +0200
Articles 4 — 3 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.


Contents

  Re: [RFCv5 PATCH 40/46] sched/cpufreq_sched: compute freq_new based  on capacity_orig_of() Peter Zijlstra <peterz@infradead.org> - 2015-08-15 22:00 +0200
    Re: [RFCv5 PATCH 40/46] sched/cpufreq_sched: compute freq_new based on  capacity_orig_of() Michael Turquette <mturquette@baylibre.com> - 2015-08-16 06:10 +0200
      Re: [RFCv5 PATCH 40/46] sched/cpufreq_sched: compute freq_new based  on capacity_orig_of() Peter Zijlstra <peterz@infradead.org> - 2015-08-17 00:10 +0200
        Re: [RFCv5 PATCH 40/46] sched/cpufreq_sched: compute freq_new based  on capacity_orig_of() Juri Lelli <juri.lelli@arm.com> - 2015-08-17 14:20 +0200

#1208143 — Re: [RFCv5 PATCH 40/46] sched/cpufreq_sched: compute freq_new based on capacity_orig_of()

FromPeter Zijlstra <peterz@infradead.org>
Date2015-08-15 22:00 +0200
SubjectRe: [RFCv5 PATCH 40/46] sched/cpufreq_sched: compute freq_new based on capacity_orig_of()
Message-ID<pXPMv-2Vm-37@gated-at.bofh.it>
On Tue, Jul 07, 2015 at 07:24:23PM +0100, Morten Rasmussen wrote:
> diff --git a/kernel/sched/cpufreq_sched.c b/kernel/sched/cpufreq_sched.c
> index 2968f3a..7071528 100644
> --- a/kernel/sched/cpufreq_sched.c
> +++ b/kernel/sched/cpufreq_sched.c
> @@ -184,7 +184,7 @@ void cpufreq_sched_set_cap(int cpu, unsigned long capacity)
>  		goto out;
>  
>  	/* Convert the new maximum capacity request into a cpu frequency */
> -	freq_new = capacity * policy->max >> SCHED_CAPACITY_SHIFT;
> +	freq_new = (capacity * policy->max) / capacity_orig_of(cpu);
>  
>  	/* No change in frequency? Bail and return current capacity. */
>  	if (freq_new == policy->cur)

Can't we avoid exporting that lot by simply passing in the right values
to begin with?
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [next] | [standalone]


#1208199 — Re: [RFCv5 PATCH 40/46] sched/cpufreq_sched: compute freq_new based on capacity_orig_of()

FromMichael Turquette <mturquette@baylibre.com>
Date2015-08-16 06:10 +0200
SubjectRe: [RFCv5 PATCH 40/46] sched/cpufreq_sched: compute freq_new based on capacity_orig_of()
Message-ID<pXXqF-5FD-1@gated-at.bofh.it>
In reply to#1208143
Quoting Peter Zijlstra (2015-08-15 05:46:38)
> On Tue, Jul 07, 2015 at 07:24:23PM +0100, Morten Rasmussen wrote:
> > diff --git a/kernel/sched/cpufreq_sched.c b/kernel/sched/cpufreq_sched.c
> > index 2968f3a..7071528 100644
> > --- a/kernel/sched/cpufreq_sched.c
> > +++ b/kernel/sched/cpufreq_sched.c
> > @@ -184,7 +184,7 @@ void cpufreq_sched_set_cap(int cpu, unsigned long capacity)
> >               goto out;
> >  
> >       /* Convert the new maximum capacity request into a cpu frequency */
> > -     freq_new = capacity * policy->max >> SCHED_CAPACITY_SHIFT;
> > +     freq_new = (capacity * policy->max) / capacity_orig_of(cpu);
> >  
> >       /* No change in frequency? Bail and return current capacity. */
> >       if (freq_new == policy->cur)
> 
> Can't we avoid exporting that lot by simply passing in the right values
> to begin with?

By "right value" do you mean, "pass the frequency from cfs"?

If that is what you mean, then the answer is "yes". But it also means
that cfs will need access to either:

1) the cpu frequncy-domain topology described in struct cpufreq.cpus
OR
2) duplicate that frequency-domain knowledge, perhaps in sched_domain

If that isn't what you mean by "right value" then let me know.

Regards,
Mike

> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1208281

FromPeter Zijlstra <peterz@infradead.org>
Date2015-08-17 00:10 +0200
Message-ID<pYehP-4Ic-13@gated-at.bofh.it>
In reply to#1208199
On Sat, Aug 15, 2015 at 09:03:33PM -0700, Michael Turquette wrote:
> Quoting Peter Zijlstra (2015-08-15 05:46:38)
> > On Tue, Jul 07, 2015 at 07:24:23PM +0100, Morten Rasmussen wrote:
> > > diff --git a/kernel/sched/cpufreq_sched.c b/kernel/sched/cpufreq_sched.c
> > > index 2968f3a..7071528 100644
> > > --- a/kernel/sched/cpufreq_sched.c
> > > +++ b/kernel/sched/cpufreq_sched.c
> > > @@ -184,7 +184,7 @@ void cpufreq_sched_set_cap(int cpu, unsigned long capacity)
> > >               goto out;
> > >  
> > >       /* Convert the new maximum capacity request into a cpu frequency */
> > > -     freq_new = capacity * policy->max >> SCHED_CAPACITY_SHIFT;
> > > +     freq_new = (capacity * policy->max) / capacity_orig_of(cpu);
> > >  
> > >       /* No change in frequency? Bail and return current capacity. */
> > >       if (freq_new == policy->cur)
> > 
> > Can't we avoid exporting that lot by simply passing in the right values
> > to begin with?
> 
> By "right value" do you mean, "pass the frequency from cfs"?

Nah, just maybe: (capacity << SCHED_CAPACITY_SHIFT) / capacity_orig_of()
such that you don't have to export that knowledge to this thing.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1208564

FromJuri Lelli <juri.lelli@arm.com>
Date2015-08-17 14:20 +0200
Message-ID<pYryq-737-7@gated-at.bofh.it>
In reply to#1208281
On 16/08/15 21:24, Peter Zijlstra wrote:
> On Sat, Aug 15, 2015 at 09:03:33PM -0700, Michael Turquette wrote:
>> Quoting Peter Zijlstra (2015-08-15 05:46:38)
>>> On Tue, Jul 07, 2015 at 07:24:23PM +0100, Morten Rasmussen wrote:
>>>> diff --git a/kernel/sched/cpufreq_sched.c b/kernel/sched/cpufreq_sched.c
>>>> index 2968f3a..7071528 100644
>>>> --- a/kernel/sched/cpufreq_sched.c
>>>> +++ b/kernel/sched/cpufreq_sched.c
>>>> @@ -184,7 +184,7 @@ void cpufreq_sched_set_cap(int cpu, unsigned long capacity)
>>>>               goto out;
>>>>  
>>>>       /* Convert the new maximum capacity request into a cpu frequency */
>>>> -     freq_new = capacity * policy->max >> SCHED_CAPACITY_SHIFT;
>>>> +     freq_new = (capacity * policy->max) / capacity_orig_of(cpu);
>>>>  
>>>>       /* No change in frequency? Bail and return current capacity. */
>>>>       if (freq_new == policy->cur)
>>>
>>> Can't we avoid exporting that lot by simply passing in the right values
>>> to begin with?
>>
>> By "right value" do you mean, "pass the frequency from cfs"?
> 
> Nah, just maybe: (capacity << SCHED_CAPACITY_SHIFT) / capacity_orig_of()
> such that you don't have to export that knowledge to this thing.
> 

Oh, right. I guess we can just go with something like:

 req_cap = get_cpu_usage(cpu) * capacity_margin / capacity_orig_of(cpu);

on fair.c side and switch back to

 freq_new = capacity * policy->max >> SCHED_CAPACITY_SHIFT;

on cpufreq_sched.c side. That saves us exporting capacity_orig_of().

Thanks,

- Juri

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web