-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Description
I am running Arch ARM (armv7h) on both a Raspberry Pi 3 Model B Plus Rev 1.3 and a Raspberry Pi 2 Model B Rev 1.1. When I boot either of these using the identical micro SD, I find that under kernel version 4.14.29 (Arch ARM's official current version), the ondemand governor has the idle machine throttled up to the maximum frequency for that hardware as judged by running a simple script to query it and a few other parameters (shown at the bottom of the report). When I boot into kernel version 4.9.80 (that I built from be97feb), the idle frequency is the minimum as expected.
For example, when booted into kernel version 4.9.80 on the RPi3B+ (I get identical results on the RPi2):
% uptime
06:31:24 up 14 min, 1 users, load average: 0.00, 0.00, 0.01
% watch -t ~/bin/temps
CPU temp : 37°C
CPU freq : 600 MHz (ondemand)
Letting the watch command run for a few minutes, I never saw the frequency increase (as expected since the machine is idle).
Same hardware after booting into the 4.14.29 kernel:
% uptime
06:57:15 up 6 min, 1 user, load average: 0.00, 0.01, 0.00
% cat /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq
600000
% watch -t ~/bin/temps
CPU temp : 43°C
CPU freq : 1400 MHz (ondemand)
Letting the watch command run for a few minutes, I never saw the frequency decrease. As you see the idle temp is also higher under the this kernel.
The script ~/bin/temps is simply:
#!/bin/sh
freq=$(cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq)
gov=$(cat /sys/devices/system/cpu/cpufreq/policy0/scaling_governor)
temp=$(cat /sys/devices/virtual/thermal/thermal_zone0/temp)
echo "CPU temp : $(( temp / 1000 ))°C"
echo "CPU freq : $(bc <<< "scale=0; $freq/1000") MHz ($gov)"