Windows not using best cores for single thread loads 5950x

bobzdar

[H]ard|Gawd
Joined
Jun 6, 2003
Messages
2,003
Picked up a 5950x Friday and have been experimenting with PBO and CO, running the latest beta bios from asus. Out of the box it was a bit disappointing, getting around 660 single and 11200 multi in cpu-z (which is what I'll reference). It was only hitting around 4.15ghz all core, which seemed low, but at an almost ridiculously low 60C max temp. I turned on pbo with board limits and it immediately jumped up to 12200 all core and 4.35ghz. Not bad but not great. I then played around with Curve optimizer and have it set to -10 for my 4 best cores (2 per ccx) and -30 for the rest with 125 boost. This gave me 674 single and ~13200 multi with temps reaching mid-low 80s, speed around 4.525ghz all core. Pretty happy with that all things considered, except for the single core which should be in the 680-700 range.

Watching either ryzen master or hwinfo64, windows is not using any of the labeled best cores - it's using core 0 and 5, mostly 0, neither of which are rated very well and top out around 4.825-4.9. The best two cores on that ccx are 1 and 3, which in hwinfo show peaks over 5.1 (5.125 the highest I've seen). Any ideas why and how to get windows on the same page without manually setting core affinity? Latest chipset drivers, balanced power plan, windows version 2004.

System is on 24/7 and I've yet to have any kind of application crash or issue. I've run a few games and did a photogrammetry reconstruction, which stresses both cpu and gpu, no issues (and extremely fast). Ram is running 3200mhz cl15 for now. The single thread performance is not a big deal, but I do have a couple of VR games that hammer a single thread with geometry calls so having that run on the best cores could give a small performance boost. For all core I think I'm at the limit of my cooling, and all but a couple of those VR games are gpu limited anyway, even with a 3090, so it's a minor issue, but bothering me a bit.
 
I have the same problem on my 5950X with AGESA 1.2.0.0. Single-threaded workloads are using C03/C06 when 04/10/01/90 are my best cores. Not clear why, assume it's a BIOS or AGESA bug, or maybe those cores were running hotter at the instant the windows scheduler decided which cores to use.

I agree it's a pretty minor issue, it isn't deeply concerning like my idle crashes were on earlier BIOS revisions so I'm not gonna revert.
 
I dug up an article on it. https://www.anandtech.com/show/15137/amd-clarifies-best-cores-vs-preferred-cores It's written for the 3000 series, but it sounds like it still applies to Zen 3 based on what you two are seeing.

It basically boils down to the Windows scheduler is a bit dumb so AMD lies to it in an effort to improve performance in lightly threaded loads. The Windows scheduler also has this feature that likes to rotate a single threaded load back and forth between two cores. The idea is it's supposed to improve thermals by spreading out heat and allow more boost. Because of that AMD reports the two most preferred cores as the best pair of cores for Windows thread ping-pong and the layout of the CXX apparently matters.

Ryzen Master and some other utilities use a proprietary AMD API to get at the core performance data, and that API reports performance capabilities rather than a priority ordering and typically does not match what AMD is telling the Windows scheduler.
 
In previous BIOS revisions single-threaded stuff ALWAYS went on cores 01/04, as my CPU's best and second-best on CCD1. Something changed in later BIOS revisions, that's all. This isn't how it's supposed to work.
 
Hmm...there is a 1.2.0.0 update available for my board. I'm still on 1.1.0.0 D. Not sure if I should update or not.
 
Don't upgrade your BIOS unless you're having problems. Why put yourself through that?
 
Which memory kit do you have? 3200 CL15 seems sub par for a 5950X and 3090 build. You're leaving some performance on the table here.
 
I had to RMA my 3600Mhz CL16 RAM and used my old CL18 2666Mhz RAM for a couple weeks. My cinebench multicore scores dropped by a whopping 1.7%-- and my single core scores were identical. Of course that's one synthetic benchmark and not actual games where I didn't go out of my way to compare, but my computer felt absolutely identical with the slow-ass RAM from my old 6700K.
 
I had to RMA my 3600Mhz CL16 RAM and used my old CL18 2666Mhz RAM for a couple weeks. My cinebench multicore scores dropped by a whopping 1.7%-- and my single core scores were identical. Of course that's one synthetic benchmark and not actual games where I didn't go out of my way to compare, but my computer felt absolutely identical with the slow-ass RAM from my old 6700K.
Some games like Hitman and Tomb Raider gain more than 20% from 3200Mhz to 3600-3800Mhz on Ryzen 5000 and a 3090:

https://www.techspot.com/article/2140-ryzen-5000-memory-performance/
 
If you go down to the frequency scaling section to keep it apples to apples, 3600Mhz only beat 3200Mhz by 5.4% and that's the best case scenario at 1080p. It ain't nothing, but not s huge deal either.
 
Some games like Hitman and Tomb Raider gain more than 20% from 3200Mhz to 3600-3800Mhz on Ryzen 5000 and a 3090:

https://www.techspot.com/article/2140-ryzen-5000-memory-performance/
The difference isn't that big with dual rank, which is what I'm running in 4x8gb config. Some good dual rank 3600mhz ram might gain me a little, but I think the money might be better spent on upgraded cooling. I'm running the ram in sig, corsair lpx 3000 cl15@3200. I haven't tried faster, just set docp, 1.4v and upped it to 3200mhz. I have had zero luck with ismus dram tuner, but the ram is on the mobo qvl so at least has proper subtimings set by default. Fwiw, this is the original kit I bought at the original ryzen launch with my r7 1700, so I've gotten my money's worth!
 
I dug up an article on it. https://www.anandtech.com/show/15137/amd-clarifies-best-cores-vs-preferred-cores It's written for the 3000 series, but it sounds like it still applies to Zen 3 based on what you two are seeing.

It basically boils down to the Windows scheduler is a bit dumb so AMD lies to it in an effort to improve performance in lightly threaded loads. The Windows scheduler also has this feature that likes to rotate a single threaded load back and forth between two cores. The idea is it's supposed to improve thermals by spreading out heat and allow more boost. Because of that AMD reports the two most preferred cores as the best pair of cores for Windows thread ping-pong and the layout of the CXX apparently matters.

Ryzen Master and some other utilities use a proprietary AMD API to get at the core performance data, and that API reports performance capabilities rather than a priority ordering and typically does not match what AMD is telling the Windows scheduler.
I believe I read another article that says ryzen master now uses the same criteria as windows, so I'm not sure what to believe.

What's interesting is on desktop when the rest of the cores are sleeping, Windows does use the 2 best cores for whatever tasks crop up. I'm thinking maybe because cpu-z runs an all core stress first, those 2 cores are a little hotter so it preferences some cooler cores instead for the single core benchmark portion. I'll try some cb single core in a cool system to see how it behaves.
 
Well, it somehow seeems to have fixed itself. I didn't make any changes and no updates loaded that I'm aware of and it's now preferencing the fastest cores. Cpu-z hitting 683 single, probably the limit with the current setup, 4.875 was the highest I was seeing continuous with transient peaks up to 5.125. Maybe the kryonaut is breaking in and giving more even heat transfer?

3 days of uptime, but being broken now by some inevitable updates.
 
Back
Top