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

A graph

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

A graph

Doug's

A graph

Doug's - Proportianl gain = 40

A graph

Doug's - Proportional gain = 30

A graph

Doug's - Proportional gain = 25

A graph

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

A graph

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

A graph

Doug's

A graph

Doug's - Proportiional gain = 30

A graph

Doug's - Proportiional gain = 25

A graph

Doug's (Temporarily from kernel 3.15 doug 6. Left here on purpose.)

A graph

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

A graph

Doug's - Proportiional gain = 30

A graph

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

A graph

Doug's - Proportiional gain = 30

A graph

Conclusion: To be discussed.

The CPU is idle
Dirks's

A graph

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

A graph

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

A graph

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

A graph - not done yet

Doug's - Proportional gain = 30

A graph

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

A graph - not done yet

Doug's - Proportional gain = 30

A graph

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

A graph - not done yet

Doug's - Proportional gain = 30

A graph

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

A graph - not done yet

Doug's - Proportional gain = 30

A graph

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

A graph

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

A graph

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

A graph

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

A graph

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

A graph

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.

Linux Intel Pstate driver. Kernel 3.16rc1 Compare. WWW.Smythies.com emaildoesnotwork@smythies.com 2014.06.21 Updated 2014.07.04