I’m posting this largely because all the documentation I can find, and the discussions around this appear to be out of date, or at least not entirely accurate.
I run a Ubuntu server as my home NAS, storage server, general do things host, and for development work on some sites I maintain. It’s built around an Intel Xeon E3-1220 v2, 16 GB of DDR3 RAM and storage running on ZFS.
By default, Ubuntu runs a process on boot called ondemand (/etc/init.d/ondemand
). The process is simple enough, it’s a 73 line shell script that basically looks at the available CPU governors (/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
).
It then looks at what governors are available and if either “interactive”, “ondemand”, or “powersave” are, it sets those governors in that order.
So for example, if you have an E3-1220 v2; then the output of /sys/.../scaling_available_governors
will be powersave perforamnce
.
Since powersave shows up in the available list, it will then echo that to /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
.
So far all this seems reasonable, in a sense, and for older CPUs or maybe AMD or ARM cpus (I don’t know about this one for sure, as I don’t have any AMD or ARM systems) this may be the ideal way to go about getting the clocks on the CPU to scale dynamically.