In Windows, there’s a fun bug with Ryzen CPUs (I know it at least affects the 3000 series), where the CPU fan spins up all over the place, regardless of BIOS configured fan curves. A known workaround for this is to set the minimum and maximum CPU performance as 99% in WIndows’ power management settings.
Once I finally found this out a year or so ago, I was relieved to not have the fans spinning up all the time. I’m now trialling switching to Linux full-time as I’m sick of dealing with Windows’ “quirks”; however, I’m unsure of how to remedy the issue here. Any input would be greatly appreciated!
Does this workaround actually make your CPU permanently rev at 99% or is there a second bug in the governor that makes everything work fine?
Does your motherboard have software that lets you set the fan curve while the computer is running? I think MSI and Asus have this. Maybe this would stick better inside of Windows.
The Ryzen CPU depends heavily on a low-power state called cc6 sleep. In this sleep state, core clockspeeds and voltages are basically nil as the core is sleeping and gated. It is not possible to report out the state of the core in this sleep state without waking the core, probing the status, and killing the power savings of cc6. Therefore, MOST tools can only show you the last clock and voltage of the core before the core went to cc6. So if you were at
full 4.5GHz+ boost @ 1.48V, then the core went to sleep, many tools might show the core(s) stuck at that value. The tool just doesn’t know any better.
As I understand it, cc6 sleep faltering is what causes the issue I’m experiencing.
As mentioned in my opener, sadly configuring the fan curve within the BIOS doesn’t impact this issue.
Maybe “fan smoothing” works? That should delay speedups/slowdowns a bit – which should prevent it from jumping around. It should be separate from the curve.
Okay, so I figured this out after not touching it for a few months. Turns out, Linux doesn’t include the it87 kernel module for my it8792-isa-0a60 (B450 AUORUS PRO WIFI Mini-ITX Motherboard), meaning that Linux couldn’t see my fan speed whatsoever. I manually compiled and installed the module via GitHub - a1wong/it87, and I’ve got no issues now
Interestingly, along the way I discovered that if I set my fan curve via my BIOS slightly too low, my ethernet stops working regardless of the OS. Which is…cool