Maybe this has been asked/answered before so bear with me...
While games are becoming more multi-threaded there is always one or two threads that are the real bottleneck, and that's pretty obvious by watching the processors in Task Manager while playing modern triple-A titles. But today many processors identify the strongest cores for boosting and... you can see the strongest cores indentified in RyzenMaster for Ryzen processors for intance.
So the question is, how does the system know which thread is the bottle neck and is to be given affinity to one of the strongest cores, which can be boosted to highest / longest?
I'm aware there is a SetThreadIdealProcessor and SetThreadIdealProcessorEx functions which are used to inform the Windows10 scheduler to 'favor' a certain processor for specific threads. I assume (not being a programmer) that a program would query processor capabilities at startup and then use those functions to steer what it knows to be the bottleneck thread to the strongest cores (processors).
Does that mean games have to be coded correctly to do this? Is it the graphics driver that would do it (providing somewhat better assurance it will happen)?
Or is it something in the OS itself that can identify the heaviest loading thread and set affinity to favor the strongest core(s)?
When I read of benchmarks and game reviews for performance nobody ever tells if the games are using the strongest cores or not. It seems to me that it would be good to know your hardware is being properly and efficiently utilized.
Does anyone have in information on this?
While games are becoming more multi-threaded there is always one or two threads that are the real bottleneck, and that's pretty obvious by watching the processors in Task Manager while playing modern triple-A titles. But today many processors identify the strongest cores for boosting and... you can see the strongest cores indentified in RyzenMaster for Ryzen processors for intance.
So the question is, how does the system know which thread is the bottle neck and is to be given affinity to one of the strongest cores, which can be boosted to highest / longest?
I'm aware there is a SetThreadIdealProcessor and SetThreadIdealProcessorEx functions which are used to inform the Windows10 scheduler to 'favor' a certain processor for specific threads. I assume (not being a programmer) that a program would query processor capabilities at startup and then use those functions to steer what it knows to be the bottleneck thread to the strongest cores (processors).
Does that mean games have to be coded correctly to do this? Is it the graphics driver that would do it (providing somewhat better assurance it will happen)?
Or is it something in the OS itself that can identify the heaviest loading thread and set affinity to favor the strongest core(s)?
When I read of benchmarks and game reviews for performance nobody ever tells if the games are using the strongest cores or not. It seems to me that it would be good to know your hardware is being properly and efficiently utilized.
Does anyone have in information on this?