Re: [RFC PATCHC 3/3] sched/fair: use the idle state info to choose the idlest cpu

From: Daniel Lezcano
Date: Fri Apr 18 2014 - 09:04:33 EST


On 04/18/2014 02:53 PM, Peter Zijlstra wrote:
On Fri, Apr 18, 2014 at 02:13:48PM +0200, Daniel Lezcano wrote:
On 04/18/2014 11:38 AM, Peter Zijlstra wrote:
On Thu, Apr 17, 2014 at 12:21:28PM -0400, Nicolas Pitre wrote:
CPU topology is needed to properly describe scheduling domains. Whether
we balance across domains or pack using as few domains as possible is a
separate issue. In other words, you shouldn't have to care in this
patch series.

And IMHO coupled C-state is a low-level mechanism that should remain
private to cpuidle which the scheduler shouldn't be aware of.

I'm confused.. why wouldn't you want to expose these?

The couple C-state is used as a mechanism for cpuidle to sync the cpus when
entering a specific c-state. This mechanism is usually used to handle the
cluster power down. It is only used for a two drivers (soon three) but it is
not the only mechanism used for syncing the cpus. There are also the MCPM
(tc2), the hand made sync when the hardware allows it (ux500), and an
abstraction from the firmware (mwait), transparent to the kernel.

Taking into account the couple c-state only does not make sense because of
the other mechanisms above. This is why it should stay inside the cpuidle
framework.

The extension of the cpu topology will provide a generic way to describe and
abstracting such dependencies.

Does it answer your question ?

I suppose so; its still a bit like we won't but we will :-)

So we _will_ actually expose coupled C states through the topology bits,
that's good.

Ah, ok. I think I understood where the confusion is coming from.

A couple of definitions for the same thing :)

1. Coupled C-states : *mechanism* implemented in the cpuidle framework: drivers/cpuidle/coupled.c

2. Coupled C-states : *constraint* to reach a cluster power down state, will be described through the topology and could be implemented by different mechanism (MCPM, handmade sync, cpuidle-coupled-c-state, firmware).

We want to expose 2. not 1. to the scheduler.



--
<http://www.linaro.org/> Linaro.org â Open source software for ARM SoCs

Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog

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