Hello,

to justify the switch from interactive/ondemand to performance as default
cpufreq governor the following 2 year old sources are cited again and
again:

https://www.mail-archive.com/linux-sunxi@googlegroups.com/msg00492.html
    
https://www.mail-archive.com/linux-sunxi@googlegroups.com/msg00678.html
    http://www.cubieforums.com/index.php/topic,1413.msg8745.html#msg8745


Unfortunately they miss the dvfs settings used ‹ it seems all cpufreq
operating points shared the same voltage.

Using recent Allwinner SoCs with 3.4 kernel and reasonable dvfs settings
(adjusting core voltage depending on CPU clockspeed) it's obvious that it
makes a difference at which clockspeed the CPU idles since different
voltages lead to different consumption levels.

I have no multimeter that would be precise enough so I rely on the thermal
sensors in the 2 SoCs I used to show the difference the clockspeed makes
depending on dvfs settings.

I let a script walk through scaling_available_frequencies while being idle
and monitored temperature and in A83T's case also Vcore voltage. The
conclusion is obvious: What happens when switching between performance and
interactive/performance depends largely on the *voltage settings* defined
in the dvfs table.

This is a H3 with 'sane' dvfs settings on the left side and the commonly
used overvolted/overclocked settings the Orange Pi manufacturer chose to
advertise the H3 as being a '1.6 Ghz SoC':

http://kaiser-edv.de/tmp/h3vOAh/H3.png (on the left adjusted/sane
settings, on the right after a reboot at 19:15 the overvolted/overclocked
'defaults' every OS image for H3 boards is using ‹ this is where the heat
problems origin from the H3 is blamed for)


With sane settings the difference in idle temperature is 3°C (41°C at 480
Mhz and 44°C at 1200 Mhz), with 'default settings' (only two operating
points defined at the upper limit), the difference is 6°C (45°C at 480 Mhz
and 51°C at 1536 Mhz). Both dvfs tables as reference below [1] [2]

Since the A83T is accompanied by a PMU (AXP813) it's possible to monitor
Vcore voltage through sysfs. Here the core voltage is adjusted between
820mV at 480 Mhz and 1080mV at 1800 Mhz [3] and this results in a
difference of 4°C when being idle:

http://kaiser-edv.de/tmp/h3vOAh/A83T.png

It's obvious that consumption (SoC temperature) depends more on core
voltage than clock speed and therefore the switch to performance as
default governor seems like a waste of energy. A more sane approach would
be to stay with ondemand/interactive and adjust scaling_min_freq to the
operating point with the lowest voltage defined in the dvfs table (since
then no further saving can be achieved when clocking lower).

While I understand that switching to performance seemed like a good idea 2
years ago (OS images with fantasy governor and scaling_min_freq at 60 Mhz
in the wild) I doubt that it's still right when keeping voltage settings
in the dvfs table in mind.

Best regards,

Thomas

[1] Overvolted/overclocked default dvfs settings Xunlong (Orange Pi
manufacturer) used to promote the H3 as being able to clock up to 1.6 Ghz:

extremity_freq = 1536000000

LV1_freq = 1536000000
LV1_volt = 1500
LV2_freq = 1200000000
LV2_volt = 1300


[2] Attempt to define 'normal' dvfs settings for H3. Adjusting voltage
between 980mV at 480 Mhz and 1240mV at 1200 Mhz:

extremity_freq = 1296000000
max_freq = 1200000000
min_freq = 480000000
LV_count = 7
LV1_freq = 1296000000
LV1_volt = 1320
LV2_freq = 1200000000
LV2_volt = 1240
LV3_freq = 1104000000
LV3_volt = 1180
LV4_freq = 1008000000
LV4_volt = 1140
LV5_freq = 960000000
LV5_volt = 1080
LV6_freq = 816000000
LV6_volt = 1020
LV7_freq = 480000000
LV7_volt = 980


[3] A83T dvfs settings: 820mV at 480 Mhz and 1080mV at 1800 Mhz

[dvfs_table]
vf_table_count = 3

[vf_table0]
;little
L_max_freq = 2016000000
L_boot_freq = 1800000000
L_min_freq = 480000000

L_LV_count = 8

L_LV1_freq = 2016000000
L_LV1_volt = 1080

L_LV2_freq = 1800000000
L_LV2_volt = 1000

L_LV3_freq = 1608000000
L_LV3_volt = 920

L_LV4_freq = 1200000000
L_LV4_volt = 840

L_LV5_freq = 0
L_LV5_volt = 840

L_LV6_freq = 0
L_LV6_volt = 840

L_LV7_freq = 0
L_LV7_volt = 840

L_LV8_freq = 0
L_LV8_volt = 840

;big
B_max_freq = 2016000000
B_boot_freq = 1800000000
B_min_freq = 480000000

B_LV_count = 8

B_LV1_freq = 2016000000
B_LV1_volt = 1080

B_LV2_freq = 1800000000
B_LV2_volt = 1000

B_LV3_freq = 1608000000
B_LV3_volt = 920

B_LV4_freq = 1200000000
B_LV4_volt = 840

B_LV5_freq = 0
B_LV5_volt = 840

B_LV6_freq = 0
B_LV6_volt = 840

B_LV7_freq = 0
B_LV7_volt = 840

B_LV8_freq = 0
B_LV8_volt = 840

[vf_table1]
;little
L_max_freq = 2016000000
L_boot_freq = 1800000000
L_min_freq = 480000000

L_LV_count = 8

L_LV1_freq = 2016000000
L_LV1_volt = 1080

L_LV2_freq = 1800000000
L_LV2_volt = 1000

L_LV3_freq = 1608000000
L_LV3_volt = 920

L_LV4_freq = 1200000000
L_LV4_volt = 840

L_LV5_freq = 480000000
L_LV5_volt = 820

L_LV6_freq = 0
L_LV6_volt = 820

L_LV7_freq = 0
L_LV7_volt = 820

L_LV8_freq = 0
L_LV8_volt = 820

;big
;big
B_max_freq = 2016000000
B_boot_freq = 1800000000
B_min_freq = 480000000

B_LV_count = 8

B_LV1_freq = 2016000000
B_LV1_volt = 1080

B_LV2_freq = 1800000000
B_LV2_volt = 1000

B_LV3_freq = 1608000000
B_LV3_volt = 920

B_LV4_freq = 1200000000
B_LV4_volt = 840

B_LV5_freq = 480000000
B_LV5_volt = 820

B_LV6_freq = 0
B_LV6_volt = 820

B_LV7_freq = 0
B_LV7_volt = 820

B_LV8_freq = 0
B_LV8_volt = 820

[vf_table2]
;little
L_max_freq = 2208000000
L_min_freq = 480000000

L_LV_count = 8

L_LV1_freq = 2208000000
L_LV1_volt = 1080

L_LV2_freq = 2016000000
L_LV2_volt = 1000

L_LV3_freq = 1800000000
L_LV3_volt = 920

L_LV4_freq = 1368000000
L_LV4_volt = 840

L_LV5_freq = 0
L_LV5_volt = 840

L_LV6_freq = 0
L_LV6_volt = 840

L_LV7_freq = 0
L_LV7_volt = 840

L_LV8_freq = 0
L_LV8_volt = 840

;big
B_max_freq = 2208000000
B_min_freq = 480000000

B_LV_count = 8

B_LV1_freq = 2208000000
B_LV1_volt = 1080

B_LV2_freq = 2016000000
B_LV2_volt = 1000

B_LV3_freq = 1800000000
B_LV3_volt = 920

B_LV4_freq = 1368000000
B_LV4_volt = 840

B_LV5_freq = 0
B_LV5_volt = 840

B_LV6_freq = 0
B_LV6_volt = 840

B_LV7_freq = 0
B_LV7_volt = 840

B_LV8_freq = 0
B_LV8_volt = 840







-- 
You received this message because you are subscribed to the Google Groups 
"linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to linux-sunxi+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to