[[Vorlage(Getestet, general)]] {{{#!vorlage Hinweis Je nach Prozessortyp stehen gegebenenfalls nicht alle in diesem Artikel beschriebenen Abfrage- und Einstellmöglichkeiten zur Verfügung. Im BIOS muss ggf. [wikipedia:Cool’n’Quiet:Cool&Quiet (AMD)] oder [wikipedia:Speedstep:Speedstep (Intel)] aktiviert werden. }}} {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] [:GNOME_Konfiguration: Konfigurationseditor starten] }}} [[Inhaltsverzeichnis(2)]] [[Bild(Wiki/Icons/config.png, 48, align=left)]] Linux bietet die Möglichkeit, die Taktfrequenz des Prozessors (CPU) auszulesen und wenn notwendig, auch zu modifizieren bzw. den aktuellen Bedürfnissen (an die Rechenleistung) anzupassen. Dies wird normalerweise vollautomatisch erledigt. Während die Taktfrequenzstufen und -grenzen durch die Hardware vorgegeben sind, entscheidet ein sogenannter ''"(Scaling-)Governor"'', wie die Taktfrequenz automatisch geregelt bzw. konkret angepasst wird. Dieser Artikel gibt Hinweise für manuelle Eingriffe. Wer nicht zuerst den kompletten Artikel lesen möchte, findet im Abschnitt [#Links Links] ein einfaches Shellskript, das die wichtigsten Informationen zur CPU, Governor, Taktfrequenz etc. im Terminal anzeigt. [[Anker(governor)]] = Verfügbare Governors = * ''ondemand'' - Standard bei den meisten Systemen. Die CPU-Frequenz wird den aktuellen Bedürfnissen an die Rechenleistung angepasst. Dabei wird die CPU-Frequenz u.U. sprunghaft angehoben oder abgesenkt. * ''conservative'' - Die CPU-Frequenz wird den aktuellen Bedürfnissen an die Rechenleistung angepasst. Die Taktfrequenz wird aber Schritt-für-Schritt angehoben bzw. abgesenkt. * ''performance'' - CPU läuft permanent auf der höchsten erlaubten Taktfrequenz. * ''powersave'' - CPU läuft permanent auf der niedrigsten erlaubten Taktfrequenz. * ''userspace'' - Dies ist kein Kernel-eigener Governor. Vielmehr wird ein Governor-Programm wie z.B. [:powernowd:] verwendet. Sinnvoll, wenn der Kernel meint, nur den Governor ''performance'' verwenden zu können (siehe [#Problembehebung Problembehebung]). {{{#!vorlage Hinweis Auch wenn die Bezeichnungen der Taktstufen anderes suggerieren, spart man bei `powersave` nicht unbedingt Strom! Im normalen Desktop-Betrieb sorgt `powersave` dafür, dass der Prozessor später in den "Schlafmodus" fällt, weil er langsamer rechnet und daher entsprechend länger braucht. Der Schlafmodus spart aber wesentlich mehr Energie als die niedrigste Taktfrequenz. `powersave` ist nur dann sinnvoll, wenn ein Lüfter lärmt, der zu Ungunsten der Systemleistung langsamer drehen und damit leiser werden soll. Oder wenn die CPU voll ausgelastet ist (z.B. Videokodierung, aufwendige Spiele) und man dabei Strom sparen muss. In allen anderen Fällen heißt die __stromsparendste__ Variante – auch bei Notebooks im Akkubetrieb – '''ondemand'''. Vor diesem Hintergrund ist eine Änderung des Governors in den allermeisten Fällen reine Spielerei. }}} = Taktfrequenzanpassung beeinflussen = Für die Regelung der Taktstufen hat man prinzipiell zwei Möglichkeiten: entweder grafisch (von der Desktop-Umgebung abhängig) oder im Terminal (desktop-unabhängig). Allerdings gilt auch hier das bereits gesagte: außer in Sonderfällen ist eine manuelle Steuerung der Taktfrequenz völlig überflüssig. [[Vorlage(Bildunterschrift, indicator-cpufreq.png, 100, "Unity", right)]] == Unity == Für das ab [:Natty:Ubuntu 11.04] eingesetzte [:Unity:] gibt es bisher nur das [launchpad:indicator-cpufreq:]. Seit [:Precise:Ubuntu 12.04] ist es auch in den offiziellen Paketquellen enthalten und wird über das Paket {{{#!vorlage Paketinstallation indicator-cpufreq, universe }}} installiert. Nach einem einen Neustart bzw. Wiederanmelden kann man über das Symbol die Taktfrequenzen beeinflussen. Die Einstellungen gelten für den Prozessor, nicht für einzelne Prozessorkerne. == GNOME == Das Einstellen der Taktfrequenz unter [:GNOME:] unterscheidet sich zwischen GNOME 2 und 3. Die Desktopumgebung GNOME 2 kommt unter Ubuntu noch bis einschließlich [:Maverick:Ubuntu 10.10] zum Einsatz. [[Vorlage(Bildunterschrift, cpufreq-applet.png, 100, "GNOME 2", right)]] === GNOME 2 === Zur grafischen Anzeige und Änderung der Frequenzen und Anpassungsmechanismen kann man das Programm '''cpufreq-selector''' nutzen, welches in der Regel in der Standardinstallation von Ubuntu (GNOME 2) enthalten ist. Der entsprechende Paketname lautet [1]: {{{#!vorlage Paketinstallation gnome-applets }}} Man führt nach der Installation einen ''Rechtsklick'' [[Vorlage(Tasten, rmb)]] auf das [:GNOME_Panel:] aus und wählt dann ''"Zum Panel hinzufügen -> Überwachen der Prozessortaktstufen"''. Dort sollte dann im Leerlauf (bei ''"ondemand"'') immer die niedrigst mögliche Frequenz angezeigt werden. ## [[Bild(./Prozessortaktstufen_intrepid.png,150, align=right)]] Mit einem ''Linksklick'' [[Vorlage(Tasten, lmb)]] auf das Applet kann man die Taktstufen-Anpassung auch selbst verändern. So kann man beispielsweise die Taktrate fest auf den niedrigsten Wert einstellen. Klickt man zum ersten Mal auf einen der Werte, so muss ein Administrator des Systems diesen Vorgang erlauben. Seit [:Intrepid_Ibex:Ubuntu 8.10] genügt es, das Applet zur Leiste hinzuzufügen. Beim ersten Änderungswunsch erscheint eine [:PolicyKit:Abfrage zum Entsperren]. Hier kann dann der derzeit aktive Benutzer nach Eingabe des eigenen Passwortes die Einstellungen vornehmen (dies gilt nur für Benutzer mit Admin-Rechten). === Voreinstellung ändern === Allerdings gilt das, was man hier einstellt, nur bis zum nächsten Neustart oder Aufwachen aus dem Standby. Wacht der Rechner wieder auf, so ist diese Einstellung wieder auf "Ondemand" gesetzt. Die Voreinstellung des ''gnome-power-managers'' kann mit dem GNOME Konfigurationseditor [4] bearbeitet werden. Dort findet man eine Einstellungsmöglichkeit für den Betrieb am Netzteil * ''"apps -> gnome-power-manager -> cpufreq -> policy_ac"'' und einen zugehörigen Schlüssel für den Batteriebetrieb. * ''"apps -> gnome-power-manager -> cpufreq -> policy_battery"'' Die verfügbaren Richtlinien zum Einstellen der Frequenz werden im nächsten Abschnitt erläutert. {{{#!vorlage Experten cpufreq-selector kann auch über die Kommandozeile gesteuert werden. Die Option ``-g`` legt den Governor fest, die Option ``-f`` die Frequenz in kHz. Die Option ``-c`` bezeichnet die CPU, für die die Einstellung gilt. }}} [[Vorlage(Bildunterschrift, extension-cpufreq.png, 140, "GNOME 3", right)]] === GNOME 3 === In aktuellen Ubuntu Versionen wird die Prozessorsteuerung voll automatisch über die vordefinierte Kernel Einstellung (Ondemand) geregelt. Damit muss der Anwender diesbezüglich eigentlich nichts weiter tun, denn durch diese "Ondemand"-Einstellung (siehe obige Tabelle) wird die Prozessorlast automatisch verteilt und optimiert die Prozessor-Arbeitsverteilung. Einer grafischen Anzeige, samt Änderungen der Frequenzen und Anpassungsmechanismen der Prozessorsteuerung, kann sich der Anwender bei [:GNOME_Shell:] einer entsprechenden Extension bedienen. Die [:GNOME_Shell_Extensions:Shell-Extension] [https://extensions.gnome.org/extension/444/cpu-freq/ Cpufreq] {en} kann wenn geladen, installiert und aktiviert, ins obere Panel gelegt und die Prozessorlast steuern und überwachen. Mindestvoraussetzung ist das Paket: {{{#!vorlage Paketinstallation cpufrequtils, universe, Kontrolle und Einstellung der CPU-Frequenzen }}} Weitere Voraussetzungen für den Betrieb oder Hilfestellung bei Problemen, findet der Anwender in der [github:nodefourtytwo/gnome-shell-extension-cpu-freq/blob/master/README.md: Readme-Datei] {en} dieser Erweiterung. Ebenso finden sich dort weiterführende Informationen, wie z.B. welche Werkzeuge vorhanden und Bedingungen für 4 Kernprozessoren erfüllt sein müssen damit in die Prozessorsteuerung eingegriffen werden kann, sowie Eingriffe in vordefinierte Standardeinstellungen und vieles andere mehr. {{{#!vorlage Experten cpufreq-selector kann auch über die Kommandozeile gesteuert werden. Die Option `-g` legt den Governor fest, die Option `-f` die Frequenz in kHz. Die Option `-c` bezeichnet die CPU, für die die Einstellung gilt. }}} == Xfce == Auch unter Xubuntu können native [:Xfce_Panel#Erweiterungen:Panel-Applets] genutzt werden. Dazu fügt man dem Panel via [[Vorlage(Tasten, rmb)]] ein neues Element ''"CPU Frequency Monitor"'' oder ''"Governor Plugin"'' hinzu. Die Paketnamen lauten [1]: {{{#!vorlage Paketinstallation xfce4-cpufreq-plugin, universe, nur Anzeige der Taktfrequenz xfce4-governor-plugin, universe, Anzeige und Änderung des Governors, nur bis [:Natty:Ubuntu 11.04] }}} Alternativ ist es auch möglich, durch Installation des Pakets {{{#!vorlage Paketinstallation xfce4-xfapplet-plugin, nur bis [:Natty:Ubuntu 11.04] }}} GNOME 2 Panel-Applets (siehe oben) unter Xfce auszuführen. Als weitere Möglichkeit kann auch der im folgenden Abschnitt beschriebene '''indicator-cpufreq''' verwendet werden. [[Vorlage(Bildunterschrift, lxpanel_indicator.png, 80, "LXDE", right)]] == LXDE == Das [:LXDE_Einstellungen#Panel:Panel] von LXDE ('''lxpanel''') enthält ein Mini-Programm (Applet), das die Taktfrequenz anzeigen kann. Eine Änderung der Taktfrequenz oder des Governors darüber ist nicht vorgesehen. Man kann alternativ wie unter Unity [#Unity indicator-cpufreq] nutzen, jedoch wird im Lxpanel kein Symbol angezeigt. Um das Symbol im Lxpanel dennoch anzuzeigen, müssen zuerst passende Bilddateien an den entsprechenden Ordner kopiert werden. Dazu öffnet man ein Terminal und kopiert die fünf benötigten Symbole mit folgendem Befehl: {{{#!vorlage Befehl sudo cp /usr/share/icons/ubuntu-mono-dark/status/22/indicator-cpufreq* /usr/share/pixmaps/ }}} == Kommandozeile == Zur Kontrolle (Änderungen sind nicht möglich) dient das Programm '''cpufreq-info''' aus dem Paket: {{{#!vorlage Paketinstallation cpufrequtils, universe }}} Beispiel: {{{#!vorlage Befehl cpufreq-info }}} Ausgabe für einen [wikipedia:Intel_Pentium_M:Pentium M] Einkern-Prozessor (CPUs werden beginnend mit `0` hochgezählt): {{{ cpufrequtils 007: cpufreq-info (C) Dominik Brodowski 2004-2009 Bitte melden Sie Fehler an cpufreq@vger.kernel.org. analysiere CPU 0: Treiber: acpi-cpufreq Folgende CPUs laufen mit der gleichen Hardware-Taktfrequenz: 0 Die Taktfrequenz folgender CPUs werden per Software koordiniert: 0 Maximale Dauer eines Taktfrequenzwechsels: 20.0 us. Hardwarebedingte Grenzen der Taktfrequenz: 600 MHz - 1.70 GHz mögliche Taktfrequenzen: 1.70 GHz, 1.40 GHz, 1.20 GHz, 1000 MHz, 800 MHz, 600 MHz mögliche Regler: conservative, ondemand, userspace, powersave, performance momentane Taktik: die Frequenz soll innerhalb 600 MHz und 1.70 GHz. liegen. Der Regler "ondemand" kann frei entscheiden, welche Taktfrequenz innerhalb dieser Grenze verwendet wird. momentane Taktfrequenz ist 1.20 GHz. Statistik:1.70 GHz:14,12%, 1.40 GHz:0,02%, 1.20 GHz:0,03%, 1000 MHz:0,02%, 800 MHz:0,13%, 600 MHz:85,68% (266) }}} Um schnell zwischen verschiedenen Governors umzuschalten, kann das folgende Skript verwendet werden: {{{#!code bash #!/bin/sh echo "gov - show or set governor (set requires root privileges)" echo "usage: [sudo] gov [o|ondemand|f|performance|p|powersave|c|conservative]" echo "governor in use:" getgov=$(cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor) case $1 in o|ondemand) governor=ondemand;; f|performance) governor=performance;; p|powersave) governor=powersave;; c|conservative) governor=conservative;; *) echo $getgov exit;; esac for g in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do echo $governor > $g; done echo $(cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor) }}} Als '''gov''' abspeichern und ausführbar machen. Um den Governor ändern zu können, muss es mit Root-Rechten gestartet werden. = Hintergrundinfos und Einstellung im Terminal = == Daten zur CPU-Frequenz auslesen == Alle relevanten Daten zur Taktfrequenz der CPU (wie z.B. mögliche Taktfrequenzen, aktuelle Taktfrequenz, Strategie für Taktfrequenzwechsel etc.) befinden sich in einem Unterverzeichnis von '''/sys'''. Dies ist keine "festes" Verzeichnis wie z.B. '''/usr''' oder '''/home''', sondern wird bei jedem Systemstart bzw. zur Laufzeit dynamisch angelegt. Der Linux-Kernel legt in diesem Verzeichnis viele Systeminformationen ab. Um die Daten der CPU-Frequenz auszulesen, hilft das Verzeichnis '''/sys/devices/system/cpu/cpu0/cpufreq''' weiter. {{{#!vorlage Hinweis Hat man ein Mehrprozessorsystem, so existieren auch die Unterverzeichnisse '''.../cpu1/...''' , '''.../cpu2/...''' etc., je nach Anzahl der Prozessoren. Im Folgenden beziehen sich alle Beispiele auf die erste CPU (also `cpu0`). Alle Angaben sind aber 1:1 auf die anderen CPUs übertragbar. }}} Lässt man sich mit {{{#!vorlage Befehl ls /sys/devices/system/cpu/cpu0/cpufreq/ }}} den Inhalt dieser Verzeichnisse ausgeben, erhält man eine Ausgabe wie z.B. {{{ affected_cpus ondemand scaling_driver stats cpuinfo_cur_freq scaling_available_frequencies scaling_governor cpuinfo_max_freq scaling_available_governors scaling_max_freq cpuinfo_min_freq scaling_cur_freq scaling_min_freq }}} '''ondemand''' (der Name ist abhängig vom gerade verwendeten Governor) und '''stats''' sind Verzeichnisse, alles andere sind Textdateien, welche bestimmte Informationen zur CPU bzw. zur Taktfrequenz enthalten. Fast alle Dateien können ohne weiteres mit [:cat:] in einem Terminal [2] angezeigt werden. Soll z.B. die maximal mögliche CPU-Frequenz ausgelesen werden: {{{#!vorlage Befehl cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq }}} {{{ 1400000 }}} Die Ausgabe erfolgt in KHz, d.h. diese CPU hat einen maximalen Takt von 1,4 GHz. === Details zum laufenden Governor === {{{#!vorlage Befehl cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor }}} {{{ conservative }}} {{{#!vorlage Befehl ls /sys/devices/system/cpu/cpu0/cpufreq/conservative/ # spätestens seit Ubuntu 12.04 entfällt hier "cpu0/" }}} {{{ down_threshold ignore_nice_load sampling_rate sampling_rate_min freq_step sampling_down_factor sampling_rate_max up_threshold }}} Über diese Dateien kann zusätzlich das Verhalten des Governors im Detail beeinflusst werden. Dies wird weiter unten beschrieben ([#Manuelle-nderungen-vornehmen Manuelle Änderungen vornehmen]). Interessierte können die entsprechenden Informationen auch unter [#Weiterfuehrende-Informationen Weiterführende Informationen] nachlesen. === Taktfrequenzgrenzen des Prozessors === ||<-2 tablestyle="width: 97%;" rowclass="titel">Taktfrequenzgrenzen Prozessor|| || Datei || enthält Info zu || ||'''cpuinfo_cur_freq''' ||Die aktuelle Taktfrequenz der CPU. || ||'''cpuinfo_max_freq''' ||Die maximale Taktfrequenz der CPU. || ||'''cpuinfo_min_freq''' ||Die minimale CPU-Frequenz. || === Taktfrequenzgrenzen des Governors === Die Taktfrequenzwechsel müssen nicht unbedingt innerhalb der durch die Hardware (CPU) vorgegebenen Grenzen erfolgen, die Grenzen für die Governor werden über folgende Dateien im Verzeichnis '''/sys/devices/system/cpu/cpu0/cpufreq''' festgesetzt: ||<-2 tablestyle="width: 97%;" rowclass="titel">Taktfrequenzgrenzen Governor|| || Datei || enthält Info zu || ||'''scaling_available_frequencies''' ||Gibt alle möglichen Frequenzen der CPU aus. || ||'''scaling_max_freq''' ||Maximal (für den Governor) erlaubte Frequenz; muss nicht zwangsläufig identisch mit cpuinfo_max_freq sein! || ||'''scaling_min_freq''' ||Minimale (für den Governor) erlaubte Frequenz; muss nicht zwangsläufig identisch mit cpuinfo_min_freq sein! || ||'''scaling_cur_freq''' ||Aktuell vom Governor eingestellte Taktfrequenz|| === Statistik über Taktfrequenzwechsel === Einige Statistiken zu den Frequenzwechseln enthält '''/sys/devices/system/cpu/cpu0/cpufreq/stats''': {{{#!vorlage Befehl ls /sys/devices/system/cpu/cpu0/cpufreq/stats/ }}} {{{ time_in_state total_trans trans_table }}} Den Dateien können folgende Informationen entnommen werden: ||<-2 tablestyle="width: 97%;" rowclass="titel">Statistik|| || Datei || enthält Info zu || ||'''time_in_state''' ||Wie lange wurde mit welcher Taktfrequenz gearbeitet|| ||'''total_trans''' ||Anzahl der Taktwechsel|| ||'''trans_table''' ||Übersicht, wie oft von welcher Frequenz auf welche andere Frequenz gewechselt wurde|| Beispiel: {{{#!vorlage Befehl cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state }}} {{{ 1400000 53513 1200000 2616 1000000 2400 800000 2840 600000 1208171 }}} {{{#!vorlage Befehl cat /sys/devices/system/cpu/cpu0/cpufreq/stats/total_trans }}} {{{ 5477 }}} {{{#!vorlage Befehl cat /sys/devices/system/cpu/cpu0/cpufreq/stats/trans_table }}} {{{ From : To : 1400000 1200000 1000000 800000 600000 1400000: 0 282 258 291 1549 1200000: 52 0 12 12 206 1000000: 48 0 0 14 208 800000: 52 0 0 0 265 600000: 2228 0 0 0 0 }}} == Manuelle Änderungen vornehmen == [[Vorlage(Fortgeschritten)]] {{{#!vorlage Warnung Die unüberlegte oder unvorsichtige Änderung von Dateien, welche die CPU-Taktfrequenz beeinflussen, kann im schlimmsten Fall zur Beschädigung der Hardware führen! }}} [[Anker(Grenzen)]] === Governor und Frequenzgrenzen ändern === Manuell lassen sich folgende Änderungen vornehmen: * maximal erlaubte obere Taktfrequenz * minimal erlaubte untere Taktfrequenz * zu verwendener Governor {{{#!vorlage Hinweis Die [:Shell/Umleitungen:Umleitung] über '''tee''' ist für das Wechseln des Governors notwendig, da ein direktes '''echo conservative > /sys/...''' nicht erlaubt ist und mit einer Fehlermeldung beendet wird. }}} Die Änderungen lassen sich per '''echo''' in die entsprechende Datei schreiben. Im folgenden Beispiel wird zuerst der aktuelle Governor abgefragt, dann die möglichen Alternativen und anschließend der Governor von "ondemand" auf "conservative" gesetzt: {{{#!vorlage Befehl cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor }}} {{{ ondemand }}} {{{#!vorlage Befehl cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors }}} {{{ powersave userspace ondemand conservative performance }}} {{{#!vorlage Befehl echo conservative | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor }}} {{{ conservative }}} Zu bedenken ist, dass die Änderung flüchtig ist, d.h. nach einem Neustart des Rechners muss die gewünschte Änderung erneut vorgenommen werden. Oder man nutzt die folgende Anleitung: [[Anker(sysfsutils)]] == Einstellung bei Systemstart festlegen == Mit Hilfe der '''sysfsutils''' lassen sich Einträge im Verzeichnis '''/sys''' bei Systemstart vornehmen. So ist es z.B. auch möglich, den Governor festzulegen, ohne jedesmal den Befehl ``echo