From: Arjan van de Ven <arjan@linux.intel.com>
To: David C Niemi <dniemi@verisign.com>
Cc: dirk.brandewie@gmail.com, cpufreq@vger.kernel.org, rjw@sisk.pl,
deneen.t.dock@intel.com
Subject: Re: [PATCH RFC 0/1] cpufreq/x86: Add P-state driver for sandy bridge.
Date: Thu, 06 Dec 2012 08:27:13 -0800 [thread overview]
Message-ID: <50C0C761.8000501@linux.intel.com> (raw)
In-Reply-To: <50C0B34D.5020406@verisign.com>
On 12/6/2012 7:01 AM, David C Niemi wrote:
>
> My point is that performance vs. power is not just a linear continuum of preferences. How idle and full speed are handled are of particular importance in many applications.
>
> I think we both agree the existing governors are obsolete and do things the wrong way. But we attach different meanings to "policy" and may have different ideas of what should be.
>
> I think of policy as very high level and totally compatible with a variety of very different hardware implementations. The minimum a true high-level policy "governor" would need to do is this:
> a) determine what the hardware's capabilities are (init)
> b) provide a configuration interface analogous to what we have now but much higher-level and less frequency-centric
> c) assess system load on an ongoing basis.
> d) control the power management driver based on the user preferences and the system load pattern.
>
> The lines between governor and driver could be drawn in various places, but the point of having some sort of governor is to not have to reimplement the whole stack for every driver.
the sad part is that this is where reality has caught up with the nice theory.
hardware keeps innovating/changing around power behavior... very very fundamentally.
When we started CPUFREQ (yes I was there ;-) ) we had the assumption that a clean split between hardware and governor
was possible. Even back then, Linus balked at that and made us change it at least somewhat.... the Transmeta
CPUs at the time showed enough differences already to break. We made, at the time, the minimal changes possible.
But really the whole idea does not work out.
>
> The exposed configuration interface might be as simple as choosing one of several discrete settings:
> - max single-threaded performance
> - max multi-threaded performance
these are identical on todays silicon btw; or rather, this is not a P state choice item, but a task scheduler policy item.
> - "server" setting -- save power but only in ways that do not affect performance
this is a fiction btw... if there was a way to reduce power and not affect performance, that's your "max performance" setting.
anything else will sacrifice SOME performance from max...
> - "default" -- a good general-purpose middle of the road setting that performs pretty well and also saves power
... so you end up at this one.
> - "on battery" setting -- provide good interactive responsiveness but aggressively save power, potentially making long-running tasks take longer
battery has nothing to do with power preference. Just ask any data center operator.
> The above is what I think of as policy. There is nothing hardware-specific about these.
> These say nothing directly about what frequency to run or whether to use P-States.
and defining a common policy interface I'm quite fine with (not quite in the way you defined it, but ok...)
But that's not going to lead to a common implementation as a "governor" ;-(
My idea for a policy "dial" is mostly
* Uncompromised performance
* Balanced - biased towards performance (say, defined to be lowest power at most a 2 1/2% perf hit)
* Balanced (say, at most a 5% perf hit)
* Balanced - biased towards lower power (sat, at most a 10% perf hit)
* Uncompromised lowest power
we can argue about the exact %ages, but the idea is to give at least some reasonably definition that people can understand,
but that also can be measured
next prev parent reply other threads:[~2012-12-06 16:27 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-05 19:01 [PATCH RFC 0/1] cpufreq/x86: Add P-state driver for sandy bridge dirk.brandewie
2012-12-05 19:01 ` [PATCH RFC 1/1] " dirk.brandewie
2012-12-05 20:28 ` [PATCH RFC 0/1] " David C Niemi
2012-12-05 21:01 ` Arjan van de Ven
2012-12-05 21:40 ` David C Niemi
2012-12-05 21:54 ` Arjan van de Ven
2012-12-06 15:01 ` David C Niemi
2012-12-06 16:27 ` Arjan van de Ven [this message]
2012-12-06 17:30 ` David C Niemi
2012-12-06 17:41 ` Arjan van de Ven
2012-12-06 18:25 ` Dirk Brandewie
2012-12-06 18:41 ` David C Niemi
2012-12-06 21:35 ` Dirk Brandewie
2012-12-06 22:23 ` David C Niemi
2012-12-06 20:45 ` Rafael J. Wysocki
2012-12-06 21:15 ` Arjan van de Ven
2012-12-06 21:26 ` Rafael J. Wysocki
2012-12-06 21:34 ` Rafael J. Wysocki
2012-12-06 22:08 ` Arjan van de Ven
2012-12-06 22:53 ` Rafael J. Wysocki
2012-12-06 16:35 ` Dirk Brandewie
2012-12-06 16:49 ` Arjan van de Ven
2012-12-06 18:16 ` David C Niemi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=50C0C761.8000501@linux.intel.com \
--to=arjan@linux.intel.com \
--cc=cpufreq@vger.kernel.org \
--cc=deneen.t.dock@intel.com \
--cc=dirk.brandewie@gmail.com \
--cc=dniemi@verisign.com \
--cc=rjw@sisk.pl \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).