• Welcome to TechPowerUp Forums, Guest! Please check out our forum guidelines for info related to our community.

Cores first or threads?

@clutchc
lol, this isnt "yahoo answers" :D


@Snootch
nope, they cant assign cores. or we wouldnt need things like process lasso to "fix" it, or ppl with more than 8C wouldn't see fps improvement by turning smt off.
win is tweaked for intel (years of being the "top" cpu), which werent doing much with cores until zen.

Consider what you just said. You say you can't programmatically assign cores and in the same sentence bring up lasso.... So is lasso assigning cores with magic lol. You absolutely can assign cores and threads to whatever you want. Most for the sake of compatibility and the many flavors of CPU's choose to let the OS scheduler handle it.

Some reading:

Example C++
C++:
#include < Windows.h>
 
int main()
{
           ::SetProcessAffinityMask(GetCurrentProcess(), 0xf/*first 4 cpus*/);
}
 
Windows does a remarkably good job at it too. You create 8 software threads on 8 logical processors without being explicit, Windows will stick one thread on each. Even if you run two instances of the program with normal priority, it will roughly split the process time between the two threads in half. Sure, it won't get done as fast at either task because it takes time for the processor to switch contexts but Windows won't give either preferential treatment unless the thread priority demands it.

Looping back to the question the title poses: Cores first or threads? To software, there are no cores, only logical processors (thread in, thread out). The details are for the operating system's thread schedule to work out.
 
Sorry, made a mistake there, my initial post was regarding the power plan not able to change it, and i mixed it up with actual software.
sure software can..
 
Last edited:
Windows does a remarkably good job at it too. You create 8 software threads on 8 logical processors without being explicit, Windows will stick one thread on each. Even if you run two instances of the program with normal priority, it will roughly split the process time between the two threads in half. Sure, it won't get done as fast at either task because it takes time for the processor to switch contexts but Windows won't give either preferential treatment unless the thread priority demands it.

Prior to Win10 1903, the scheduler was BAD for Ryzen CPU's with a lot of cores, and with a lot of people holding off on upgrading to that build, they saw this huge jump in perf by disabling SMT. But with 1903 and the further improvements in 1909, things are much better and from most reports outperform SMT-off in most games.

y8nxtm08um331.png
 
Sorry, made a mistake there, my initial post was regarding the power plan not able to change it, and i mixed it up with actual software.
sure software can..
Logical processors are enumerated in a constant pattern. For example, P4 w/ HTT, HTT were even logical processors.

Prior to Win10 1903, the scheduler was BAD for Ryzen CPU's with a lot of cores, and with a lot of people holding off on upgrading to that build, they saw this huge jump in perf by disabling SMT. But with 1903 and the further improvements in 1909, things are much better and from most reports outperform SMT-off in most games.

y8nxtm08um331.png
Yeah, it took a long time for Microsoft to optimize Bulldozer too. All good now though.
 
Last edited:
@Zach_01
unless you have "proof" (as in you have seen it yourself), @1usmus does NOT change nor improve core/ccx handling (better than OS),
not possible with a power plan (but has been misleadingly reported as such).
major reason why i recommend using his plan only if the cpu doesnt perform as expected (clocks).

looking at what ppl with a lot more knowledge about this (hw/sw) posted in forums, it only changes sleep level/state,
thus improving pref as stuff isnt going to sleep as deep/long etc, not because of shifting load around on cores/ccx.

only thing that can "fix" the messed up (intel preferred) scheduler, is MS.
Just read the screenshots... 1usmus power plan does exactly like I said.

Look at the core perf# order (x/x). Know what that means?
Look at the avg effective clock of cores. know what that means? Wait and I will show you what that is looking like with the other power plans.

I really cannot understand why people are so reluctant to see it... It’s beyond me.
Having this tool (HWiNFO) and not put it into good use, and not taking the time to think and study what those values provide, along with the residency ones...
 
Last edited:
Example C++
C++:
#include < Windows.h>

int main()
{
::SetProcessAffinityMask(GetCurrentProcess(), 0xf/*first 4 cpus*/);
}
that looks like a Power Shell command. In most "current" programming languages you can assign affinity, even in simple programming like Qbasic.
 
Prior to Win10 1903, the scheduler was BAD for Ryzen CPU's with a lot of cores, and with a lot of people holding off on upgrading to that build, they saw this huge jump in perf by disabling SMT. But with 1903 and the further improvements in 1909, things are much better and from most reports outperform SMT-off in most games.

y8nxtm08um331.png
Windows scheduler is still bad on v1909. Prior 1903 was really bad. v1909 has improve things (for ZEN2 even further) and it was driven by “someone’s” power plan. So the latest chipset drivers from AMD (November and after). Still, win scheduler even tho recognizes the high quality cores of ZEN2 does not load them entirely optimal. Only @1usmus power plan does, so far (v1.0 for v1903 and V1.1 for v1909).

———————————

Don’t expect to see huge gains by this. It’s called “fine tuning”.

I agree that disabling SMT today does not benefit games like it was a year ago.
 
Back
Top