siehe auch: https://www.kernel.org/doc/html/v4.18/admin-guide/pm/sleep-states.html
Standardeinstellung:
cpufreq-set -g ondemand
Verfügbare Governors
den Governor von Hand auf maximale Sparsamkeit umstellen:
for i in $(ls /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor);do echo powersave > ${i} ; done
die maximale Taktfrequenz von Hand auf den Wert der minimalen Taktfrequenz begrenzen, dann kann sie kein Dienst mehr erhöhen:
for i in $(ls /sys/devices/system/cpu/cpu*/cpufreq/scaling_min_freq);do cat ${i} > $(dirname ${i})/scaling_max_freq ; done
die Taktfrequenz manuell minimalisieren und den Governor auf maximale Sparsamkeit umstellen:
cpufreq-set -d $(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq) -g powersave
ich habe die Info-Ausgabe auf das nötigste reduziert:
> /home/bin/cpufreq-info.sh CPU 0: Taktik: powersave 800 MHz CPU 1: Taktik: powersave 800 MHz CPU 2: Taktik: powersave 800 MHz CPU 3: Taktik: powersave 800 MHz
um das Skript als Monitor zu nutzen kann man diesen Aufruf verwenden:
> watch -n1 /home/bin/cpufreq-info.sh
wenn ich nur auf Batterie arbeite, dann schalte ich auf das Powersave-Profil um:
> sudo /etc/sudoers.d/powersave
bin ich wieder an der Steckdose, dann schalte ich wieder auf das Standard-Profil zurück:
> sudo /etc/sudoers.d/ondemand
Hier zeige ich alle Dateien, die nötig sind:
> vi /etc/sudoers.d/powersave ALL ALL = NOPASSWD:/root/bin/cpufreq-powersave.sh
> vi /etc/sudoers.d/ondemand ALL ALL = NOPASSWD:/root/bin/cpufreq-ondemand.sh
> vi /root/bin/cpufreq-info.sh
#!/bin/bash
cpufreq-info | sed 's/analysiere CPU/³ ³analysiere CPU/g' | tr -d '\n' | tr -s '³' '\n' | sed -n '/analysiere CPU/,/momentane Taktfrequenz/p' | sed 's/momentane Takt/³momentane Takt/g' | tr -s '³' '\n' | sed 's/momentane Taktik: .* "/momentane Taktik: /;s/^analysiere CPU [0-9][0-9]*:/&"/;s/Hz/&"/;s/".*$//' | grep -Ev '^[ \t]*$' | awk '{print $(NF-1),$NF}' | sed 's/^CPU /³&/' | tr -s '\n' ' ' | tr -s '³' '\n'
echo
> vi /root/bin/cpufreq-powersave.sh
#!/bin/bash
for i in $(cpufreq-info | awk '/analysiere CPU /{sub(":.*","");print $NF}')
do
cpufreq-set -c ${i} -g powersave
done
> vi /root/bin/cpufreq-ondemand.sh
#!/bin/bash
for i in $(cpufreq-info | awk '/analysiere CPU /{sub(":.*","");print $NF}')
do
cpufreq-set -c ${i} -g ondemand
done