linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* cpufreq governors broken with !CONFIG_SMP?
@ 2016-05-05 23:49 Steve Muckle
  2016-05-06  0:09 ` Rafael J. Wysocki
  0 siblings, 1 reply; 8+ messages in thread
From: Steve Muckle @ 2016-05-05 23:49 UTC (permalink / raw)
  To: Rafael J. Wysocki, Peter Zijlstra; +Cc: linux-kernel, linux-pm

While working on a few patches for schedutil I noticed that the CFS
cpufreq hooks depend on PELT, which depends on CONFIG_SMP.

I compiled and ran a UP kernel with intel_pstate. Running a cpu-bound
task did not result in the frequency increasing beyond fmin. For some reason
ondemand is working for me with the same test, not sure why yet.

It appears dbs/intel-pstate/schedutil have a dependency on CONFIG_SMP
now. Or am I missing something?

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: cpufreq governors broken with !CONFIG_SMP?
  2016-05-05 23:49 cpufreq governors broken with !CONFIG_SMP? Steve Muckle
@ 2016-05-06  0:09 ` Rafael J. Wysocki
  2016-05-06  0:25   ` Rafael J. Wysocki
  2016-05-06  0:25   ` Steve Muckle
  0 siblings, 2 replies; 8+ messages in thread
From: Rafael J. Wysocki @ 2016-05-06  0:09 UTC (permalink / raw)
  To: Steve Muckle, Peter Zijlstra; +Cc: linux-kernel, linux-pm

On Thursday, May 05, 2016 04:49:22 PM Steve Muckle wrote:
> While working on a few patches for schedutil I noticed that the CFS
> cpufreq hooks depend on PELT, which depends on CONFIG_SMP.
> 
> I compiled and ran a UP kernel with intel_pstate. Running a cpu-bound
> task did not result in the frequency increasing beyond fmin. For some reason
> ondemand is working for me with the same test, not sure why yet.
> 
> It appears dbs/intel-pstate/schedutil have a dependency on CONFIG_SMP
> now. Or am I missing something?

You're right AFAICS.

For governors other than schedutil fixing that would be a matter of
adding a !CONFIG_SMP variant of update_load_avg() that will call
cpufreq_update_util() and do nothing else.  It doesn't matter what
is passed via util and max then.

In turn, schedutil should probably depend on CONFIG_SMP.

Peter?

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: cpufreq governors broken with !CONFIG_SMP?
  2016-05-06  0:09 ` Rafael J. Wysocki
@ 2016-05-06  0:25   ` Rafael J. Wysocki
  2016-05-06 11:46     ` Peter Zijlstra
  2016-05-06  0:25   ` Steve Muckle
  1 sibling, 1 reply; 8+ messages in thread
From: Rafael J. Wysocki @ 2016-05-06  0:25 UTC (permalink / raw)
  To: Steve Muckle; +Cc: Peter Zijlstra, linux-kernel, linux-pm

On Friday, May 06, 2016 02:09:07 AM Rafael J. Wysocki wrote:
> On Thursday, May 05, 2016 04:49:22 PM Steve Muckle wrote:
> > While working on a few patches for schedutil I noticed that the CFS
> > cpufreq hooks depend on PELT, which depends on CONFIG_SMP.
> > 
> > I compiled and ran a UP kernel with intel_pstate. Running a cpu-bound
> > task did not result in the frequency increasing beyond fmin. For some reason
> > ondemand is working for me with the same test, not sure why yet.
> > 
> > It appears dbs/intel-pstate/schedutil have a dependency on CONFIG_SMP
> > now. Or am I missing something?
> 
> You're right AFAICS.
> 
> For governors other than schedutil fixing that would be a matter of
> adding a !CONFIG_SMP variant of update_load_avg() that will call
> cpufreq_update_util() and do nothing else.  It doesn't matter what
> is passed via util and max then.

Maybe something like the below, FWIW, as a quick fix for 4.6?

---
 kernel/sched/fair.c |    9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

Index: linux-pm/kernel/sched/fair.c
===================================================================
--- linux-pm.orig/kernel/sched/fair.c
+++ linux-pm/kernel/sched/fair.c
@@ -3030,7 +3030,14 @@ static int idle_balance(struct rq *this_
 
 #else /* CONFIG_SMP */
 
-static inline void update_load_avg(struct sched_entity *se, int update_tg) {}
+static inline void update_load_avg(struct sched_entity *se, int not_used)
+{
+	struct cfs_rq *cfs_rq = cfs_rq_of(se);
+	struct rq *rq = rq_of(cfs_rq);
+
+	cpufreq_trigger_update(rq_clock(rq));
+}
+
 static inline void
 enqueue_entity_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *se) {}
 static inline void

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: cpufreq governors broken with !CONFIG_SMP?
  2016-05-06  0:09 ` Rafael J. Wysocki
  2016-05-06  0:25   ` Rafael J. Wysocki
@ 2016-05-06  0:25   ` Steve Muckle
  2016-05-06  0:39     ` Rafael J. Wysocki
  2016-05-06 11:49     ` Peter Zijlstra
  1 sibling, 2 replies; 8+ messages in thread
From: Steve Muckle @ 2016-05-06  0:25 UTC (permalink / raw)
  To: Rafael J. Wysocki; +Cc: Steve Muckle, Peter Zijlstra, linux-kernel, linux-pm

On Fri, May 06, 2016 at 02:09:07AM +0200, Rafael J. Wysocki wrote:
> In turn, schedutil should probably depend on CONFIG_SMP.

In the long term I wonder if it's worth putting PELT under its own
separate feature or just removing #ifdef CONFIG_SMP.

Aside from task migration CPU frequency updates there's also task
creation and deletion which would apply on UP. The tunable
infrastructure being created for scheduler-guided frequency may be of
interest on UP also.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: cpufreq governors broken with !CONFIG_SMP?
  2016-05-06  0:25   ` Steve Muckle
@ 2016-05-06  0:39     ` Rafael J. Wysocki
  2016-05-06 11:49     ` Peter Zijlstra
  1 sibling, 0 replies; 8+ messages in thread
From: Rafael J. Wysocki @ 2016-05-06  0:39 UTC (permalink / raw)
  To: Steve Muckle; +Cc: Peter Zijlstra, linux-kernel, linux-pm

On Thursday, May 05, 2016 05:25:19 PM Steve Muckle wrote:
> On Fri, May 06, 2016 at 02:09:07AM +0200, Rafael J. Wysocki wrote:
> > In turn, schedutil should probably depend on CONFIG_SMP.
> 
> In the long term I wonder if it's worth putting PELT under its own
> separate feature or just removing #ifdef CONFIG_SMP.
> 
> Aside from task migration CPU frequency updates there's also task
> creation and deletion which would apply on UP. The tunable
> infrastructure being created for scheduler-guided frequency may be of
> interest on UP also.

I agree, but I was talking short-term. :-)

We need to fix this for 4.6 (which most likely is 2 weeks away only) and
I don't think it hurts anyone if schedutil depends on CONFIG_SMP to start
with.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: cpufreq governors broken with !CONFIG_SMP?
  2016-05-06  0:25   ` Rafael J. Wysocki
@ 2016-05-06 11:46     ` Peter Zijlstra
  2016-05-06 11:49       ` Rafael J. Wysocki
  0 siblings, 1 reply; 8+ messages in thread
From: Peter Zijlstra @ 2016-05-06 11:46 UTC (permalink / raw)
  To: Rafael J. Wysocki; +Cc: Steve Muckle, linux-kernel, linux-pm

On Fri, May 06, 2016 at 02:25:16AM +0200, Rafael J. Wysocki wrote:
> On Friday, May 06, 2016 02:09:07 AM Rafael J. Wysocki wrote:
> > On Thursday, May 05, 2016 04:49:22 PM Steve Muckle wrote:
> > > While working on a few patches for schedutil I noticed that the CFS
> > > cpufreq hooks depend on PELT, which depends on CONFIG_SMP.

> > For governors other than schedutil fixing that would be a matter of
> > adding a !CONFIG_SMP variant of update_load_avg() that will call
> > cpufreq_update_util() and do nothing else.  It doesn't matter what
> > is passed via util and max then.
> 
> Maybe something like the below, FWIW, as a quick fix for 4.6?

Right; I suppose that'll have to do for 4.6.

> ---
>  kernel/sched/fair.c |    9 ++++++++-
>  1 file changed, 8 insertions(+), 1 deletion(-)
> 
> Index: linux-pm/kernel/sched/fair.c
> ===================================================================
> --- linux-pm.orig/kernel/sched/fair.c
> +++ linux-pm/kernel/sched/fair.c
> @@ -3030,7 +3030,14 @@ static int idle_balance(struct rq *this_
>  
>  #else /* CONFIG_SMP */
>  
> -static inline void update_load_avg(struct sched_entity *se, int update_tg) {}
> +static inline void update_load_avg(struct sched_entity *se, int not_used)
> +{
> +	struct cfs_rq *cfs_rq = cfs_rq_of(se);
> +	struct rq *rq = rq_of(cfs_rq);
> +
> +	cpufreq_trigger_update(rq_clock(rq));
> +}
> +
>  static inline void
>  enqueue_entity_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *se) {}
>  static inline void
> 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: cpufreq governors broken with !CONFIG_SMP?
  2016-05-06  0:25   ` Steve Muckle
  2016-05-06  0:39     ` Rafael J. Wysocki
@ 2016-05-06 11:49     ` Peter Zijlstra
  1 sibling, 0 replies; 8+ messages in thread
From: Peter Zijlstra @ 2016-05-06 11:49 UTC (permalink / raw)
  To: Steve Muckle; +Cc: Rafael J. Wysocki, linux-kernel, linux-pm

On Thu, May 05, 2016 at 05:25:19PM -0700, Steve Muckle wrote:
> On Fri, May 06, 2016 at 02:09:07AM +0200, Rafael J. Wysocki wrote:
> > In turn, schedutil should probably depend on CONFIG_SMP.
> 
> In the long term I wonder if it's worth putting PELT under its own
> separate feature or just removing #ifdef CONFIG_SMP.

Probably should do that eventually yeah. It started out with being
smp&&cgroup only, then we started using it for regular balancing and it
became smp, and since we're now wanting to use it for pretty much
everything we should just remove that.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: cpufreq governors broken with !CONFIG_SMP?
  2016-05-06 11:46     ` Peter Zijlstra
@ 2016-05-06 11:49       ` Rafael J. Wysocki
  0 siblings, 0 replies; 8+ messages in thread
From: Rafael J. Wysocki @ 2016-05-06 11:49 UTC (permalink / raw)
  To: Peter Zijlstra
  Cc: Rafael J. Wysocki, Steve Muckle, Linux Kernel Mailing List, linux-pm

On Fri, May 6, 2016 at 1:46 PM, Peter Zijlstra <peterz@infradead.org> wrote:
> On Fri, May 06, 2016 at 02:25:16AM +0200, Rafael J. Wysocki wrote:
>> On Friday, May 06, 2016 02:09:07 AM Rafael J. Wysocki wrote:
>> > On Thursday, May 05, 2016 04:49:22 PM Steve Muckle wrote:
>> > > While working on a few patches for schedutil I noticed that the CFS
>> > > cpufreq hooks depend on PELT, which depends on CONFIG_SMP.
>
>> > For governors other than schedutil fixing that would be a matter of
>> > adding a !CONFIG_SMP variant of update_load_avg() that will call
>> > cpufreq_update_util() and do nothing else.  It doesn't matter what
>> > is passed via util and max then.
>>
>> Maybe something like the below, FWIW, as a quick fix for 4.6?
>
> Right; I suppose that'll have to do for 4.6.

OK, thanks!

I'll resend it with a changelog and stuff then.

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2016-05-06 11:49 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-05-05 23:49 cpufreq governors broken with !CONFIG_SMP? Steve Muckle
2016-05-06  0:09 ` Rafael J. Wysocki
2016-05-06  0:25   ` Rafael J. Wysocki
2016-05-06 11:46     ` Peter Zijlstra
2016-05-06 11:49       ` Rafael J. Wysocki
2016-05-06  0:25   ` Steve Muckle
2016-05-06  0:39     ` Rafael J. Wysocki
2016-05-06 11:49     ` Peter Zijlstra

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).