linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC][PATCH 0/3] c-state governor changes
@ 2012-08-23 21:11 Rik van Riel
  2012-08-23 21:11 ` [RFC][PATCH 1/3] cpuidle: fix underflow in stddev calculation Rik van Riel
                   ` (4 more replies)
  0 siblings, 5 replies; 8+ messages in thread
From: Rik van Riel @ 2012-08-23 21:11 UTC (permalink / raw)
  To: linux-kernel
  Cc: Rafael J. Wysocki, ShuoX Liu, mjg59, Boris Ostrovsky, Len Brown,
	Deepthi Dharwar, Arjan van de Ven

It turns out that the c-state governor can be a performance issue
with certain workloads.  The problem workloads seem to involve
mixed length pauses between activities, eg. an occasional long
idle period, with a burst of activity involving short idle periods.

One example of this would be a system with a web server and a
database, where the web server gets a request "every once in a
while" (compared to c-state timescales), and then quickly bounces
stuff back and forth between itself and the database, before
sending anything back to the http client.

On the face of it, the use of average sleep times does not make
a whole lot of sense, when we can have sleep patterns like this:

	150 200 50 1000 30 180 10000 220

The bulk of the sleep time is spent in the one long sleep, but
planning for a 1500us sleep time (around the average) is pretty
much guaranteed to be wrong.

Instead, it might make more sense to plan for a sleep time just
under 200us. We may still need some kind of demotion scheme to
kick us into a deeper c-state when a truly long sleep period
comes along...

This patch set is mostly there to kick off a discussion in time
for Kernel Summit.  When running it on my laptop, with acpi_idle,
I see a promising change in powertop.

Time spent in C3 has gone down from 99% of CPU time, to 97-98% CPU 
time, but the average residency time in C3 has gone up.  The other
1-2% of CPU time is spent in C2 instead.

I have not run any meaningful benchmarks against this code yet.
It has had a benchmark run where the workload presents regular
sleep intervals, and performs identically to the old code.

Please let me know what you think :)

-- 
All Rights Reversed

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

end of thread, other threads:[~2012-08-24  4:11 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-08-23 21:11 [RFC][PATCH 0/3] c-state governor changes Rik van Riel
2012-08-23 21:11 ` [RFC][PATCH 1/3] cpuidle: fix underflow in stddev calculation Rik van Riel
2012-08-23 21:13 ` [RFC][PATCH 2/3] cpuidle: find a typical recent sleep interval Rik van Riel
2012-08-23 21:13 ` [RFC][PATCH 3/3] cpuidle: count double the exit latency Rik van Riel
2012-08-23 21:54 ` [RFC][PATCH 0/3] c-state governor changes Arjan van de Ven
2012-08-24  2:57   ` Rik van Riel
2012-08-24  4:11   ` Matthew Garrett
2012-08-23 21:54 ` Arjan van de Ven

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