CPU Governor unter Linux setzen

Aus Thomas-Krenn-Wiki
Zur Navigation springen Zur Suche springen

Dieser Artikel zeigt auf, wie man unter Linux den CPU-Governor auslesen und auch ändern kann. Der CPU-Govenor gibt an, in welchem Frequenz-Bereich der CPU sich ein Prozessor-Kern befinden darf. Möchte man z.B. maximale Performance für alle CPU-Kerne haben - und das zu jeder Zeit - so kann man dies über eine Änderung des CPU-Governors erreichen. Wichtig: das Ändern der CPU Scaling Governor kann negative Auswirkung auf den Strom-Verbrauch Ihres Server haben, da die automatische Regulierung der CPU (Energiespar-Modi) z.B. vollständig deaktiviert werden kann.

Verfügbare Scaling Governor

root@pveneo:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
conservative ondemand userspace powersave performance schedutil

Aktiver Scaling Governor

root@pveneo:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
performance

Scaling Governor setzen

Möchte man einen anderen als den bisher aktiven Scaling-Governor setzen, so kann man dies mit einem echo-Kommando

echo performance | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor 

Wichtig: mit der Angabe von cpu*, im oben genannten Befehl, wird der Governor auf allen verfügbaren CPU-Kernen neu gesetzt.

CPU-Frequenz überprüfen

Mit watch 'cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq' kann man live beobachten, ob sich die CPU-Frequenz nach dem Setzen des Scaling Governors automatisch ändert.

Persistente Konfiguration

Die Änderung mit dem oben beschriebenen Verfahren ist nicht rebootfest. Mit einem Cronjob, welcher beim Systemstart ausgeführt wird, kann man die CPU-Governor jedoch automatisiert neu setzen lassen. Besser wäre jedoch ein seit Kernel 5.9 verfügbarer Kernel-Parameter: cpufreq.default_governor=<WERT>, welcher wie folgt gesetzt werden kann:


## Bei Legacy-Systemen mit Grub, die Grub-Datei editieren
root@pveneo:~# nano /etc/default/grub

## Bei Systemd UEFI-Systemen mit systemd-Boot, die cmdline editieren
root@pveneo:~# nano /etc/kernel/cmdline

## Kernel Parameter hinzufügen (Beispiel: Grub)
GRUB_CMDLINE_LINUX_DEFAULT="quiet cpufreq.default_governor=powersave"

## Grub Update
root@pveneo:~# update-grub
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-6.5.13-1-pve
Found initrd image: /boot/initrd.img-6.5.13-1-pve
Found linux image: /boot/vmlinuz-6.5.11-8-pve
Found memtest86+ 64bit EFI image: /boot/memtest86+x64.efi
Adding boot menu entry for UEFI Firmware Settings ...
done

## Bei systemdboot
proxmox-boot-tool refresh
update-initramfs -u

## Server neustarten
root@pveneo:~# reboot

## Überprüfen, ob der Parameter aktiv ist
root@pveneo:~# cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-6.5.13-1-pve root=/dev/mapper/pve-root ro quiet cpufreq.default_governor=powersave

Validieren kann man die Funktion des Kernel-Parameters dann auch, indem man den Scaling-Governor direkt nach dem Reboot neu ausliest.

root@pveneo:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
powersave
Foto Jonas Sterr.jpg

Autor: Jonas Sterr

Ich beschäftige mich mit den Themen Software Defined Storage, Proxmox Virtualisierung auf Basis von KVM, QEMU & Ceph im Produktmanagement der Thomas-Krenn.AG in Freyung. Proxmox ist meine absolute Leidenschaft und ich freue mich gerne über Kontaktanfragen und einen Austausch auf LinkedIn.


Das könnte Sie auch interessieren

Linux
SSH Key unter Windows erstellen
Wake on LAN unter Linux