Proxmox: AMD Epyc Milan CPU frequency wrong

Yesterday I installed a fresh Proxmox node on my new server with an AMD Epyc Milan processor. During first install, I got the following error message:

pve kernel: [Firmware Bug]: ACPI: Invalid BIOS _PSS frequency found for processor 0: 0x0 MHz

This repeated itself for every core (32 in total).

Proxmox installed fine despite this, but does present an issue in daily use. The CPU max frequency is reported as 2200 MHz in lscpu and this is also the maximum frequency that the CPU is running at. As the CPU can do 3700MHz, this is really an issue.

I’ve tested the server extensively with a bare metal Windows install, and there the CPU worked perfectly on the highest CPU frequency, scaled back, throttle up etc, just how it should work. For me, this rules out a bios setting (unless there is an issue with Proxmox and the ACPI state).

Anyone an idea what’s going on?

Updated prox to latest version yet?

6.4.x?

And the latest kernel? I wrote a thread some months ago here about enabling turbo which was off by default on epyc ok proxmox

Running 6.4.8 and just updated to 5.11.

Still seeing the error, but max frequency DID get bumped to 2734MHz…Only 1GHz to find… :wink:

Thanks @nx2l and @wendell , gonna search for your post!

Found the post and went thru it. Output of cpupower:

analyzing CPU 0:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency:  Cannot determine or is not supported.
  hardware limits: 1.50 GHz - 2.73 GHz
  available frequency steps:  2.20 GHz, 1.50 GHz
  available cpufreq governors: conservative ondemand userspace powersave performance schedutil
  current policy: frequency should be within 1.50 GHz and 2.20 GHz.
                  The governor "performance" may decide which speed to use
                  within this range.
  current CPU frequency: 2.20 GHz (asserted by call to hardware)
  boost state support:
    Supported: yes
    Active: no
    Boost States: 0
    Total States: 3
    Pstate-P0:  3600MHz
    Pstate-P1:  2000MHz
    Pstate-P2:  2100MHz

So how do I set Boost state to active?

1 Like

Went thru the whole post 5 times, but nowhere I can find how to set Boost state to active…

Creating a systemd service to enable turbo boost

https://forum.level1techs.com/t/gigabyte-server-activity-corner-proxmox-docker-and-config-notes/167614#creating-a-systemd-service-to-enable-turbo-boost
2 Likes

From that post:

!/bin/sh
echo 1 > /sys/devices/system/cpu/cpufreq/boost

cpupower -c all frequency-set -g performance

Don’t skip around on a post like that because you can look over it because you don’t know what you don’t know. It’s in that order for a reason.

Solve the cpupower stuff first because it creates a service then check the device in proc/look at the output for boost and finally you can reboot and see if it sticks. Probsbly not. So you can create a services to echo boost back into /proc . . .

1 Like

I did follow the instructions step by step, @wendell and even changed systemctl enable turbo-boost to systemctl enable enable-turbo as posted in the comments.

As I didn’t get the correct result, I went over the whole post a few times to be sure I didn’t miss anything.

Problem is/was that it din’t seem to do anything and the Turbo boost didn’t become active. As last resort, I went into the bios and adjusted a few things:

  • Set ‘DFC States’ to Enabled
  • Set EfficiencymodeEn to Enabled
  • Set cTDP and PPL to 180W (max for my CPU)

After restart:

driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency:  Cannot determine or is not supported.
  hardware limits: 1.50 GHz - 3.73 GHz
  available frequency steps:  3.00 GHz, 2.20 GHz, 1.50 GHz
  available cpufreq governors: conservative ondemand userspace powersave performance schedutil
  current policy: frequency should be within 1.50 GHz and 3.00 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency: 1.50 GHz (asserted by call to hardware)
  boost state support:
    Supported: yes
    Active: no
    Boost States: 0
    Total States: 3
    Pstate-P0:  3600MHz
    Pstate-P1:  2000MHz
    Pstate-P2:  2100MHz

So although the Boost State Active is till off, the Pstates are reported correctly and also the output of lscpu shows that it actually working:
CPU MHz: 3543.6503
CPU max MHz: 3729.4919
CPU min MHz: 1500.0000

So, conclusion for me: setting correct cTDP and PPL was needed in order to get the correct frequencies.

Thanks for the help!

2 Likes

cat /sys/devices/system/cpu/cpufreq/boost ?

If it’s zero echo 1 in there. Something still doesn’t seem right

1 Like

It’s 1…Strange, isn’t it?