Ustawianie profili procesora (cpufreq)

Dzisiejszy sprzęt lubi trochę prądu, szczególnie jeśli posiada kilka rdzeni. Jednym ze sposobów na ograniczenie prądożerności jest dynamiczne ustawianie częstotliwości procesora. Gdy nie potrzebujemy – wartość jest niska, ale gdy tylko zajdzie potrzeba automat przetaktowuje procesor w górę. To jak chętnie jest to robione zależy od konkretnego profilu, ale nie o tym ten wpis.

Jest kilka programów do tego, tylko po co, skoro starczy prosta funkcja w zsh? Wygląda to tak:

cpu() {
    local n_core=$( awk '{if(/processor/) r=$3}; END{print r+1}' /proc/cpuinfo )
    for ((i=0; i < $n_core; i++))
    do
        echo "$1" > /sys/devices/system/cpu/cpu$i/cpufreq/scaling_governor
    done
}
compdef '_arguments "1: :( $( cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors ) )"' cpu

Całość skryptu zadziała tylko w zsh – ze względu na ostatnią linijkę zawierającą dopełnianie polecenia, więc jeśli chcesz użyć tego w bashu pomiń ją.