circuit board closeup

CPU- und Systemtemperaturen niedrig halten

Aus mehreren Gründen ist es sinnvoll, einen Server so zu konfigurieren, dass die Temperatur der CPU, des Mainboards und der enthaltenen Komponenten, wie z.B. Festplatten niedrig bleiben. Kühlere Komponenten unterliegen einem geringeren Verschleiß. Außerdem ist der Strombedarf niedriger und mit ihm auch die Betriebskosten. Stromleitungen und Klimatisierung können ebenfalls kleiner dimensioniert, bzw. mehr Rechner auf der selben Fläche untergebracht werden. Durch geringeren Verschleiß laufen die Server außerdem zuverlässiger. Es ist dadurch mit weniger Ausfällen, sowie einer längeren Gesamtbetriebsdauer zu rechnen, was wiederum Investitionskosten in neue Hardware spart.

Dass kleine Änderungen große Auswirkungen haben können, mussten wir bei unserem letzten Kernel-Update feststellen. Durch unsere umfangreiche Überwachung der Temperatursensoren ist uns hierbei aufgefallen, dass bei manchen Systemen, insbesondere bei denen mit älteren Core i7-Prozessoren, die CPU- und Mainboardtemperaturen stark angestiegen sind. Im Schnitt stiegen diese um ca. 10 Grad Celcius. Wir haben uns daher auf die Suche nach möglichen Ursachen gemacht und sind schließlich beim Kernel-Parameter

CONFIG_HIGH_RES_TIMERS

fündig geworden. Dieser aktiviert die High Resolution Timers, also die Möglichkeit zur Nutzung sehr fein auflösender Zeitmessungen. Leider ist es in unserem Fall nicht einfach möglich,

CONFIG_HIGH_RES_TIMERS

auszuschalten, da diese für die Unterstützung der Hardware-Virtualisierung mit KVM benötigt werden.

Eine weitere Kernel-Einstellung, welche die Temperatur des Systems steigen lässt, ist die Timer Interrupt Frequenz. Sie wird über die Einstellung

CONFIG_HZ

konfiguriert und gibt an, wie oft der Kernel die laufende Arbeit unterbricht, um z.B. Taskwechsel durchzuführen. Typische Werte sind 1000 Hz für Desktop-Systeme, sowie 250 Hz. Für Server reicht der letztere Wert in der Regel vollkommen aus.

Inzwischen gibt es jedoch auch die zuverlässige Möglichkeit, den Timer Interrupt ganz auszuschalten. Aktiviert wird dieses Verhalten durch das Setzen der Kernel-Option

CONFIG_NO_HZ_FULL

. Der Timer wird dann nicht mehr regelmäßig aufgerufen. Stattdessen findet eine dynamische Behandlung statt und der Timer wird insgesamt viel weniger aktiviert. Dadurch fallen dann auch die High Resolution Timers nicht mehr so stark ins Gewicht. Man sollte jedoch darauf achten, dass eventuell auf dem Server laufenden virtuelle Maschine ebenfalls keinen regelmäßigen Timer aktiviert haben.

Zuletzt beeinflusst natürlich die Frequenz, in welcher die CPU getaktet ist, auch direkt deren Temperatur. Systeme, auf denen die CPU stark genutzt wird, sollten hierbei mit der vollen Taktfrequenz laufen. Es gibt jedoch auch viele Systeme, welche einen großen Teil ihrer Zeit auf Arbeit warten. Bei diesen kann die CPU-Frequenz so eingestellt werden, dass sie in der Regel niedrig ist (z.B. 1,6 GHz) und nur bei aktuellem Bedarf automatisch erhöht wird (z.B. auf 3 GHz). Das Verhalten der CPU lässt sich hierbei über das Kommando

cpupower frequency-info

abfragen. Die Steuerung der CPU-Frequenz geschieht dabei über sogenannte Governor. Dies sind Regler, welche nach verschiedenen Kriterien entscheiden, ob eine CPU niedrig oder hoch getaktet werden soll. Der Governor performance betreibt die CPU hierbei immer mit der höchstmöglichen Frequenz. Der Governor ondemand verwendet stattdessen bei schwacher Last immer die niedrigste Frequenz und erhöht diese nur bei Bedarf. Um die CPU auf den Governor ondemand umzustellen genügt das folgende Kommando:

cpupower frequency-set -g ondemand

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.