Stromhungrigen Komponenten und Prozessen auf der Spur

Aus LinuxUser 08/2017

Stromhungrigen Komponenten und Prozessen auf der Spur

© Ivan_Trifonenko, 123RF

FdH

Um dem Nutzer größtmögliche Freiheit zu erlauben, müssen Laptops sparsam mit der Energie umgehen. Dabei bietet Linux zahlreiche Werkzeuge, die den Stromverbrauch der einzelnen Hardware-Komponenten analysieren.

Ein Computer besteht aus zahlreichen elektronischen Komponenten. Neben der Hauptplatine mit dem Prozessor (CPU) und dem Grafikchip (GPU) gehören dazu der Arbeitsspeicher (RAM), die Laufwerke und Speichermedien (Festplatte, SSD, CD/DVD) sowie bei mobilen Computern in der Regel ein Kartenleser für CF- oder SD-Karten. Hinzu kommen der Festplattencontroller plus diverse Sensoren und Schnittstellen wie beispielsweise WLAN, Bluetooth, Kamera, Infrarot und Netzwerk. Bei mobilen Geräten wie Laptop oder Smartphone gibt es noch ein Display, Tastatur und ein Touchpad sowie Lage- und Beschleunigungssensoren.

All diese Komponenten benötigen Strom, zumindest, solange sie aktiv bleiben. Oft besteht bauartbedingt kaum ein Zusammenhang zwischen der Intensität der Nutzung und dem Stromverbrauch. Moderne CPUs verfügen hingegen über verschiedene Stromsparmechanismen, die ihren Stromverbrauch und damit die Akkulaufzeit des mobilen Geräts maßgeblich beeinflussen. Nachfolgend beleuchten wir Programme, mit denen Sie den Zustand und den Verbrauch der CPU anzeigen und gegebenenfalls auch regeln. Damit lassen sich die Anwendungen auf dem Rechner ermitteln, die ganz besonders die CPU am Laufen halten – und die Sie somit als Stromfresser einbremsen sollten.

Leistungsaufnahme

Die Leistungsaufnahme hängt sowohl von den im Gerät verbauten und aktivierten elektronischen Komponenten selbst ab als auch von den Programmen, die Sie auf dem Computer installieren und starten [1]. Das kleine Tool Lstopo [2] bereitet die entsprechenden Informationen grafisch auf (Abbildung 1). Die Kommunikation zwischen den einzelnen Bauteilen erfolgt dabei über den internen I2C-Bus (siehe Kasten “I-Quadrat-C”).

Abbildung 1: Lstopo zeigt typische Komponenten in einem Laptop.

Abbildung 1: Lstopo zeigt typische Komponenten in einem Laptop.

I-Quadrat-C

Die einzelnen Bausteine eines elektronischen Systems benötigen untereinander einen zuverlässigen Kommunikationskanal. Zu diesem Zweck kommt bei vielen Systemen ein I2C-Bus (auch Inter-IC-Bus genannt) zum Einsatz [22] – Raspberry-Pi-Bastler haben damit eventuell bereits selbst gearbeitet. Der Bus selbst stammt aus den 1980er-Jahren und wurde ursprünglich von Philips-Ingenieuren erdacht, um die Kommunikation zwischen einzelnen Bauteilen zu ermöglichen.

Der I2C-Bus nutzt lediglich zwei Leitungen, Masse und Versorgungsspannung nicht mit eingerechnet. Die beiden Leiter nennen sich SDA (“Data”) und SCL (“Clock”). Die SDA-Leitung dient zur Übertragung der eigentlichen Daten, über die SCL-Leitung laufen Taktimpulse. Alle im System vorhandenen Geräte hängen an diesen zwei Leitungen. Jedes verbundene Gerät erhält eine eigene Adresse, über die es sich bei der Kommunikation ansprechen lässt (Abbildung 2).

Daneben unterscheidet der Bus in Master- und Slave-Geräte. Meist gibt es mehrere Slaves, in der Regel aber nur einen Master. Die Einstufung klassifiziert die Rechte der Kommunikation auf dem Bus: Der Master darf eine Kommunikation initiieren, die Slaves jedoch nur antworten. Dabei sendet der Master eine Byte-Adresse ins I2C-System und teilt mit, ob er auf diese Adresse lesend oder schreibend zugreifen möchte. Über die mitgesendete Start-Condition prüfen die verbundenen Geräte, ob sie angesprochen sind. Daraufhin meldet sich die entsprechende Komponente, und der eigentliche Datenaustausch läuft an. Nach dessen Ende gibt eine Stop-Condition die Leitung wieder frei [23].

Abbildung 2: Schaltung und Ger&auml;te am I<sup>2</sup>C-Bus.

Abbildung 2: Schaltung und Geräte am I2C-Bus.

Rechenintensive Aufgaben finden sich zum Beispiel in den Kategorien Bild- und Video-Bearbeitung (Rendern von Sequenzen, Wiedergabe von Bild und Sprache), Kryptografie (Verschlüsselung und Authentifizierung) sowie Datenaustausch, Synchronisation und Datentransfer (I/O). Aber auch Kernel-Bugs können sich massiv auswirken, was sich 2012 im Umgang mit Schaltsekunden zeigte: Bei einem Monatswechsel verzeichnete ein namhafter Betreiber eines Rechenzentrums eine zusätzliche Leistungsaufnahme von 1 Megawatt und musste eingreifen [3].

Von der Hardware her arbeiten Notebooks in der Regel effektiver als Desktop-PCs: Die in den Geräten verbauten Komponenten gehen deutlich sparsamer zu Werk. Eine 2,5-Zoll-SATA-Festplatte für Notebooks zieht beispielsweise zwischen 3 und 5 Watt, eine 3,5-Zoll-Desktop-HDD 10 bis 20 Watt. Eine moderne SSD dagegen begnügt sich mit zwischen 0,2 und 2 Watt. Die Werte hängen dabei von der Aktivität ab: Im Leerlauf benötigt die Festplatte weniger als beim Schreiben oder Lesen von Daten.

Der Prozessor gehört zu den größten Stromfressern. Durch Optimieren der Einstellungen lässt sich jedoch schnell bis zu 30 Prozent einsparen. Das geschieht mit dem Kommandozeilenwerkzeug Cpufrequtils [4] und optional über ein passendes Plugin (Abbildung 3) für die Desktop-Umgebung wie etwa bei XFCE [5]. Sie sollten ebenso auf den Stromverbrauch im Leerlauf achten. Aus den Modi Suspend to Disk (STD) beziehungsweise Suspend to RAM (STR) wacht das System schnell wieder auf, inklusive aller aktiver Anwendungen (siehe Kasten “Suspend-Modi”).

Eine externe Grafikkarte, die nur dann rechnet, wenn das erforderlich ist, und nicht etwa beim Surfen im Internet, verbraucht 10 Prozent weniger. Testmessungen zeigen, dass auch die Wahl des Grafiktreibers Einsparungen von etwa 5 Watt ermöglicht [6].

Abbildung 3: Steuern der CPUs &uuml;ber das xfce-cpufreq-plugin.

Abbildung 3: Steuern der CPUs über das xfce-cpufreq-plugin.

Suspend-Modi

Wunschziel beim Suspend: den aktuellen Ausführungszustand des Rechners vollständig zu sichern und die Leistungsaufnahme nicht benötigter Hardwarekomponenten zu drosseln. Später soll sich der Ausgangszustand wieder vollständig einlesen lassen, sodass das System mit der nächsten Anweisung fortfahren kann. Dafür gibt es mehrere Modi: Bei Suspend to RAM (kurz STR oder auch Stand-by Suspend) bleibt der Arbeitsspeicher aktiv. Bei Suspend to Disk (kurz STD, oder Hibernate) lagert das System den Arbeitsspeicher hingegen auf die Festplatte aus. Bei STB – auch Suspend-Hybrid genannt – passiert beides.

Bei STR läuft die CPU im internen Modus S2. Der Stromverbrauch des Systems sinkt so weit ab, dass es in diesem Zustand mehrere Tage schlummern kann. Nur der Arbeitsspeicher bleibt noch am Strom. Den Rechner wecken Sie aus diesem Modus sehr schnell wieder auf, da er dabei keine Daten von der Festplatte lesen muss. Sie müssen nur aufpassen, dass dem Gerät nicht völlig der Saft ausgeht: In dem Fall wären ungesicherte Änderungen verloren.

Bei STD (Modus S3) landen alle Daten auf der Festplatte, genauer gesagt in der Swap-Partition oder einer entsprechenden Swap-Datei. Danach schaltet sich das System vollständig ab. Beim nächsten Einschalten bootet das System nicht komplett neu durch, sondern liest den zuvor gesicherten Zustand aus dem Zwischenspeicher wieder ein.

STB steht seit Kernel 3.6 zur Verfügung und benutzt beides – zuerst STD, danach STR. Beim Aufwachen aus dem Tiefschlaf verwendet es die Kopie im Arbeitsspeicher, sofern die Batterie nicht komplett geleert wurde. Anderenfalls greift es auf den letzten Zustand in der Swap-Partition zurück.

Um die jeweilige Funktion zu aktivieren, greifen Sie bei Debian und Ubuntu auf die Pakete pm-utils [24] oder uswsusp [25] zurück. Letzteres enthält beispielsweise die Werkzeuge s2disk, s2ram und s2both. Funktionale Erweiterungen wie TuxOnIce [26] standen bereits in früheren Beiträgen im Fokus [27].

Weiter geht es mit der Beleuchtung des Displays. Beim Einstellen der benötigten Helligkeit kommen schnell weitere 20 Prozent auf das Sparkonto. Nutzen Sie kein WLAN und schalten den Chip ab, bringt das weitere 10 Prozent. Bei Bluetooth lassen sich immerhin noch 2 Prozent Ersparnis realisieren, ein korrekt angesteuerter Lüfter kann weitere 4 Prozent ausmachen.

Beim Ermitteln des Stromverbrauchs eines Laptops hilft Ihnen zum Beispiel das Werkzeug Powerstat [7]. Der Durchlauf in Abbildung 4 zeigt einen durchschnittlichen Strombedarf des Testrechners von knapp 10 Watt.

Abbildung 4: Ermittelter Stromverbrauch beim Schreiben des Artikels.

Abbildung 4: Ermittelter Stromverbrauch beim Schreiben des Artikels.

Leistungszustand der CPU

Prozessoren der x86-Architektur liefen ursprünglich stets mit voller Leistung. Ab der Generation der 486er, mit dem Intel 486DX4 aus dem Jahr 1994, hielten verschiedene Stromsparmechanismen Einzug, durch die das System im Leerlauf die Leistungsaufnahme reduziert. Ähnliches passierte bei anderen Chipherstellern, etwa bei ARM mit dem ARMv4, StrongARM und ARMv5 sowie bei Sun mit dem Microsparc Mitte der 1990er-Jahre [8].

Innerhalb dieser Ruhezustände gibt es eine stufenweise Unterteilung in mehrere “C-States” [9]. Während C0 stets volle Aktivität bedeutet und bei allen Herstellern identisch ist, entspricht ein höherer C-State einem tieferen Ruhezustand – C1 bis C7 [10]. Die zulässigen Modi hängen vom CPU-Hersteller und dem konkreten Prozessormodell ab [11]. Messungen zeigen, dass ein Prozessor in den C-States C6 und C7 nicht mehr als 0,5 Watt benötigt [12].

Den maximal anwendbaren C-State lesen Sie bei Intel-CPUs aus der Datei /sys/module/intel_idle/parameters/max_cstate aus (Listing 1). Eine Limitierung – sprich: welcher C-State aus Sicht des Linux-Kernels maximal erlaubt ist – erzielen Sie über einen zusätzlichen Parameter in der Grub-Konfiguration des Systems. Der Eintrag intel_idle.max_cstate=1 gibt beispielsweise als Maximum C1 vor (Listing 2).

Listing 1

$ cat /sys/module/intel_idle/parameters/max_cstate
9

Listing 2

linux /vmlinuz-3.16.0-4-amd64 ... processor.max_cstate=1

C-State und Verbrauch anzeigen

Der Stromverbrauch richtet sich nach dem aktuellen Stromsparmodus, der Taktfrequenz sowie der Anzahl der aktuell aktiven CPU-Kerne. Das System passt die jeweiligen Stellschrauben je nach Situation und Anforderungen dynamisch an. Abbildung 5 zeigt die Informationen zur dritten CPU, wie sie das Kommando cpufreq-info aufbereitet (in Debian und Ubuntu im Paket cpufrequtils). Die Ausgabe macht deutlich, dass das System dynamisch entscheidet, die Taktraten zu ändern oder sich zwischen Tastaturanschlägen schlafen zu legen und nicht benötigte Caches abzuschalten.

Abbildung 5: Informationen zu CPU Nummer&nbsp;3.

Abbildung 5: Informationen zu CPU Nummer 3.

Je höher der Prozessor taktet und umso mehr Kerne er gleichzeitig einsetzt, desto höher liegt auch der Stromverbrauch. Mithilfe des Werkzeugs Turbostat aus dem Debian-Paket linux-cpupower sehen Sie genau, was Sache ist. Die Angaben zum Stromverbrauch erhalten Sie über die Schalter -S und --debug (Listing 3). Interessant für den Verbrauch sind die drei letzten Spalten der Ausgabe – sie stehen für den Verbrauch pro CPU (PkgWatt), pro Kern (CorWatt) und den Anteil der GPU (GFXWatt). Bei Server-Prozessoren gibt es statt GFXWatt die Angabe RAMWatt, die sich auf die Leistungsaufnahme der RAM-Bausteine (DIMMs) bezieht.

Listing 3

# turbostat -S --debug
turbostat version 4.12 5 Apr 2016 - Len Brown <lenb@kernel.org>
CPUID(0): GenuineIntel 20 CPUID levels; family:model:stepping 0x6:3d:4 (6:61:4)
CPUID(1): SSE3 MONITOR SMX EIST TM2 TSC MSR ACPI-TM TM
CPUID(6): APERF, DTS, PTM, No-HWP, No-HWPnotify, No-HWPwindow, No-HWPepp, No-HWPpkg, EPB
CPUID(7): No-SGX
...
 Avg_MHz Busy% Bzy_MHz TSC_MHz IRQ SMI CPU%c1 CPU%c3 CPU%c6 CPU%c7 CoreTmp PkgTmp GFX%rc6 GFXMHz Pkg%pc2 Pkg%pc3 Pkg%pc6 Pkg%pc7 Pkg%pc8 Pkg%pc9 Pk%pc10 PkgWatt CorWatt GFXWatt
      66  3.46    1921    2295   0   0   9.49   0.00   0.00  87.05      47     47    0.00      0   77.33    0.00    0.00    0.00    0.00    0.00    0.00    1.98    0.44    0.00
[...]

ACPI

Über ACPI, das Advanced Configuration and Power Interface [13], greifen Sie nun aktiv in das Power-Management des Systems ein. In diesem Fahrwasser kommen beispielsweise Werkzeuge wie Acpitool [14] und Acpiclient [15] mit. Um darauf aufbauend nicht benötigte Schnittstellen und Geräte in der Leistung zu reduzieren oder gar vollständig abzuschalten, helfen Ihnen neben der Energieverwaltung der jeweils eingesetzten Desktop-Oberfläche auch Programme wie Hdparm oder Sdparm für Festplatten [16].

Speziell mobile Geräte wie Laptops und Kleincomputer profitieren von den Werkzeugen im Paket laptop-mode-tools [17]. Über eine grafische Oberfläche lassen sich zahlreiche Parameter mit nur einem Mausklick ändern (Abbildung 6). Hängen Sie beispielsweise nicht an einem WLAN, schalten Sie einfach den Funkchip ab (Enable module wireless-ipw-power, wireless-iwl-power oder wireless-power) und sparen so sehr einfach anderweitig benötigte Energie ein. Informationen zu den Parametern liefern die Projektdokumentation sowie die Wikis zu Arch Linux [18] und Ubuntu [19]. Speziell für Thinkpads gibt es mit Tlp noch ein erweitertes Werkzeug [20].

Abbildung 6: Die grafische Oberfl&auml;che der <span class="ui-element">Laptop Mode Tools</span>.

Abbildung 6: Die grafische Oberfläche der Laptop Mode Tools.

Details zur Auslastung des Systems liefert Powertop [21]. Das Programm bringt fünf Ansichten mit: Übersicht, Leerlauf-Statistik, Frequenz-Statistik, Geräte-Statistik und Abstimmbare Optionen. Zwischen diesen fünf Reitern wechseln Sie über [Tab] beziehungsweise [Umschalt]+[Tab]. Zur Frage, welche Geräte nun besonders viel Strom schlucken, gibt die Gerätestatistik Auskunft: Neben der Entladungsrate der Batterie stellt sie dar, wie stark ein Gerät oder eine Schnittstelle ausgelastet ist (Abbildung 7).

Abbildung 7: Powertop zeigt unter anderem, welche Schnittstelle wie stark beansprucht wird.

Abbildung 7: Powertop zeigt unter anderem, welche Schnittstelle wie stark beansprucht wird.

Fazit

Linux besitzt nicht unbedingt den Ruf, die theoretisch maximale Akkulaufzeit aus mobilen Geräten herauszukitzeln. Aktuelle Kernel und moderne Desktop-Umgebungen mit integrierten Stromsparmechanismen haben hier allerdings gegenüber Windows-Systemen bereits kräftig aufgeholt. Dennoch lässt sich das System meist über manuelle Eingriffe noch weiter optimieren. Unnötig aktive Komponenten und Prozesse kosten Strom, ohne dass sie dem Nutzer etwas bringen. Mit den entsprechenden Werkzeugen finden Sie diese Stromschlucker und setzen den Laptop auf Diät. 

Infos

  1. Matthew Travers: CPU Power Consumption Experiments and Results Analysis on Intel i7-4820k, uSystems Research Group, Newcastle University, http://async.org.uk/tech-reports/NCL-EEE-MICRO-TR-2015-197.pdf

  2. Lstopo (aus Hwloc): https://packages.debian.org/stretch/hwloc

  3. Schaltsekunden-Bug: https://www.heise.de/newsticker/meldung/Schaltsekunden-Bug-in-Linux-verschwendet-Strom-1631325.html

  4. Prozessortaktung: https://wiki.ubuntuusers.de/Prozessortaktung/

  5. Xfce4-cpufreq-plugin: http://goodies.xfce.org/projects/panel-plugins/xfce4-cpufreq-plugin

  6. Notebooks effizienter nutzen: Erik Bärwaldt, “Sparsam arbeiten”, LU 08/2011, S. 60: http://linux-community.de/23458

  7. Powerstat: https://sourceforge.net/projects/powerstat

  8. Übersicht zu Sun-Prozessoren: http://www.cpu-collection.de/?tn=1&l0=cl&l1=SPARC&l2=Sun+Microsystems

  9. C-States, ACPI: https://en.wikichip.org/wiki/acpi/c-states

  10. Power Management States: http://x://software.intel.com/en-us/articles/power-management-states-p-states-c-states-and-package-c-states#_Toc383778910

  11. “What are CPU C-states and how to disable them if needed?”: https://gist.github.com/wmealing/2dd2b543c4d3cff6cab7

  12. CPU-C-States auslesen: https://www.heise.de/ct/hotline/PC-Leistungsaufnahme-CPU-C-States-auslesen-3318443.html

  13. The Linux ACPI Project: https://01.org/linux-acpi

  14. Acpitool: https://sourceforge.net/projects/acpitool/

  15. Acpiclient: https://sourceforge.net/projects/acpiclient/

  16. Hdparm: Tim Schürmann, “Platteninspektor”, LU 10/2012, S. 73: http://linux-community.de/25932

  17. Laptop Mode Tools: https://github.com/rickysarraf/laptop-mode-tools

  18. Arch Wiki zu den Laptop Mode Tools: https://wiki.archlinux.org/index.php/Laptop_Mode_Tools

  19. Ubuntu Wiki zu den Laptop Mode Tools: https://wiki.ubuntuusers.de/laptop-mode-tools/

  20. Tlp: http://linrunner.de/en/tlp/tlp.html

  21. Powertop: https://01.org/powertop

  22. I2C-Bus: http://rn-wissen.de/wiki/index.php?title=I2C

  23. “Using the I2C Bus”: http://www.robot-electronics.co.uk/i2c-tutorial

  24. Pm-utils: https://pm-utils.freedesktop.org/wiki

  25. Uswsusp: http://suspend.sourceforge.net

  26. TuxOnIce: http://tuxonice.nigelcunningham.com.au

  27. Tiefschlaf mit TuxOnIce: Martin Steigerwald, “Tiefgefroren”, LU 11/2009, S. 68: http://linux-community.de/19422

Der Autor

Frank Hofmann arbeitet von unterwegs – bevorzugt in Berlin, Genf und Kapstadt – als Entwickler, Trainer und Autor. Er ist zudem Koautor des Debian-Paketmanagement-Buchs (http://www.dpmb.org/). Mandy Neumeyer lebt seit neun Jahren in Südafrika und reist gerne um die Welt. Sie arbeitet im Tourismus und baut zur Zeit ein zusätzliches Einkommen als digitaler Nomade auf.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 08/2017 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben