[[Vorlage(Getestet, general)]] {{{#!vorlage Hinweis Je nach Prozessortyp stehen gegebenenfalls nicht alle in diesem Artikel beschriebenen Abfrage- und Einstellmöglichkeiten zur Verfügung. }}} {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Paketquellen_freischalten: Bearbeiten von Paketquellen] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] [:GNOME_Konfiguration: Konfigurationseditor starten] }}} [[Inhaltsverzeichnis(2)]] [[Bild(Wiki/Icons/config.png, 48, 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)]] = Arbeitsweise der Governors = ||'''Governor''' ||'''Beschreibung''' || ||''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'' ||Die CPU läuft permanent auf der höchsten erlaubten Taktfrequenz. || ||''powersave'' ||Die CPU läuft permanent auf der niedrigsten erlaubten Taktfrequenz. || ||''userspace''||Dies ist kein Kernel-eigener Governor, vielmehr wird ein Governor im Userspace verwendet, wie z.B. [:powernowd:]. || {{{#!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 die CPU voll ausgelastet ist (z.B. Videokodierung, aufwendige Spiele) und man dabei Strom sparen muss. Oder wenn ein Lüfter lärmt, der zu Ungunsten der Systemleistung langsamer drehen und damit leiser werden soll. In allen anderen Fällen heisst die __stromsparendste__ Variante - auch bei Laptops im Akku-Betrieb - '''ondemand'''. }}} = Taktfrequenzanpassung beeinflussen = Für die Regelung der Taktstufen hat man zwei Möglichkeiten: grafisch mit GUI oder im Terminal. == GNOME == 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) enthalten ist. Der entsprechende Paketname lautet [1]: * '''gnome-applets''' Nun führt man einem 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(./cpufreq-applet.png,75, 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. Das Ändern der Taktraten für alle anderen Benutzer kann __bis__ Ubuntu 8.04 [:Hardy_Heron:] über den (einmaligen) Befehl {{{#!vorlage Befehl sudo chmod +s /usr/bin/cpufreq-selector }}} erlaubt werden. [[Bild(./Prozessortaktstufen_intrepid.png,150, align=right)]] Ab Ubuntu 8.10 [:Intrepid_Ibex:] 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. {{{#!vorlage Hinweis Unter Ubuntu 9.10 [:Karmic_Koala:] gibt es Probleme mit diesem Applet. Hier hilft folgende provisorische Lösung: Mit [:sudo:Root-Rechten] die Datei '''/var/lib/polkit-1/localauthority/50-local.d/gnome-cpufreq.pkla''' anlegen und diese Zeilen einfügen: `[Allow users to set the CPU frequency]`\\ `Identity=unix-group:`\\ `Action=org.gnome.cpufreqselector`\\ `ResultAny=no`\\ `ResultInactive=no`\\ `ResultActive=yes` `` muss durch den eigenen Benutzernamen ersetzt werden! }}} === 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 [5] 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. Achtung: diese Schlüssel fehlen unter Ubuntu 9.10 [:Karmic_Koala:]. {{{#!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. }}} == GNOME: emifreq-applet == Für GNOME gibt es noch die Möglichkeit, die Prozessortaktfrequenz mit Hilfe des [http://zzrough.free.fr/emifreq.php emifreq-applet] {en} im [:GNOME_Panel:] zu ändern. Dazu installiert man folgendes Paket: * '''emifreq-applet''' (''universe'' [2], nur bis Ubuntu 9.04 [:Jaunty_Jackalope:]) und fügt das Applet dem Panel hinzu. Anschließend wird die aktuelle Prozessortemperatur angezeigt, fährt man mit dem Mauszeiger über das Icon des Applets, so wird die aktuelle Taktfrequenz angezeigt. Klickt man mit der linken Maustaste auf das Icon, kann man zwischen verschiedenen Taktfrequenzen wählen. Die Einstellmöglichkeiten via emifreq-applet sind im Vergleich zu den Möglichkeiten der Einstellung "von Hand" zwar eingeschränkt, in der Regel jedoch völlig ausreichend. [[Anker(kde4)]] == KDE == Unter [:KDE:] gibt es die Möglichkeit, über '''Solid''' bzw. dessen '''solidshell''' den Prozessortakt zu beeinflussen. Um den "Governor" zu wechseln , öffnet man ein Terminal [3] und verwendet den Befehl {{{#!vorlage Befehl solidshell power set cpufreq ondemand }}} um den "Ondemand Governor" zu setzen. == 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"'', ''"CPUFreq"'' oder ''"Governor Plugin"'' hinzu. Die Paketnamen lauten [1]: * '''xfce4-cpu-freq-plugin''' (''universe'' [2], Anzeige und Änderung der Taktfrequenz) * '''xfce4-cpufreq-plugin''' (''universe'', nur Anzeige der Taktfrequenz) * '''xfce4-governor-plugin''' (''universe'', Anzeige und Änderung des Governors) Alternativ ist es auch möglich, durch Installation des Pakets * '''xfce4-xfapplet-plugin''' GNOME Panel-Applets unter Xfce auszuführen. = 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 [3] 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/ }}} {{{ 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 === || '''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: ||'''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: ||'''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