Forum Discussion

Re: Max CPU threads tweak for Core i7 and AMD FX's CPU's - Testing & Results.

Edited! New information, new conclusion.

Thanks for testing, this confirms my suspicions on how the game engine works. I've come to the following conclusions:

On Intel CPU's the engine will always attempt to reserve one core or HT core (i.e. 7 jobs max on 4core with 8 CPU HT, and 3 max jobs with a i5 without HT)

On AMD CPU's the engine will always try and reserve one core or CMT core (i.e. 7 jobs max on a 8 "core" FX CPU, and presumably max 5 threads on a 6 "core")

Engine may have a 10-thread limit since a 6-core with HT can only go to max of 10.

 It would be interesting to see some tests with an Intel 8core/16 thread HT or AMD Opteron with 16 "cores" to see if there really is a 10-job hard limit in the engine.

Technical details and speculations/opinions:

AMD FX 8-core CPU's have 4 core clusters, each cluster containing two dedicated integer cores but a single shared FPU. Windows treats this similar to Intel's HT, also called SMT. AMD's version is called CMT. According to AMD documentation, the shared FPU between two Integer cores can perform independant operations if operating in 128bit mode, or combined for 256bit instructions. Intel i7 CPU's have singular but powerful cores with 2 threads capable of running on each core, albeit without any dedicated resources for each HT thread. Due to this design, the cores are presumably more optimized to leverage fewer threads with advanced SSE and AVX instruction sets, or more threads with HT when a program is coded with HT in mind (Unsure about Intel HT best coding practices, there's probably documentation on how to code 2 threads to run with minimal contention on each core). On the AMD side, they seem to be better optimized for more threads if the engine is programmed properly. So... more threads may not always be better, but could be in some circumstances. Apples and Oranges, each with their own strengths/weaknesses. I'm not trying to start a CPU war here.

In the AMD case here, this engine seems to be better optimized to take advantage of more threads on AMD if it will enable 7 threads on their 8-core CPU's, presumably for console optimizations (since Xbox One and PS4 both have AMD CPU's). If this were more Intel optimized it would take advantage of the latest SSE and AVX technologies better, with HT optimizations. I'd imagine it does to some degree but probably more work has been put into optimizing for AMD, and rightly so since their game performance is mediocre in comparison when not properly optimized to leverage AMD's clustered cores and shared core resources efficiently (Assuming there isn't a GPU bottleneck first).

My opinion here on max jobs: If you're running a lot of background apps and/or have high OS overhead, maxing out the threads may not be optimal although the game does attempt to save one core for background stuff, if you have background apps running on that last core which shares resources, it could cause thread contention.

Next up... benchmarks to find optimal thread counts, then tackle the GeForce/Radeon debate - which this game clearly lacks NVidia optimizations but has many wortkarounds. I will save that can of worms for a new topic.

5 Replies

  • Nadajohna's avatar
    Nadajohna
    11 years ago
    LeetMiniWheat, so for example when I put my max/min at 8 with a i7 3770k @ 4.4, in game I says 7 threads. Would the optimal configuration be 6 threads, so the other two threads (one for background and one for just in case?)

    The game originally told me that I was only using 4 threads, but I couldn't discern a difference. However that could be due to me putting in too high of a thread count as you said.

    I'm just looking for the understanding of whether or not I should leave it by default, or try messing with it.

  • @Nadajohna wrote:
    @Sh0tGunAnGeL, so for example when I put my max/min at 8 with a i7 3770k @ 4.4, in game I says 7 threads. Would the optimal configuration be 6 threads, so the other two threads (one for background and one for just in case?)

    The game originally told me that I was only using 4 threads, but I couldn't discern a difference. However that could be due to me putting in too high of a thread count as you said.

    I'm just looking for the understanding of whether or not I should leave it by default, or try messing with it.


    are you saying it actually shows 7 threads on a 4core(8 thread) CPU? I thought someone above confirmed it would only go to max of 6. this changes things then

  • Nadajohna's avatar
    Nadajohna
    11 years ago
    Yes, it definitely does go to 7 on my system and I can screenshot if necessary. However, performance does suffer slightly from having the command off.

  • @Nadajohna wrote:
    Yes, it definitely does go to 7 on my system and I can screenshot if necessary. However, performance does suffer slightly from having the command off.

    performance is less with 7? or more with 7?

    try 4 or 6 if you're getting less? I'm not entirely sure how well the game scales with threads yet, and it may scale better on AMD whereas Intel may be better with less due to having stronger cores. I should be able to test tomorrow when my board for my i7 4790k arrives.

    Edited solution post with new conclusions. Seems the game will always just reserve one core, whether it be a SMT or CMT core or a physical core if the CPU doesn't support SMT (HT) or CMT (AMD FX "cores"), but seems it will only scale up to 10 threads since a 6core with HT can only go to 10 instead of 11.

  • Nadajohna's avatar
    Nadajohna
    11 years ago
    Less with 7 than 4 threads (rather 4 threads is without any commands.)
    I guess I'll try 6 or 5.