+ Reply to Thread
Page 1 of 3 1 2 3 LastLast
Results 1 to 15 of 32

Thread: A quick glance at RIFT's CPU multi-core efficiency

  1. #1
    Plane Touched Atranox's Avatar
    Join Date
    Sep 2010
    Posts
    169

    Default A quick glance at RIFT's CPU multi-core efficiency

    So, we all know about the various GPU woes that some people seem to be experiencing. There has also been a lot of discussion regarding how RIFT utilizes your CPU, and to whether or not you may be bottlenecked by dual or trio core processors. I took a quick, brief look at this today.

    This is by no means an in-depth look, but rather a quick glance at how RIFT utilizes multithreading & cores.

    First off, my setup:

    CPU - AMD Phenom II 955 @ 3.8GHz
    GPU - Radeon 5850 @ 850/1200
    RAM - 4GB DDR3 1600
    HDD - OCZ Vertex 2 SSD

    As for the test,

    First, I opened rift.cfg and set the core usage to "0" to ensure it would properly utilize all cores. Next, I logged into the game and found a location where I was CPU-bound. This was easy - I ran to the center of Sanctum by a ton of people. To confirm I was CPU-bottlenecked, I adjusted my resolution. I used FRAPS + benchmarking to record these numbers.

    1920x1080 = 28 fps
    800x600 = 28 fps

    Clearly at this location, the "bottleneck" was with the CPU. Then, I alt-tabbed out of the game and adjusted the affinity of the RIFT process to utilize 4 cores, 3 cores, 2 cores, and finally 1 core. Each time I tabbed back into the game and recorded FPS while standing still and while running around for about 10 seconds. Again, I used FRAPS and it's benchmarking tool for these numbers. I used a third-party tool to monitor the average usage on each specific core/thread.

    RIFT set to utilize 1 Core = 16.8 FPS
    Average loads:
    - Core 1 ... 100%
    - Core 2 ... 1%
    - Core 3 ... 9%
    - Core 4 ... 5%

    RIFT set to utilize 2 Cores = 26.6 FPS
    Average loads:
    - Core 1 ... 75%
    - Core 2 ... 86%
    - Core 3 ... 13%
    - Core 4 ... 3%

    RIFT set to utilize 3 Cores = 28.2 FPS
    Average loads:
    - Core 1 ... 48%
    - Core 2 ... 35%
    - Core 3 ... 80%
    - Core 4 ... 7%

    RIFT set to utilize 4 Cores = 27.9 FPS
    Average loads:
    - Core 1 ... 32%
    - Core 2 ... 32%
    - Core 3 ... 59%
    - Core 4 ... 50%

    Basically, what I found (as you can see) is that RIFT really doesn't utilize more than 2 cores properly. Multi-threading is far from perfect in nearly an application or game, but RIFT's does appear to be a bit sub-par in comparison to other modern software. Again, this is certainly a far-cry from a detailed test...but it does shed some light on how CPU-inefficient RIFT can be, given that the GPU was not even in the equation for these tests.

  2. #2
    Shadowlander
    Join Date
    Dec 2010
    Posts
    23

    Default

    I did basically the same thing as you in beta 3 and reported it each beta thereafter that the game is not using more then 2 cores efficiently. Having a 3rd or 4th core doesn't net any real gains over two cores.
    - AMD Phenom 9600 Black - ATI 5770 1GB - Win 7 Ultimate 64 bit - 8 GB Ram

    What makes the green grass grow?, Blood!

  3. #3
    Champion Fyrestorme's Avatar
    Join Date
    Jan 2011
    Posts
    518

    Default

    Quote Originally Posted by Atranox View Post
    So, we all know about the various GPU woes that some people seem to be experiencing. There has also been a lot of discussion regarding how RIFT utilizes your CPU, and to whether or not you may be bottlenecked by dual or trio core processors. I took a quick, brief look at this today.

    This is by no means an in-depth look, but rather a quick glance at how RIFT utilizes multithreading & cores.

    First off, my setup:

    CPU - AMD Phenom II 955 @ 3.8GHz
    GPU - Radeon 5850 @ 850/1200
    RAM - 4GB DDR3 1600
    HDD - OCZ Vertex 2 SSD

    As for the test,

    First, I opened rift.cfg and set the core usage to "0" to ensure it would properly utilize all cores. Next, I logged into the game and found a location where I was CPU-bound. This was easy - I ran to the center of Sanctum by a ton of people. To confirm I was CPU-bottlenecked, I adjusted my resolution. I used FRAPS + benchmarking to record these numbers.

    1920x1080 = 28 fps
    800x600 = 28 fps

    Clearly at this location, the "bottleneck" was with the CPU. Then, I alt-tabbed out of the game and adjusted the affinity of the RIFT process to utilize 4 cores, 3 cores, 2 cores, and finally 1 core. Each time I tabbed back into the game and recorded FPS while standing still and while running around for about 10 seconds. Again, I used FRAPS and it's benchmarking tool for these numbers. I used a third-party tool to monitor the average usage on each specific core/thread.

    RIFT set to utilize 1 Core = 16.8 FPS
    Average loads:
    - Core 1 ... 100%
    - Core 2 ... 1%
    - Core 3 ... 9%
    - Core 4 ... 5%

    RIFT set to utilize 2 Cores = 26.6 FPS
    Average loads:
    - Core 1 ... 75%
    - Core 2 ... 86%
    - Core 3 ... 13%
    - Core 4 ... 3%

    RIFT set to utilize 3 Cores = 28.2 FPS
    Average loads:
    - Core 1 ... 48%
    - Core 2 ... 35%
    - Core 3 ... 80%
    - Core 4 ... 7%

    RIFT set to utilize 4 Cores = 27.9 FPS
    Average loads:
    - Core 1 ... 32%
    - Core 2 ... 32%
    - Core 3 ... 59%
    - Core 4 ... 50%

    Basically, what I found (as you can see) is that RIFT really doesn't utilize more than 2 cores properly. Multi-threading is far from perfect in nearly an application or game, but RIFT's does appear to be a bit sub-par in comparison to other modern software. Again, this is certainly a far-cry from a detailed test...but it does shed some light on how CPU-inefficient RIFT can be, given that the GPU was not even in the equation for these tests.
    this is still the case for MOST if not all games coming out today. when will programmers start optimizing for 4 cores??? we already have 6 core processors

    game development is falling behind the technology
    Two roads diverged in a wood, and I,
    I took the one less traveled by,
    And that has made all the difference.

  4. #4
    RIFT Guide Writer intrinsc's Avatar
    Join Date
    Feb 2011
    Location
    Warminster, PA
    Posts
    5,957

    Default

    The question is how do you set the game to utilize X amount of cores?
    "I love being a father, but there are some things I miss: Silence, the absence of noise, one single moment undisturbed by the sounds of a childrens’ TV program called Doc McStuffins. There is no quiet anymore, there is only Doc McStuffins.
    — Ron Swanson, 2014

  5. #5
    Plane Touched Atranox's Avatar
    Join Date
    Sep 2010
    Posts
    169

    Default

    Quote Originally Posted by intrinsc View Post
    The question is how do you set the game to utilize X amount of cores?
    Though task manager. You can right-click the Rift process and click "set affinity". This will allow you to choose which cores the application can utilize.

  6. #6
    RIFT Guide Writer intrinsc's Avatar
    Join Date
    Feb 2011
    Location
    Warminster, PA
    Posts
    5,957

    Default

    Quote Originally Posted by intrinsc View Post
    The question is how do you set the game to utilize X amount of cores?
    Disregard.
    "I love being a father, but there are some things I miss: Silence, the absence of noise, one single moment undisturbed by the sounds of a childrens’ TV program called Doc McStuffins. There is no quiet anymore, there is only Doc McStuffins.
    — Ron Swanson, 2014

  7. #7
    RIFT Guide Writer intrinsc's Avatar
    Join Date
    Feb 2011
    Location
    Warminster, PA
    Posts
    5,957

    Default

    Quote Originally Posted by Atranox View Post
    Though task manager. You can right-click the Rift process and click "set affinity". This will allow you to choose which cores the application can utilize.
    Thanks. I figured it out like 2 seconds before you posted that. I ran the same tests and didn't see any difference in FPS between 2,3 or 6. I have a Phenom II X6 1090T.

    Dear CPU Makers,

    Stop making faster chips. The software makers can't keep up.

    Yours Truly,
    trollololo
    "I love being a father, but there are some things I miss: Silence, the absence of noise, one single moment undisturbed by the sounds of a childrens’ TV program called Doc McStuffins. There is no quiet anymore, there is only Doc McStuffins.
    — Ron Swanson, 2014

  8. #8
    Plane Touched
    Join Date
    Feb 2011
    Posts
    229

    Default

    Quote Originally Posted by Fyrestorme View Post
    this is still the case for MOST if not all games coming out today. when will programmers start optimizing for 4 cores??? we already have 6 core processors

    game development is falling behind the technology
    Devs aim for the lowest common denominator, dual-core processors are standard nowadays and quad-cores are still ramping up (hexa-cores are still a novelty at this point). Remember 2-3 years back when games didn't fully use more than one core efficiently? Single-core processors are finally obsolete, but that took several years.

  9. #9
    Telaran
    Join Date
    Jan 2011
    Posts
    77

    Default

    Quote Originally Posted by Atranox View Post
    So, we all know about the various GPU woes that some people seem to be experiencing. There has also been a lot of discussion regarding how RIFT utilizes your CPU, and to whether or not you may be bottlenecked by dual or trio core processors. I took a quick, brief look at this today.

    This is by no means an in-depth look, but rather a quick glance at how RIFT utilizes multithreading & cores.

    First off, my setup:

    CPU - AMD Phenom II 955 @ 3.8GHz
    GPU - Radeon 5850 @ 850/1200
    RAM - 4GB DDR3 1600
    HDD - OCZ Vertex 2 SSD

    As for the test,

    First, I opened rift.cfg and set the core usage to "0" to ensure it would properly utilize all cores. Next, I logged into the game and found a location where I was CPU-bound. This was easy - I ran to the center of Sanctum by a ton of people. To confirm I was CPU-bottlenecked, I adjusted my resolution. I used FRAPS + benchmarking to record these numbers.

    1920x1080 = 28 fps
    800x600 = 28 fps

    Clearly at this location, the "bottleneck" was with the CPU. Then, I alt-tabbed out of the game and adjusted the affinity of the RIFT process to utilize 4 cores, 3 cores, 2 cores, and finally 1 core. Each time I tabbed back into the game and recorded FPS while standing still and while running around for about 10 seconds. Again, I used FRAPS and it's benchmarking tool for these numbers. I used a third-party tool to monitor the average usage on each specific core/thread.

    RIFT set to utilize 1 Core = 16.8 FPS
    Average loads:
    - Core 1 ... 100%
    - Core 2 ... 1%
    - Core 3 ... 9%
    - Core 4 ... 5%

    RIFT set to utilize 2 Cores = 26.6 FPS
    Average loads:
    - Core 1 ... 75%
    - Core 2 ... 86%
    - Core 3 ... 13%
    - Core 4 ... 3%

    RIFT set to utilize 3 Cores = 28.2 FPS
    Average loads:
    - Core 1 ... 48%
    - Core 2 ... 35%
    - Core 3 ... 80%
    - Core 4 ... 7%

    RIFT set to utilize 4 Cores = 27.9 FPS
    Average loads:
    - Core 1 ... 32%
    - Core 2 ... 32%
    - Core 3 ... 59%
    - Core 4 ... 50%

    Basically, what I found (as you can see) is that RIFT really doesn't utilize more than 2 cores properly. Multi-threading is far from perfect in nearly an application or game, but RIFT's does appear to be a bit sub-par in comparison to other modern software. Again, this is certainly a far-cry from a detailed test...but it does shed some light on how CPU-inefficient RIFT can be, given that the GPU was not even in the equation for these tests.
    Read this post from the developers carefully, and re-evaluate your testing methods. Setting affinity to 0 is not optimal, and will give you a false positive. The default setting of 3 is most likely optimal as it is unlikely that windows will be using that thread, so it should be free and clear to use as the main thread. The game will still utilize multiple cores.

    Quote Originally Posted by Blusun
    What about multi-core CPUs, multi-threading, processor affinity, etc?

    The short answer is that there's little the player can do to affect this, so don't worry too much about it. Rift divides up the required work into many threads, for separate tasks like networking, audio, animation, particle effects, and rendering. If you have a multi-core CPU, these threads will be distributed across the cores and run in parallel. In a perfect world, the work could be split into an infinite number of threads, each with an equal amount of work to do, keeping all the cores working equally. In reality, the work is not infinitely parallelizable, and one primary thread does more work than the others. The CPU core running that thread will show closer to 100% utilization, while the other cores will show less.

    The primary thread is bound to a CPU for a few reasons. There are bugs with some BIOSes and CPU drivers which cause timing values to be incorrect if a thread moves between CPUs. Another issue is Windows’ tendency to move threads between CPUs to balance the overall load. If a thread is not bound to a CPU it will look like more CPUs are being utilized, and thus more things are running in parallel. This is not actually the case. The thread is still running in serial, it is just being constantly moved between CPUs. While this will make things look more parallel in task manager, it is actually somewhat slower due to the additional processing required at the OS level to do the context switching. For CPUs where each core has its own cache, this can also incur unnecessary cache misses.

    We do recognize that which core this thread runs on can have a significant impact on certain systems. The core the main thread is bound to is exposed in the rift.cfg file, as MainThreadCPU. Valid values are 1…numCPUs, or 0 to specify the thread can run on any CPU.

  10. #10
    Champion of Telara Forum Troll's Avatar
    Join Date
    Jan 2011
    Location
    Norcal
    Posts
    1,254

    Default

    All that is required is editing of rift.cfg

    MainThreadCPU = 3

    should be changed to

    MainThreadCPU = 0

    This lets rift use any and all cores as it sees fit, and averages a steady 30-40% load on all 4 cores of my 5ghz I7.

    Your methods are flawed, and thus so are your results.
    My computer
    Proud member of the Forum Troll fan club.

  11. #11
    Ascendant Chomag's Avatar
    Join Date
    Feb 2011
    Location
    Bucharest, Romania
    Posts
    2,769

    Default

    Quote Originally Posted by Forum Troll View Post
    All that is required is editing of rift.cfg

    MainThreadCPU = 3

    should be changed to

    MainThreadCPU = 0

    This lets rift use any and all cores as it sees fit, and averages a steady 30-40% load on all 4 cores of my 5ghz I7.

    Your methods are flawed, and thus so are your results.
    Changed it repeatedly to 0 and back to 3. No changes in fps whatsoever.

  12. #12
    Telaran
    Join Date
    Jan 2011
    Posts
    77

    Default

    Quote Originally Posted by Forum Troll View Post
    All that is required is editing of rift.cfg

    MainThreadCPU = 3

    should be changed to

    MainThreadCPU = 0

    This lets rift use any and all cores as it sees fit, and averages a steady 30-40% load on all 4 cores of my 5ghz I7.

    Your methods are flawed, and thus so are your results.
    Incorrect, re-read what the developers description of that setting.

    Edit: or are you calling out his use of MainThreadCPU=0?
    Last edited by Wermacht; 03-18-2011 at 04:00 PM.

  13. #13
    Plane Touched Atranox's Avatar
    Join Date
    Sep 2010
    Posts
    169

    Default

    Quote Originally Posted by Forum Troll View Post
    All that is required is editing of rift.cfg

    MainThreadCPU = 3

    should be changed to

    MainThreadCPU = 0

    This lets rift use any and all cores as it sees fit, and averages a steady 30-40% load on all 4 cores of my 5ghz I7.

    Your methods are flawed, and thus so are your results.
    Oh, you mean like I had stated in the original thread?

    First, I opened rift.cfg and set the core usage to "0" to ensure it would properly utilize all cores.
    Sorry that you forgot to read the thread before expressing your opinion

    Incorrect, re-read what the developers description of that setting.

    Edit: or are you calling out his use of MainThreadCPU=0?
    Either way, even if I leave it at the standard "3"...I can assure you that the overall results will not be different. Test it yourself.

    The reason I used "0" was because the core usage went like this in each test: 1,2,3,4 ... 1,2,3 ... 1,2 ... 1. Had I had the config file set to 3, it would have caused issues once it was no longer able to utilize that core.
    Last edited by Atranox; 03-18-2011 at 04:11 PM.

  14. #14
    Telaran
    Join Date
    Jan 2011
    Posts
    77

    Default

    Yes, but you could have stepped it down on each test. Setting the main thread to 4, then 3, and then 2 and 1. According to the developers, by allowing Windows (not Rift) to switch Rift between threads you are causing more CPU strain than is necessary and that can effect performance.

    First, I opened rift.cfg and set the core usage to "0" to ensure it would properly utilize all cores.
    This statement is fundamentally inaccurate.

  15. #15
    RIFT Guide Writer intrinsc's Avatar
    Join Date
    Feb 2011
    Location
    Warminster, PA
    Posts
    5,957

    Default

    According to BluSun changing the manthreadcpu to 0 just tells rift it can use any CPU to run the main thread. If you have a Phenom II that supports Turbo Boost then I'd keep that mainthreacpu to one of the first three cores.
    "I love being a father, but there are some things I miss: Silence, the absence of noise, one single moment undisturbed by the sounds of a childrens’ TV program called Doc McStuffins. There is no quiet anymore, there is only Doc McStuffins.
    — Ron Swanson, 2014

+ Reply to Thread
Page 1 of 3 1 2 3 LastLast

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts