I was told to make yet another thread in Bug Report to report this issue.
All Ryzen third generation Zen 2 processors cause Heroes of the Storm to incorrectly display the reduced CPU power warning. In my case I am using the Ryzen 9 3900X, however others have reported the exact same issue with the Ryzen 5 3600X and Ryzen 7 3700X. Hence supporting my argument that this bug applies to all Zen 2 processors. Having the warning icon constantly showing is kind of annoying, especially when HotS is performing very well and not showing any signs of there being a CPU issue.
The warning is clearly being displayed as a false positive. Game performance is awesome, with FPS never dropping below 120 (possibly GPU bottlenecked in my case) with highly consistent frame times and <7% CPU usage (my case as the 3900X is 12 core, the 8 and 6 core parts will show proportionally larger CPU usage). Even if the CPU is running in a reduced power state it really should not be reported as a problem when performance is this good.
I suspect the algorithm does not like how AMD’s Precision Boost 2 operates. It will alter core clocks every millisecond (AMD’s recommended AMD Balanced power plan). To optimize performance and power efficiency, precision boost 2 will likely have most of the idle cores disabled as workloads like HotS will require the use of at most 2-3 at any given time. Disabled cores report a nonsense clock frequency back if queried, specifically the last frequency they were operating at which might be as low as 400 MHz. Even non-disabled cores might be running at a lower than base clock speed as Precision Boost 2 will only push up the clock if the active workloads demand it.
Precision Boost 2 has 3 clear modes of operation which will be selected based on what workload is running on the system. There is low power mode where all cores are enabled, operate at a very low voltage (sub 0.4V) and at 400 MHz. Low power mode is mostly used to idle the processor if there are no demanding workloads to execute, e.g. staring at a blank desktop with all background applications closed. Then there is single thread low power mode where the processor shuts down most of the cores except 1-2, raises the voltage to 1V and runs at 1-2GHz odd. Single thread low power mode is run when all cores are still idle most of the time but there is enough CPU usage that the 400 MHz of low power mode is not sufficient, for example updating a Discord window. Both these modes are lower power modes, use approximately the same power and do not effect Heroes of the Storm as Heroes of the Storm applies a high single core utilization and so requires high power performance mode.
Precision Boost 2 high power performance mode has the voltage at the maximum operating voltage (varies on bin of each core and workload), pushes frequency to maximum on the required cores while disabling any cores which are idle. By keeping idle cores disabled the remaining cores can be given a larger chunk of the controlling limits allowing them to achieve clock speeds very close to the advertised boost clock for low threaded applications. If an application operates more threads then more cores will be quickly made active at full performance as appropriate however doing so may cause the CPU to run into controlling limits and so force the average active core frequency down to stay within these limits. What this means is a chip like the Ryzen 9 3900X will hit around 4.4-4.6 GHz running HotS but only 3.9-4.1 GHz running a heavy all core AVX load. The end result is that games like HotS running in this high power performance mode, which they will do automatically when using the AMD Balanced power plan, run fantastically.
I suspect the bug might be with measuring CPU clock speed. Apparently disabled cores, cores not currently needed for the system workload, report their last active clock speed which is usually either 400 MHz or 1-2 GHz when a workload like HotS is being run in the high power performance mode. Seeing how this is well below the base frequency and an extremely low frequency for modern x86-64 processors this could easily fool some sort of classic CPU throttling detection algorithm that the CPU is operating in a reduced performance state despite it operating optimally.
As such either the detection method being used for the reduced CPU power warning needs to be updated to factor in the mechanics of Precision Boost 2 running the AMD Balanced power plan or the warning has to be disabled when HotS is detects it is running on a Zen 2 processor. If one wants to update the warning logic I would recommend contacting AMD as there might be an intended approach to detecting if the CPU is stuck in such a state. Otherwise most owners of Zen 2 would be happy having the icon not showing for them, since as it currently stands the warning is utterly useless for them anyway as it shows 100% of the time even when there is no problem.
Note the terminology I used above to describe the modes of how Precision Boost 2 works is of my own creation based on observations of my 3900X under various workloads with Ryzen Master. AMD and other people likely refer to them differently.