[[Vorlage(Getestet, jammy, focal)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:sudo: Root-Rechte] }}} [[Inhaltsverzeichnis()]] [[Bild(Wiki/Icons/terminal.png, 48, align=left)]] [https://01.org/powertop/ PowerTOP] {en} ist ein Werkzeug für die Kommandozeile, welches den Energieverbrauch des Systems analysiert und darauf basierend bei mobilen Computern (Laptops, Netbooks) Vorhersagen zu Akkulaufzeit macht. Man kann mit diesem Programm auch für bestimmte Geräte das automatische Energiemanagement des Linux-Kernels aus- oder einschalten. Das Programm in der Version 2.x macht selber keine Vorschläge zur Optimierung des Energiehaushalts eines Rechners. (Die frühere Version 1.x hatte einen anderen Anspruch, ist aber veraltet und obsolet.) = Installation = Folgendes Paket muss installiert werden[1]: {{{#!vorlage Paketinstallation powertop }}} = Benutzung = PowerTOP benötigt Root-Rechte[3] und wird im Terminal mit folgendem Befehl gestartet[2]: {{{#!vorlage Befehl sudo powertop OPTIONEN }}} Mögliche OPTIONEN beim Programmstart erklärt folgende Tabelle. {{{#!vorlage Tabelle Startparameter von PowerTOP 2.9 oder neuer +++ Option Beschreibung +++ `--debug` Debug-Modus (nur zur Fehlersuche) aktivieren. +++ `-V` `--version` Versionsinformationen ausgeben und Programm beenden. +++ `-c` `--calibrate` Powertop im Kalibriermodus ausführen. Der Rechner sollte während der Kalibrierung nicht genutzt werden. Dauert bis zu einer Stunde! +++ `--extech[=devnode]` Einen externen Leistungsanalysator der Fa. Extech ("Extech Power Analyzer") für die Messungen verwenden. +++ `-r` `--html[=DATEINAME]` Einen HTML-Bericht erstellen. Dateiname wird '''powertop.html''', sofern nicht explizit angegeben. +++ `-C` `--csv[=DATEINAME]` Einen CVS-Bericht erstellen. Dateiname wird '''powertop.csv''', sofern nicht explizit angegeben. +++ `-t` `--time[=DAUER]` Die Messungen für die angegebene DAUER in Sekunden durchführen. Vorgabe 20. +++ `-i` `--iteration[=ANZAHL]` Angabe, wie oft die Tests durchgeführt werden sollen. Vorgabe 1. +++ `-w` `--workload[=DATEINAME]` Datei zur Lasterzeugung +++ `--auto-tune` Konfiguriert alle Verbraucher auf automatische Energieverwaltung oder schaltet sie ganz aus. +++ `-q` `--quiet` Ausgabe auf `stderr` unterdrücken +++ `--help` Hilfemenü anzeigen und Programm beenden. +++ `-s` `--sample[=ABSTAND]` Intervall in Sekunden zwischen zwei Messpunkten }}} Das Programm läuft entweder im automatischen oder interaktiven Modus. * Im automatischen Modus gibt man beim Start über die Optionen vor, wie oft die Testreihe ausgeführt wird, wie lange sie jeweils dauert und wie oft währenddessen die Leistung gemessen werden soll. Optional kann auch noch ein Programm zur Belastung des Systems vorgegeben werden. Dieser Modus macht nur Sinn, wenn man sich auch einen Bericht ausgeben lässt und/oder einen Leistungsanalysator an das System anschließt. * Den interaktiven Modus erreicht man ohne die Angabe von Optionen. In diesem kann man die Anzeige des Programms mit Tastendrucken gemäß folgender Tabelle beeinflussen. {{{#!vorlage Tabelle Steuerung in interaktiven Modus +++ Tatze Wirkung +++ <:>[[Vorlage(Tasten, links ) ]], [[Vorlage(Tasten, rauf ) ]], [[Vorlage(Tasten, Bild rauf ) ]], [[Vorlage(Tasten, Bild runter ) ]], [[Vorlage(Tasten, runter ) ]], [[Vorlage(Tasten, rechts ) ]] Scrollen +++ <:>[[Vorlage(Tasten, Tab ) ]], [[Vorlage(Tasten, Umschalt+Tab ) ]] Reiter wechseln. +++ <:>[[Vorlage(Tasten, R ) ]] Anzeige aktualisieren. +++ <:>[[Vorlage(Tasten, S ) ]] Intervall für automatische Aktualisierung einstellen. +++ <:>[[Vorlage(Tasten, Leertaste ) ]], [[Vorlage(Tasten, Return ) ]] Ausgewählte Aktion aktivieren. +++ <:>[[Vorlage(Tasten, Q ) ]], [[Vorlage(Tasten, Esc ) ]], [[Vorlage(Tasten, Strg+C ) ]] Programm beenden. }}} == Übersicht == [[Vorlage(Bildunterschrift, ./powertop2_overview.png, 300, "Übersicht", right)]] Nach dem Start kann es etwas dauern, bis alle Daten geladen sind und die Übersicht angezeigt wird. In der ersten Zeile werden die PowerTOP Version und sechs Reiter angezeigt: * Übersicht (''"Overview"'') * Untätigkeits-Statistik (''"Idle Stats"'') * Frequenz-Statistik (''"Frequency Stats"'') * Geräte-Statistik (''"Device Stats"'') * Einstellungen (''"Tuneables"'') * Aufwachvorgänge (''"WakeUp"'') Das Programm verhält sich leicht unterschiedlich, je nachdem der Rechner vom Netz mit Energie versorgt oder mit dem Akku betrieben wird. Bei Anwahl des Reiters ''Übersicht'' steht in der ersten Zeile: * Bei Akku-Betrieb wird die vom Akku gelieferte Leistung angezeigt. * Bei Netzbetrieb wird die einzeilige Zusammenfassung von Aufwach-/GPU-/VFS-Vorgängen pro Sekunde und CPU-Auslastung angezeigt. Darunter befindet sich die Darstellung der einzelnen Prozesse mit Auslastung der CPU, Anzahl der Aufwachvorgänge pro Sekunde, Art und Beschreibung. {{{#!vorlage Hinweis Die in der ersten Spalte ''"Power est."'' bzw. ''„Energie ca.“'' angezeigten geschätzten Leistungsaufnahmen sind reine Umrechnungen aus Starthäufigkeit und Laufzeit der Prozesse. Die Werte haben in der Regel nichts zu tun mit einem realen Leistungsbedarf des jeweiligen Prozesses. }}} == Leerlauf- und Frequenzstatistik == [[Vorlage(Bildunterschrift, powertop2_idlestats.png, 300, "Leerlauf-Statistik", left)]] [[Vorlage(Bildunterschrift, powertop2_freqstats.png, 300, "Frequenz-Statistik", left)]] Auf diesen beiden Reitern wird die Verweildauer des Prozessors in verschiedenen Energiesparmodi ([http://www.comptech-info.de/component/content/article/46-computer-infos/418-c-states-was-sind-das C-States] {de}) und der Verlauf der Prozessortaktung angezeigt. {{{#!vorlage Hinweis Die Verweildauer zu den Frequenzstatistiken wird ggf. nicht korrekt angezeigt. Die Verweildauer zu den C-States scheint jedoch zu funktionieren. (Beleg?) }}} ## [[BR]]'s erforderlich zu Erzwingung eines vernünftigen Layouts [[BR]][[BR]] == Geräte-Statistik == [[Vorlage(Bildunterschrift, ./powertop2_devstats.png, 300, "Geräte-Statistik", right)]] Diese Ansicht zeigt, wie stark ein Gerät ausgelastet ist. Dies kann leicht mit der Bildschirm-Helligkeit getestet werden. {{{#!vorlage Hinweis Die Anzeige der CPU-Auslastung deckt sich nicht mit der anderer Werkzeuge wie dem [:Prozesse:System Monitor]. }}} ## [[BR]]'s erforderlich zu Erzwingung eines vernünftigen Layouts [[BR]][[BR]] == Automatische Anpassungen == PowerTOP kann mit der Option "`--auto-tune`" alle möglichen Optimierungen automatisch aktivieren. Diese Option ist nützlich zur Abschätzung des überhaupt mit den durch PowerTOP ermöglichten Maßnahmen realisierbaren Einsparpotentials. {{{#!vorlage Befehl sudo powertop --auto-tune }}} Man sollte sich bewusst sein, dass die Einstellungen für „minimalen Energieverbrauch“ __nicht__ mit den Einstellungen für „bequeme und optimale Bedienbarkeit“ übereinstimmen müssen und es in aller Regel auch nicht sind. Beispielsweise werden mit "`--auto-tune`" auch USB-Geräte wie Maus und Tastatur auf minimalen Energieverbrauch optimiert, was zu Nutzungsverzögerungen führen kann. Erst nach einem Tippen oder Klicken reagieren diese wieder. Die betroffenen Geräte können manuell wieder zurückgesetzt werden. == Temporäre Anpassungen == [[Vorlage(Bildunterschrift, ./powertop2_tunables.png, 300, "Einstellungen", right)]] In PowerTOP können verschiedene Anpassungen unter ''Einstellungen'' und ''Aufwachvorgänge'' getestet werden. Mit der Taste [[Vorlage(Tasten, enter)]] kann für die jeweilige Einheit das automatische Energiemanagement einfach aktiviert („gut“) oder auch wieder deaktiviert („schlecht“) werden. Bei Hardware ohne eingebautes Energiemanagement funktioniert das natürlich nicht, dagegen hilft nur der Austausch gegen modernere Hardware. {{{#!vorlage Hinweis Die von PowerTOP hier verwendete Sprechweise „gut/schlecht“ bzw. "good/bad" darf nicht wertend verstanden werden! Die Bezeichnung „schlecht“ bedeutet lediglich, dass die betreffende Einheit nicht dem automatischen Energiemanagement des Linux-Kernels unterliegt während die Bezeichnung „gut“ besagt, dass die betreffende Einheit eben automatisch vom Kernel situationsabhängig aus- und eingeschaltet wird. Mit einer Beschreibung als „schlecht“ ist keine Empfehlung verbunden, für diese Einheit das Energiemanagement des Linux-Kernels einzuschalten. Man kann es aber versuchen und die eigenen Erfahrungen dann als Entscheidungsgrundlage verwenden. }}} Die über PowerTOP vorgenommenen Änderungen werden nicht gespeichert. Aus einem HTML-Report erfährt man aber auch die zur jeweiligen Maßnahme gehörenden Befehle: {{{#!vorlage Befehl sudo powertop --html=powertop.html }}} {{{#!vorlage Warnung Die Berichte von PowerTOP können vertrauliche Informationen des Systems enthalten und müssen deshalb vor einer Weitergabe darauf überprüft und ggf. bereinigt werden! }}} Dem erzeugten HTML-Report entnimmt man die von PowerTOP benutzten Befehle für die einzelnen Einstellungen und integriert diese in ein eigenes Skript wie im folgenden Anschauungsbeispiel, welches nicht zur Ausführung vorgesehen ist: {{{#!code bash #!/bin/bash echo Dies ist nur ein Anschauungsbeispiel und nicht zur Ausführung vorgesehen! echo Skript ist vor der Anwendung unbedingt an die eigene Hardware anzupassen! exit 1 ## radeon powersave ## echo profile > /sys/class/drm/card0/device/power_method echo auto > /sys/class/drm/card0/device/power_profile ## Kernel ### echo 0 > /proc/sys/kernel/nmi_watchdog echo 0 > /proc/sys/kernel/watchdog ## VM ## echo 5 > /proc/sys/vm/laptop_mode echo 1500 > /proc/sys/vm/dirty_writeback_centisecs ## CPU ## 0 performance 1 powersave echo 1 > /sys/devices/system/cpu/sched_mc_power_savings echo 1 > /sys/devices/system/cpu/sched_smt_power_savings ## SATA Link Power Management ## for i in /sys/class/scsi_host/host[01234]/link_power_management_policy; do echo min_power >$i; done ## Intel Sound ## 30 = 30 s bis zum Standby des Chips. echo Y > /sys/module/snd_hda_intel/parameters/power_save_controller echo 30 > /sys/module/snd_hda_intel/parameters/power_save ## Runtime PM for PCI Device find /sys/bus/pci/devices/*/power -name control -exec echo auto >{} \; for i in $(find /sys/devices/pci0000\:00/0* -maxdepth 3 -name control); do echo auto > $i; done ## USB ## Nicht generell zu empfehlen! Ruckeln bei Mäusen. #for i in /sys/bus/usb/devices/*/power/control; do echo auto >$i; done # Wake on LAN abschalten ethtool -s eth0 wol d exit 0 }}} Welche konkrete Maßnahmen allerdings das Verhalten des eigenen Systems tatsächlich verbessern, muss individuell erprobt werden. = Sachgerechte Anwendung = Das Programm kann einfach gestartet werden, liefert dann aber nur grobe Hinweise. Laien sollten die Ausgaben nicht als absolute Wahrheiten ansehen und Fachleute sollten sie mit ihrem Fachwissen beurteilen. Wer Wert auf zuverlässige Daten legt, muss das Programm wie im [#Links Handbuch "PowerTOP Users's Guide"] beschrieben mehrfach unter kontrollierten Bedingungen starten und vorher auch eine Kalibrierung durchführen. = Dauerhafte Anpassungen = PowerTOP ist konzipiert als reines Analysewerkzeug und selbst nicht vorgesehen für dauerhafte Änderungen der Leistungseinstellungen. Wer selber Einstellungen vornehmen möchte, sollte sich ein Skript wie beispielsweise [#Temporaere-Anpassungen unter Temporäre Anpassungen beschrieben] erstellen oder auch das hier folgende Skript verwenden. Das Skript startet PowerTOP mit der Option `--autotune` (siehe [#Automatische-Anpassungen Automatische Anpassungen]) und deaktiviert danach für alle USB-Geräte der Klasse "Human Interface Devices" ("HID") jeweils das Power-Management. {{{#!code bash #!/bin/bash powertop --auto-tune HIDDEVICES=$(ls /sys/bus/usb/drivers/usbhid | grep -oE '^[0-9]+-[0-9\.]+' | sort -u) for i in $HIDDEVICES; do echo -n "Enabling " | cat - /sys/bus/usb/devices/$i/product echo 'on' > /sys/bus/usb/devices/$i/power/control done exit 0 }}} Das Skript muss mit Root-Rechten[3] ausgeführt werden. Man kann es kann auch mit einer [:systemd/Units:Systemd-Unit] oder per [:Cron:] beim Systemstart automatisch starten. * Die Systemd-Unit kann man aus diesem Gerüst entwickeln: \\ {{{ ### Dieses Gerüst bedarf der individuellen Anpassung !!! [Unit] After = … Wants = … [Service] Type = oneshot RemainAfterExit = yes ExecStart = STARTBEFEHL [Install] WantedBy = multi-user.target }}} * Bei Cron verwendet man als Zeitangabe `@reboot` in der Datei '''/etc/crontab'''. = Links = == Intern == * [:Strom_sparen:] == Extern == * [https://01.org/powertop Projektseite] {en} * [https://01.org/sites/default/files/page/powertop_users_guide_201412.pdf PowerTOP Users's Guide] {en} – Dokumentation (PDF) * [github:fenrus75/powertop:Quellcode] {en} * [heise:-1167455:PowerTOP 2.0 – Strom sparen unter Linux] {de} – heise Open Source, 06/2011 * [https://www.linux-community.de/ausgaben/linuxuser/2012/10/energiesparen-mit-powertop-2-0/ Energiesparen mit Powertop 2.0] {de} – Linuxuser 10/2012 #tag: Hardware, System