Hardwaretipps | David Wolski | 2/2025 | 31. Januar 2025

Cputemp: Temperaturlimit als Dienst

Cputemp regelt die Taktfrequenz von Intel- und AMD-CPUs, um unterhalb der angegebenen Temperatur zu bleiben.

Neue Prozessoren werden in beengten Notebooks unter Last oft sehr heiß. Heiß gelaufen takten sie sich automatisch herunter, um Schaden abzuwenden. Doch ist der Lärmpegel maximal rotierender Lüfter bei der Arbeit alles andere als angenehm.

Für Linux gibt es schon länger das Wächterprogramm Thermald von Intel, das als Systemdienst im Hintergrund läuft und über ACPI (Advanced Configuration and Power Interface) die Temperaturen ausliest. Sind diese zu hoch, dann tritt Thermald auf die Bremse und regelt den maximalen CPU-Takt herunter. Thermald (https://github.com/intel/thermal_daemon) ist in Ubuntu und Varianten vorinstalliert und aktiv, in anderen Distributionen über die Paketquellen nachinstalliert. Es funktioniert aber nur mit Intel-CPUs, ist also auf AMD-Systemen wirkungslos und deaktiviert sich sofort beim Systemstart, wie eine Abfrage mit

sudo systemctl status thermald

bestätigt. Das alternative Tool Cputemp (https://github.com/shibatch/cputemp) überwacht als Hintergrunddienst die Temperatur über lm-sensors und regelt die Taktfrequenz des Prozessors herunter, wenn eine vordefinierte Temperatur erreicht ist. Es funktioniert mit Intel- und mit AMD-CPUs. Zur Vorbereitung muss das Paket „lm-sensors“ installiert sein, was in Debian/Ubuntu 

sudo apt install lm-sensors

erledigt. Die Ausgabe des Befehls „sensors“ im Terminal zeigt dann die erkannten Sensoren und die Messwerte in Celsius an. Cputemp liegt nur im Quellcode vor, doch wir haben das Programm für Linux mit 64 Bit (x86-Plattform) vorkompiliert. Es liegt als „cputemp“ auf Heft-DVD. In Fedora verlangt es die zusätzliche Bibliothek „libbds“, die dort mittels

sudo dnf install libbsd

nachzurüsten ist. Die Datei von Heft-DVD wird nach der Kopie in ein beliebiges Verzeichnis mit dem Kommando

chmod +x cputemp

ausführbar gemacht und „./cputemp“ ruft dann das Kommandozeilenprogramm auf. Es zeigt einen Hilfetext an und in der letzten Zeile die IDs der erkannten Temperatursensoren. Auf AMD-Systemen lautet die ID des gewünschten Sensors meist „k10temp“. Mit diesen Angaben ausgestattet, kann Cputemp dann seine Arbeit aufnehmen:

sudo ./cputemp --sensor k10temp --temp 80 --verbose

So läuft Cputemp im Terminal für einen Test im Vordergrund und hält die Temperatur des Sensors „k10temp“ auf maximal 80 Grad, wobei es die CPU bei Bedarf herunterregelt. Strg-C bricht den Testlauf ab. Funktioniert das Programm wie erwartet, kann ein dauerhafter Systemd-Dienst eingerichtet werden. Dazu verschiebt der Befehl

sudo mv cputemp /usr/local/bin/

sudo chown root:root /usr/local/bin/cputemp

die Programmdatei in ein Systemverzeichnis und passt die Rechte an. Systemd benötigt dann unter „/etc/systemd/system/“ noch eine Servicedatei namens „cputemp.service“, die der Editor Nano beispielsweise mittels

sudo nano /etc/systemd/system/cputemp.service

erstellt. Sie erhält als Inhalt die Zeilen aus dem Kasten „Listing: cputemp.service“ (eine vorbereitete Datei findet sich auch auf Heft-DVD). Der Name des Sensors hinter dem Parameter „–sensor“ muss, die gewünschte Maximaltemperatur nach „–temp“ kann optional angepasst werden. Die Eingabe

sudo systemctl daemon-reload

übernimmt die neue Service-Datei und

sudo systemctl enable --now cputemp.service

aktiviert und startet den Dienst. Wird er später nicht mehr benötigt, schaltet ihn das Kommando

sudo systemctl disable --now cputemp.service

wieder ab.