Question after reading 'Reaching for Turbo' article

Aenra

Member
Jun 24, 2017
47
34
61
First of all, well done, hopefully it will help clear things up.
Now i'd never wondered about this before, had to read the article before it popped :)

Suppose you've manually overclocked all cores of your recent Intel or AMD CPU, meaning Turbo/PBO are disabled; would the scheduler still seek to load the favoured/fastest core(s) first or as soon as?
Or is it aware enough to grasp that it's no longer of import (what with Turbo/PBO disabled), and as such relegate tasks to the nearest threads?

(yes, very basic.. but i don't know, so..)
As always, my thanks for reading.
 

moinmoin

Diamond Member
Jun 1, 2017
4,934
7,619
136
Suppose you've manually overclocked all cores of your recent Intel or AMD CPU, meaning Turbo/PBO are disabled; would the scheduler still seek to load the favoured/fastest core(s) first or as soon as?
Or is it aware enough to grasp that it's no longer of import (what with Turbo/PBO disabled), and as such relegate tasks to the nearest threads?
The question doesn't make sense. If you overclock all cores all cores are exactly at the same frequency, so there is no longer any difference between the cores in that regard. At that point the scheduler's capability to seek out faster cores no longer matters as all cores are the fastest (and slowest) at the same time since they are all equal.
 
  • Like
Reactions: john3850

Aenra

Member
Jun 24, 2017
47
34
61
The question doesn't make sense .. At that point the scheduler's capability to seek out faster cores no longer matters

In theory, am with you; wouldn't make sense, true.
Except software doesn't have sense, it only does what we tell it to and i don't know what it's been told to do, or i wouldn't be asking.
Not trying to play it smart here, am the one with the question after all, am only (re)stating the obvious as your own reply seems to indicate you think rather than know :)

I can just as easily foresee a situation where no matter your clocks or how you've achieved them, the scheduler, trained as it is to seek favoured/fastest cores, keeps on doing it. Because if you think about it, why not.. less conditions in the code, same exact outcome; so why not. See?
 

LightningZ71

Golden Member
Mar 10, 2017
1,627
1,898
136
It appears that the better question will be “how does the scheduler determine which cores are best?” If it is a simple test, then the scheduler will give each core equal waiting in an all core OC scenario. If it makes that determination by querying the hardware for some sort of previously encoded metrics, then it won’t know about the cores all being effectively equivalent in that scenario.
 
  • Like
Reactions: VirtualLarry

Kenmitch

Diamond Member
Oct 10, 1999
8,505
2,248
136
Suppose you've manually overclocked all cores of your recent Intel or AMD CPU, meaning Turbo/PBO are disabled; would the scheduler still seek to load the favoured/fastest core(s) first or as soon as?

With my 3700x and using Cinebench the load hits core #0 and core #3 alternating back and forth, but mostly core #3. Core #3 is my fastest core and core #0 is the 2nd fastest on CCX 0. I'm guessing my CCX 0 is overall better than CCX 1?

Running stock or all core overclock it does the same thing using the Ryzen balanced power profile.
 
  • Like
Reactions: Vattila and Aenra

Atari2600

Golden Member
Nov 22, 2016
1,409
1,655
136
I suppose a better and more pertinent question is...

You have a 2 CCX CPU.

Core0 is your fastest core,
Core4 is your 2nd fastest core,
Core2 is your third fastest core.

You have a 2 thread task that would benefit from sharing the L3 cache.

Does the scheduler have the brains to figure out that in some circumstances* it would be better assigning the 2 threads to Core0 and Core2, rather than Core0 and Core4 - and in other circumstances* it would be better separating the load between Core0 and Core4?

*depending on how much quicker the software is from using common L3 cache and how much Core2 is slower than Core4.
 
  • Like
Reactions: Aenra

Aenra

Member
Jun 24, 2017
47
34
61
I suppose a better and more pertinent question is...

Good point! While i'd like to know that as well, i'd humbly request we do not veer off entirely (and again, i would like to know that too).
Also an AMD owner, exclusively at that, lol, but i'd still need the general bits first.

It sounds very basic, but you sit down and think about it..

but mostly core #3. Core #3 is my fastest core

Precisely; similar experiences here, it --appears-- to favour the same core it should (and does) favour when everything's left on Auto. However, this isn't exactly a level1 kind of thing, so i thought i'd ask before assuming.
 

Kenmitch

Diamond Member
Oct 10, 1999
8,505
2,248
136
Precisely; similar experiences here, it --appears-- to favour the same core it should (and does) favour when everything's left on Auto. However, this isn't exactly a level1 kind of thing, so i thought i'd ask before assuming.

I switched to the non Ryzen balanced power plan and rebooted just in case it would make a difference and nothing changed on my 3700x as far as what cores it hits and favors.

I tried a 3 and 4 core Cinebench run and the load never left CCX 0. I was thinking that it would seek out the fastest cores on the CCD, but for some reason or another it just stuck to CCX 0's.
 

Atari2600

Golden Member
Nov 22, 2016
1,409
1,655
136
Don't you mean 2 CCD's? There aren't any 5+ core CCX's.

Code:
CCX0:
    Core0
    Core1
    Core2
    Core3

CCX1:
    Core4
    Core5
    Core6
    Core7

Any clearer what I mean?


Each CCX communicates over IF - there is no crossbar within the CCD.
5cea865f-c72c-435d-97f3-38205479cd30.PNG
 

Kenmitch

Diamond Member
Oct 10, 1999
8,505
2,248
136
Any clearer what I mean?


Each CCX communicates over IF - there is no crossbar within the CCD.

I guess that's clear, but aren't all the current offerings a minimum of 2 CCX's?

Using my 3700x and Cinebench and changing the threads to 3 or 4 instead of 16 it doesn't move the load to the other CCX. If I use 5 threads it hits the fastest core on CCX 1 next, 6 threads it hit's the next fastest core on CCX 1. On CCX 1 the 1st core is the fastest and the 2nd one is the second fastest. I'd imagine once CCX 0 is loaded then the next fastest cores will be loaded, but I guess we'd need somebody else to experiment with it.
 

Atari2600

Golden Member
Nov 22, 2016
1,409
1,655
136
OK, so in my example, on your 3700X on Cinebench the scheduler will not use Core4, but will use Core2.

I wonder does it do any deterministic approach to arrive at that, or does it simply fill each CCX before moving onto another?

Which probably isn't great for thermal hot-spotting when it'd come to disconnected* threads although may be better for power consumption.

*threads that do not need to communicate with each other much.


re. the minimum of 2 CCX - my point is about crossing onto different L3 cache areas - doesn't matter if its 2 CCX, 4 or 8. It's how the scheduler arrives at the best place to put any given thread given what else is going on.
 

DrMrLordX

Lifer
Apr 27, 2000
21,582
10,785
136
Suppose you've manually overclocked all cores of your recent Intel or AMD CPU, meaning Turbo/PBO are disabled; would the scheduler still seek to load the favoured/fastest core(s) first or as soon as?

It's easy to test this instead of hypothesizing. Since I've used all-core OC extensively on my 3900x, I can tell you that I have not observed any weighting of Cores #3 or #12 (my fastest) when using an all-core OC on a workload with limited threading (such as games). That was as of 1.0.0.3ABB though . . . haven't tested ABBA yet.
 

Aenra

Member
Jun 24, 2017
47
34
61
It's easy to test this

Really..
Am gonna make a brave assumption here and pre-suppose that contrary to the this latest generation of youtuber experts and keyboard warriors you are actually in a position to grasp just how thorough (and time consuming) such a testing would be. Am further going to assume that you grasp the difference between 'a' suite of software written so as to 'x' and 'y' and an OS scheduler "smart" enough to make such decisions on its own when and if no such commands are being explicitly given to it. Am additionally more than willing to assume that you've read my mere 3 posts total here, in which case you must have come across my mentioning a certain favouring of my fastest cores and nevermind my all-core manual OC (which by the way, is behaviour i have come across in both Intel and AMD CPUs, ranging from an 'old' 6900K all the way to a 3900X). Am lastly going to assume that you've given me the benefit of the doubt, and as such have already reached the conclusion that i'm asking because i have not the knowledge to gleam what a scheduler does. Read this again, what a scheduler does; not what happens in 'x' popular program that has been 'optimised' for Zen arcs.

In which case of course, i'd still have to wonder.. had all my assumptions been correct, would you still have posted this? :)
 

DrMrLordX

Lifer
Apr 27, 2000
21,582
10,785
136
Really..
Am gonna make a brave assumption here and pre-suppose that contrary to the this latest generation of youtuber experts and keyboard warriors you are actually in a position to grasp just how thorough (and time consuming) such a testing would be.

It ain't hard to figure out. Just run a workload with n-1 (or fewer) intense threads where n happens to be the number of threads your CPU can handle, and then record maximum and average clockspeed during a long session of constant use of the application. I've done this at 4.4 GHz and other speeds on a 3900x. And no, it doesn't just constantly read "4.4 GHz" all the time because that's not how Zen2 works (at least not in Ryzen Master; HWiNFO64 will do that, but you can still track load %). It'll sit at low clocks (or sleep state) when idle and ramp up to the static clockspeed under any kind of load.

an OS scheduler

You mean the Win10 scheduler? You didn't mention which one, so by default, that's the scheduler. Linux might offer different behavior . . . but I doubt it. Again, easily tested.

Schedulers for older OSes weren't designed with recent Intel or AMD CPUs in mind. They're broadly irrelevant.

that you've read my mere 3 posts total here, in which case you must have come across my mentioning a certain favouring of my fastest cores and nevermind my all-core manual OC

If you've already tested it, then why are you asking us, instead of telling us what happened? I'm telling you, my CPU doesn't do that. Specifically it "favors" Core0 Thread0 (or Core 1 under Ryzen Master).
 
Last edited: