[SOLVED] Proxmox has ACPI disabled in kernel ?

May 16, 2020
271
16
38
51
Antwerp, Belgium
commandline.be
The machine on which i have proxmox 6.2 VE installed is not constantly in use but runs at max CPU all the time. I installed acpid to have it manage CPU states properly.

When i run yacpi or acpitail i get a message suggesting ACPI is not available for this system. The BIOS has all power managed set to enabled or automatic. I provide no boot options to disable acpi. Somewhere i got the hint ACPI support was simply not compiled into the kernel ? If so, how do i make sure the system goes to lower CPU Mhz when idle and spins back up to normal speed ? No need for it to sleep, hibernate, suspend, just lower powerstates.

Using powertop i found a number of values set to BAD which i callously set to Good, which essentially writes a value to paths exposed in /proc or /sys.
 
We do not disable ACPI support at all, as you can see when checking the Kernel build config (you may need to adapt the path)
grep ACPI /boot/config-5.4.41-1-pve.

Does the kernel log mention ACPI it in your setup?
dmesg | grep -i acpi

What mainboard are you using?
 
Hmm, OK so that seems to do well.

The system doesn't uses frequency scaling as the default governor is set to "performance", which disables that. This is done for two reasons:
1. it actually gains a bit of performance as wrong scheduler decisions and frequency ramp-up periods are avoided.
2. it avoids issues with some VM operating systems which cannot cope well with frequency changes in virtualized environments, albeit that should mostly older OS versions (I didn't run any test regarding that since a long time).

You can check the current enabled one by executing as root:
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

You can check which ones you have available:
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
(newer desktop Intel CPUs have only performance or powersave, AMD should do better here)

To change it to on demand until the next reboot:
for cpu in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do echo ondemand >"$cpu"; done

See also: https://wiki.archlinux.org/index.php/CPU_frequency_scaling#Scaling_governors