For those of you who claim the "Lock Threads to Cores" option provides a significant performance increase:
I assume you have a CPU with "Turbo Boost Technology"?
Would you please verify that the two configurations provide the same performance gains:
(please use Dolphin 3.5 or something BEFORE revision 30d4259bba78 ("removal" of LTTC) for both tests)
Config 1:
"Lock Threads to Cores" : ON
Config 2:
"Lock Threads to Cores" : OFF
Manually set dolphin's process affinity (via task manager or other) to a minimal amount of cores. (try 1,2,3,4 etc (tell me what you used))
Please tell me about the performance differences.
Your responses will greatly affect the ultimate fate of Dolphin!
afaik it mostly affects laptop users
Hi Billiard, I did some quick testing. I realised I screwed up and didn't actually set dolphin to use the Nvidia GPU. I'll probably run these tests in a more reliable way tomorrow to get you some more useful results with screenshots and so forth.
Laptop specs:
i7 2630qm 4core, Hyperthreading, 2ghz default clock speed
GPU: INTEL HD3000 Integrated on CPU
6 Gbytes 1333mhz RAM
Windows 7
Dolphin 3.5 release windows x64, default settings. I changed only Lock threads to cores, and set the framelimit to OFF.
FPS tested with fraps, average fps over 90 seconds
Standing still at the start of the first level of NSMBW
1 core, lock off, average fps 21 - Weird stuff happened (the fps was very low, until i moved the mouse cursor, then it increased considerably as the second virtual thread on physical core 1 kicked in at that point...)
1 core, lock on, average fps 8 - Weird stuff happened, see above. probably useless result here
2 core, lock off, average fps 91
2 core, lock on, average fps 90
3 core, lock off, average fps 103
3 core, lock on, average fps 100
4 core, lock off, average fps 107
4 core, lock on, average fps 101
I tested it also with a different method:
Of course as the CPU has hyperthreading, windows shows it as having 8 virtual cores. In this second run of tests, I simply enabled only one virtual thread per physical core.
For example, for the 2core test, i set affinity to thread zero and thread two.
I did not test single core performance here.
2 core, lock off, average fps 73
2 core, lock on, average fps 78
3 core, lock off, average fps 108
3 core, lock on, average fps 103
4 core, lock off, average fps 106
4 core, lock on, average fps 109
Hope it helps
Notes: Forcing Dolphin to use less cores does actually help with Turboboost to use a higher clock speed, as I was monitoring this. However it seems that allowing Dolphin to access more than 2 physical cores increases performance, to the point that the increased Turboboost clock speed does not even come close to offsetting the performance loss from less available cores. Generally locking threads to cores seemed to decrease performance.
Please keep in mind this is a VERY simple test using just one place in one game.
Quote:significant performance increase
only with 1st gen i7 Quad Core mobile ...
less effective on latest i7 mobile
I assume i5 mobile doesn't gain any speed boost since all of them are dual core CPU (Some i7 mobile CPU are Dual Core too)
Not mention Turbo Boost 2.0 is much better than Turbo Boost 1.0
http://www.tomshardware.com/reviews/sandy-bridge-core-i7-2600k-core-i5-2500k,2833-3.html
For example :
i7 720QM @ 1.6GHz Turbo Boost :
_2.8GHz 1 core
_2.4GHz 2 cores (gain 700MHz)
_1.7GHz 3 or 4 cores
i7 2630QM @ 2.0GHz Turbo Boost :
_2.9GHz 1 core
_2.8GHz 2 cores (only gain 200MHz)
_2.6GHz 3 or 4 cores
i7 3610QM @ 2.3GHz :
_3.3GHz 1 core
_3.2GHz 2 cores (100MHz doesn't make any difference)
_3.1GHz 3 or 4 cores
Quote:Notes: Forcing Dolphin to use less cores does actually help with Turboboost to use a higher clock speed, as I was monitoring this. However it seems that allowing Dolphin to access more than 2 physical cores increases performance, to the point that the increased Turboboost clock speed does not even come close to offsetting the performance loss from less available cores. Generally locking threads to cores seemed to decrease performance.
You're correct . You will lose performance if you disable 2 cores . Even though Dolphin is a dual core app , you still have speed boost with a Quad Core since you leave 2 cores for background processing
Edit : I found that topic on PCSX2 forum
http://forums.pcsx2.net/Thread-i7-720qm-Moderate-speed-up-any-i7-mobile-quad-core
If no one provides data showing LTTC improving performance over manually setting process affinity (or setting no affinity) LTTC is likely to be removed!
What about fixing (more like helping I guess) random crashes?
ExtremeDude2 Wrote:What about fixing (more like helping I guess) random crashes?
Unlikely. I haven't seen any issues attributing that to this option.
Just my 2 cents:
I find it to be a useful option for checking how much load each thread is using and making sure that dolphin is following the correct behavior and don't really understand why anyone would want to remove it considering how few lines of code are attributed to it. It hasn't posed any serious maintenance issues. But you're the dev so I'm sure you have your reasons.
Well alot of people say it helps DKC Returns, I never tried running without the option so I wouldn't know XD
The problem is that a lot of people have been saying a lot of things, but no one has provided any valid data to back up their claims. I'm sure a lot of people are not going to be happy if the option gets removed, but yet no one who has posted so far has any first-hand experience with this option.
(01-18-2013, 01:12 PM)ExtremeDude2 Wrote: [ -> ]Well alot of people say it helps DKC Returns, I never tried running without the option so I wouldn't know XD
The DKC Returns case is discussed in Issue 3576.
http://code.google.com/p/dolphin-emu/issues/detail?id=3576
Per the discussion there it's unclear Lock to Threads really helped with the issue, as it did not resolve problems for some users. I can't find any discussion on the wiki indicating "Lock threads to cores" provides anything but a small performance enhancement.