CPU scaling and CPUfreq

Hi there,

I wondered if anyone got CPU scaling working, the Omnia is at max cpu-frequency all the time and never scales down to a resonable speed, which could save a lot of power.
But the kernel which nic.cz built has no module for it (at least as far as I can see) and so it is not possible to usw an ondemand or powersave govenor…

Has anyone gotten the scaling to work or tried it at least?

2 Likes

Well that’s question I have also. One thread solved here how to cool chip better by enhanced passive cooling. but from my point of view its not correct way. Correct is to have flexible power-management and possibility to underclock CPU on demand.

Would be interesting feature, I guess chipset in turris supports it.

There’s no support for frequency scaling for Armada XP or 38x in the kernel, yet… we would need a newer kernel or to backport these patches: http://lists.infradead.org/pipermail/linux-arm-kernel/2015-July/353871.html

edit: actually, the patches are applying quite well, only one little fix is needed - i’m currently testing stabilty with the patches, but looks good atm

Hi!

I have actually done that on summer in order to test power and thermal profile. Patches with few additional fixes for the Omnia board are here; https://github.com/tmshlvck/omnia-linux/tree/omnia-cpuclk .

Problem is, that it is considered unstable/dangerous feature and it didn’t reduce the overall power and thermal profile so much, to justify testing and stabilization effort needed in order to put it into mainline or/and TurrisOS. If somebody have time to test it extensively and possibly cleanup the work, I will be glad to re-send Gregory’s patches along with my fixes.

Another story is CPU idle support, which is also missing and it seems to be result of a HW bug somewhere in I/O subsystem and that has been temporarily resolved (quite a long time ago) by disabling the CPU idle in this patch https://patchwork.kernel.org/patch/6319581/ . We are investigating this issue in cooperation with Marvell, however I can’t make any guarantees or even assumptions o when or if ever it is going to be resolved without disabling the driver.

However it seems that even with CPU idle and with on-demand cpufreq driver it won’t make that big difference. Our experiments indicate that the difference between full power 1600MHz with 100% CPU utilization and idle at 800MHz was only 1-1.5 watts.

2 Likes

Cool, I suppose you needed to fix clock names that are / had been hardcoded somewhere. That’s exactly what I asked in the previous post. :slight_smile:

actually, no, the fix was a renamed function… interestingly the patch series from Gregory seems to work OOTB for me - at least i can see it switching between 800 and 1600 MHz and if i put the box under load and switch to 800MHz manually there’s a big temperature drop

may I ask why you think it’s dangerous?

Is it possible to overclock the processor up to 2GHz ?

1 Like

After the 3.6.0 update, cpufreq is on board.
Anyone could tell me how to use it?

1 Like

second to that, my CPU is on 0.1% - 0.2% all the time :slight_smile: Any guide will be appretiated

Read this: https://www.kernel.org/doc/Documentation/cpu-freq/user-guide.txt
Basically, you don’t need to do anything to activate it. You can change values by editing the files located at: “/sys/devices/system/cpu/cpu0/cpufreq/”.

1 Like

thanks for hints. On default configuration (min 800, max 1600, governor performance, driver cpufreq-dt) Ive got 0 transitions, running on 1600 all the time :frowning:

With those CPU values:

Is it working at all?

The CPUfreq governor “performance” sets the CPU statically to the
highest frequency within the borders of scaling_min_freq and
scaling_max_freq.

Source: https://www.kernel.org/doc/Documentation/cpu-freq/governors.txt
So try setting a different CPU governor like ondemand :wink:

1 Like

Mea culpa! I would expect that behauviour at all.

The system actually doesnt allow me write to these files… In repo there are no cpufrequtils or such…

cat /sys/devices/system/cpu/cpufreq/scaling_cur_freq
givs me 1600000
after
echo “ondemand” >> /sys/devices/system/cpu/cpufreq/scaling_governor

cat /sys/devices/system/cpu/cpufreq/scaling_cur_freq
givs me 800000

but temperature is still the same around 59C
and power consumption seems to be same too

1 Like

thanks, it looks like working now :slight_smile: Although I didnt observe much temp affect either, so at least on “paper” it works. Dunno if there isnt some other issue under.

root@Doma:/sys/devices/system/cpu/cpufreq/policy0# cat scaling_available_frequencies
800000 1600000

Those are just defaults, we can change it? Or are they given by HW limitations… I wouldnt like to mess something up :wink: