Ich möchte, dass mein Gerät weniger CPU verwendet, um Akku zu sparen. Ich habe ein Programm, das viel davon verwendet. nice
Das hilft nicht, da es nur die Planung ändert, wenn die CPU bei %100 ist, obwohl ich nicht möchte, dass sie so hoch wird
Antwort1
Damit Ihre CPU weniger Akku verbraucht, müssen Sie sie langsamer laufen lassen. Die Gesamtmenge der CPU-Anweisungen, die zur Ausführung Ihres Programms erforderlich sind, hängt nicht von der Geschwindigkeit ab, mit der es ausgeführt wird. Wenn Sie also den Anteil der von Ihrem Programm verbrauchten CPU-Zeit begrenzen, würde esmehrCPU, nicht weniger. Wenn Ihre CPU nichts tut, anstatt Ihr Programm auszuführen, verbraucht sie trotzdem Strom. Bestenfalls sind die Pausen, in denen die CPU nichts tut, lang genug, um in einen Energiesparzustand zu wechseln; aber selbst dann müssen Sie für die zusätzlichen Energiezustandsübergänge einen Aufpreis zahlen.
Die Begrenzung des Anteils der CPU-Zeit, die Ihr Prozess nutzt, kann den indirekten Effekt haben, dass der Kernel auf eine langsamere CPU-Taktfrequenz umschaltet. Ob dies geschieht, hängt von der Wahl desCPU-Frequenzreglerund die genauen Zahlen. Dies wird mit dem Standard-Governor (ondemand) passieren, aber die Rate ist schwer zu kontrollieren.
Wenn Sie Strom sparen möchten, besteht die beste Strategie darin, Ihr Programm 100 % der verfügbaren CPU-Leistung nutzen zu lassen (damit es möglichst schnell fertig wird), die CPU jedoch so langsam wie möglich laufen zu lassen (da die pro Befehl verbrauchte Energiemenge mit der CPU-Geschwindigkeit steigt).
/sys/devices/system/cpu/cpu0/cpufreq
Sie können die CPU-Frequenz über Parameter in und seinen Verwandten oder über verschiedene Benutzeroberflächen konfigurieren . Diecpufreq-Dienstprogrammebieten zwei Kommandozeilen-Tools:cpufreq-info
,cpufreq-set
. Da ist einerweitertes Tool-PaketangerufenCPU-Leistungdas jetzt in den Kernelquellen enthalten ist. Wenn Sie Gnome verwenden, können Sie dessen Cpufreq-Applet verwenden. Es gibt andere GUIs.
Um möglichst viel Akkuleistung zu sparen, lassen Sie Ihre CPU mit der Mindestfrequenz laufen. Führen Sie den Befehl aus, cpufreq-info
um die verfügbaren Frequenzen anzuzeigen. Führen Sie den Befehl aus, cpufreq-set -c 0 -g powersave
um CPU 0 immer mit der Mindestfrequenz laufen zu lassen (für die anderen CPUs wiederholen Sie den Vorgang mit steigenden Werten -c
).
Antwort2
Sie können beispielsweise cpulimit für eine bestimmte PID verwenden
sudo cpulimit -b -l 80 -p 1183
Renice:
renice +19 1183
Dadurch wird die Priorität auf die niedrigste mögliche für 1183 gesetzt
Antwort3
Ich weiß nicht, ob es dafür eine elegante Lösung gibt, aber Sie können den Vorgang mit Signalen stoppen und neu starten:
PID=1234
mode=running
run_time=0.1
stop_time=0.1
while true; do
if [ running = "$mode" ]; then
kill -STOP "$PID"
mode=stopped
sleep "$run_time"
else
kill -CONT "$PID"
mode=running
sleep "$stop_time"
fi
done