Gibt es eine Möglichkeit, die CPU-Auslastung Ihres Prozesses zu senken?

Gibt es eine Möglichkeit, die CPU-Auslastung Ihres Prozesses zu senken?

Ich möchte, dass mein Gerät weniger CPU verwendet, um Akku zu sparen. Ich habe ein Programm, das viel davon verwendet. niceDas 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/cpufreqSie 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-infoum die verfügbaren Frequenzen anzuzeigen. Führen Sie den Befehl aus, cpufreq-set -c 0 -g powersaveum 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

verwandte Informationen