I have recently decided to turn my old Xeon E3-1241 v3 into a NAS. For obvious reasons I want it to use as little power as possible so I have gone into the bios and I have lowered the clock speed to 800MHz. This part is completely fine, my wall meter shows the machine pulling ~60W in the BIOS.
Now when I go to boot the machine, somehow the Ubuntu boot process completely overrides the BIOS set multiplier and happily pulls ~140W from the wall for the duration of the the boot.
As soon as it finishes the boot process it hits my crontab
@reboot /usr/sbin/cpufreq-set -u 0.8Ghz which sets it back to my BIOS defined settings. To prevent it from swapping back to ondemand at the 60 second mark I have removed
/etc/init.d/ondemand. It now happily stays at 800MHz and 45-60W all of the time except when it is booting. Perfect.. Almost.
I need to force it to stay at 800MHz even while booting as I intend to set a lower vCore Voltage to save even more power (and prolong the CPU/VRM/Motherboard lifespans) however I cannot for the life of me work out why it overrides the BIOS settings during boot. Currently when it tries to boot with my low vCore voltage it panics about half of the time as its trying to run the CPU at the full 3.5GHz for the duration of the boot process. My wall meter confirms the reading of high current pull during boot and since the machine has nothing other than the SSD and server graphics card installed, at this point we can rule out most other factors being the cause (They are under 10W total).
It only enters this full power state for around 1 second before it hits my crontab/rc.local and is set back to 800MHz. Sadly due to the low vCore voltage the completion of boot process is a bit hit or miss.
Having done a fair amount of experimentation I have found that most ways of controlling the clock work such as
echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq. Adding them to crontab/rc.local/init.d work mostly however the above mentioned second is still of issue.