Linux Intel Pstate driver. Kernel 3.16rc1 Compare. WWW.Smythies.com
This web page has various test results comparing two versions of the intel_pstate driver stacked onto a baseline.
The exact details of the differences are contained herein, but rather are on the e-mail threads.
This page does not contain all the tests and comparisions of the two versions, only my test results. Others are doing different tests and comparisions.
The two versions will be referred to as "Dirk's" and "Doug's".
Note: Testing was started with "Dirk's", and I will repost some comparitive results from the 3.15 doug 6 kernel until I am able to do the tests and replace with results from "Doug's" (they should be similar).
phoronix ffmpeg test:
Dirk's = 13.41 seconds (average of 10 runs, after normal rejection of run 1)
Doug's = 13.35 seconds (average of 10 runs, after normal rejection of run 1)
Doug's 2 = 13.69 seconds (average of 10 runs, after normal rejection of run 1)
Doug's 3 = 18.98 seconds (average of 10 runs, after normal rejection of run 1)
ACPI CPUFREQ ONDEMAND = 18.80
Conclusion: we no longer carea wash.
Clean compile the kernel (not the phoronix test, I do not have that one installed):
Dirk's: Real: 20 minutes 37.5 seconds : User: 114 minutes 36.6 seconds : Sys: 9 minutes 33.7 seconds
Doug's: Real: 20 minutes 42.1 seconds : User: 114 minutes 16.9 seconds : Sys: 9 minutes 34.3 seconds
Doug's 2: Real: 20 minutes 53.6 seconds : User: 114 minutes 34.6 seconds : Sys: 9 minutes 37.3 seconds
Doug's 3: Real: 21 minutes 3.7 seconds : User: 114 minutes 38.1 seconds : Sys: 9 minutes 40.6 seconds (Sample rate = 20 milliseconds)
Doug's 3: Real: 20 minutes 59.6 seconds : User: 114 minutes 34.88 seconds : Sys: 9 minutes 37.9 seconds (Sample rate = 12 milliseconds)
Conclusion: Very little cost for doug 3 method.
NOTE: I need some time to re-run the "Doug" tests with a higher proportional gain. (or a different setpoint, in the end the effect is the same. I decided to modify p_gain because there is more resolution.)
The CPU load starts at 0.5% and increases to 99% in steps of 0.5% at 10 second per step.
The frequency of the CPU being loaded verses unloaded is 50 Hertz.
Dirk's

Doug's 3 C0 Inclusion threshold 50% - Proportional gain = 30

Doug's

Doug's - Proportianl gain = 40

Doug's - Proportional gain = 30

Doug's - Proportional gain = 25

Conclusion: To be discussed.
The CPU load starts at 0.5% and increases to 99% in steps of 0.5% at 10 seconds per step.
The frequency of the CPU being loaded verses unloaded is 200 Hertz.
Dirks's

Doug's 3 C0 Inclusion threshold 50% - Proportiional gain = 30

Doug's

Doug's - Proportiional gain = 30

Doug's - Proportiional gain = 25

Doug's (Temporarily from kernel 3.15 doug 6. Left here on purpose.)
Observations: Dirk's response curve is very sharp, and very similar to when min=max=100%. The suggestion is why not just do this:
If not profoundly idle
Then If turbo on
Then target pstate = max (38 for me)
Else target pstate = max for turbo off (34 for me)
Else target pstate = min (16 for me)
Although, in one of the phone calls Dirk said power/performance is not optimal in that case (it is still on my list to verify for myself).
Doug's doesn't step up to the max pstate soon enough. Needs more gain or setpoint change due to math changes. The previous test from the kernel 3.15 version has been left for comparision.
Conclusion: To be discussed.
The CPU load is 6%
The frequency of the CPU being loaded verses unloaded starts at 2 Hz and increases to 250 Hz in steps of 1 Hz at 10 seconds per step.
Dirks's

Doug's - Proportiional gain = 30

Observations: Obviously at some point the CPU frequency will oscillate. What criteria is desired here?
Conclusion: To be discussed.
The CPU load is 85%
The frequency of the CPU being loaded verses unloaded starts at 2 Hz and increases to 250 Hz in steps of 1 Hz at 10 seconds per step.
Dirks's

Doug's - Proportiional gain = 30

Conclusion: To be discussed.
The CPU is idle
Dirks's

Doug's - (CO threshold 25%, Proportiional gain = 30)

Doug's - from kernel 3.15 doug 6 - to compare

Conclusion: To be discussed.
Turbo off: The CPU load starts at 0.5% and increases to 99% in steps of 0.5% at 10 second per step.
The frequency of the CPU being loaded verses unloaded is 50 Hertz.
Dirk's
- not done yet
Doug's - Proportional gain = 30

Turbo off: The CPU load starts at 0.5% and increases to 99% in steps of 0.5% at 10 second per step.
The frequency of the CPU being loaded verses unloaded is 200 Hertz.
Dirk's
- not done yet
Doug's - Proportional gain = 30

Fixed work packet: If the CPU frequency were locked at the minimum then the CPU load starts at approximatley 0.5% and increases to 99% in steps of 0.5% at 10 second per step.
However, the CPU frequency is NOT locked. This more closely simulates real world periodic tasks.
The frequency of the CPU being loaded verses unloaded is 50 Hertz. Turbo off.
Dirk's
- not done yet
Doug's - Proportional gain = 30

Fixed work packet: If the CPU frequency were locked at the minimum then the CPU load starts at approximatley 0.5% and increases to 99% in steps of 0.5% at 10 second per step.
However, the CPU frequency is NOT locked. This more closely simulates real world periodic tasks.
The frequency of the CPU being loaded verses unloaded is 50 Hertz. Turbo on.
Dirk's
- not done yet
Doug's - Proportional gain = 30

Doug's - Proportional gain = 30; C0 threshold = 50%; c0_4 and c0_5 extra delay terms

Doug's - Proportional gain = 30; C0 threshold = 25%; c0_4 and c0_5 extra delay terms

Doug's - Proportional gain = 30; C0 threshold = 25%; only c0_1 and c0_2 delay terms

Doug's - Proportional gain = 30; C0 threshold = 25%; No delay terms

Doug's - Proportional gain = 30; C0 threshold = 25%; original c0_1, c0_2 and c0_3 delay terms

References:
Script used to ramp cpu load.
Script used to ramp cpu sleep / load frequency.
Program used to create load ramp script.
Program used to create sleep / load frequency script.
Consume Program.
Hacked consume Program - for fixed work packet. (Note: must be calibrated for users processor)
CPU frequency monitoring program.
Energy curve script.