A newly discovered bug in Windows 10's scheduler has been found to be negatively affecting performance of AMD Ryzen CPUs. The bug has been confirmed to affect all Windows 10 versions but not Windows 7. It's not clear yet if Windows 8.1 is affected.

Growing Pains With AMD's New Simultaneous Multi-Threading

Ryzen processors are AMD's first ever to feature simultaneous multi-threading technology. Which enables each CPU core to execute two threads simultaneously. A primary thread for each core in addition to one auxiliary thread for added throughput in highly threaded workloads. The principle thread executed by each core is allocated maximum instruction per clock throughput, i.e. maximum performance. The additional SMT thread on the other hand can only opportunistically leverage underutilized resources in a given core.

AMD Ryzen 7 2700X 3DMark Benchmarks Leaked, 18% Faster vs 1700X & Cheaper

Intel's hyper-threading technology works in a very similar fashion. Providing each "hyper-thread" with only a fraction of the resources available to the principle thread in any given CPU core. In best case scenarios SMT provides about 20-30% of additional throughput give or take in both Intel's latest Skylake microarchitecture and AMD's Zen microarchitecture.

Not All Threads Are Created Equal

Windows 10' scheduler correctly identifies Intel's hyper-threads as lesser performing than principal core threads and schedules tasks in a way that's takes advantage of the additional throughput without negatively impacting performance. Unfortunately the scheduler currently is not able to differentiate principal core threads from virtual SMT threads with Ryzen and in fact sees 16 thread Ryzen 7 processors as processors with 16 physical cores with equal resources per thread.

Because it does not give any preferential prioritization of scheduling tasks to primary threads over SMT threads like it does on Intel platforms, a massively larger percentage of tasks can and do end up getting scheduled for a virtual SMT thread rather than a principal core thread. Resulting in significant artificial performance degradation.

Ryzen In The Eyes Of The Windows 10 Scheduler

It also incorrectly identifies the amount of cache available per thread. Adding up the amount of L2 and L3 cache Windows 10's scheduler "thinks" is there totals to an insane 136MB of cache, when Ryzen 7 in fact only has 20MB of L2+L3 cache combined.