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.
root@pveneo:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors conservative ondemand userspace powersave performance schedutil
root@pveneo:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor performance
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.
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.
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
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.
|