EQ not spreading across CPU Threads

Discussion in 'Player Support' started by Beesk, Feb 17, 2022.

  1. Beesk New Member

    I'm running an AMD Ryzen 5800X and can only load 2 instances of EQ and have it be playable. They're flawless with 2 and not utilizing the CPU cores too much in resource monitor, then as soon as I load a 3rd it becomes obvious all 3 are on 1 core and for whatever reason they go from 50% usage to pegged at 95+ I know 64 bit just dropped and I know cpuaffinity is no longer a thing in eqclient.ini has anyone else experienced these issues and have a solution? [Unmentioned 3rd Party Software], raw client, doesn't matter, same result, they only load on thread 10.
  2. Metanis Bad Company

    Make sure your eqclient.ini file has lines like:

    CPUAffinity0=-1
    CPUAffinity1=-1
    CPUAffinity2=-1
    CPUAffinity3=-1
    CPUAffinity4=-1
    CPUAffinity5=-1
    CPUAffinity6=-1
    CPUAffinity7=-1
    CPUAffinity8=-1
    CPUAffinity9=-1
    CPUAffinity10=-1
    CPUAffinity11=-1

    You need a line for reach client you load. The negative 1 tells EQ to let the OS decide upon which core to run the app.
    Dre. likes this.
  3. Beesk New Member

    Oh, I thought CPUAffinity got removed from the eqclient, guess I'll have to see if I can add those lines and that fixes the problem, hope so! Thank you for the feedback.
  4. Cadman Elder

    It has been changed.

    It is now a single entry of "ClientCore=-1"

    Treage_Imminent likes this.
  5. Warpeace Augur

    I thought the entry for CPUAffinity was removed and replaced by Client Core entries in the eqclient.ini file? Or did I not understand that correctly.

    I am seeing the old CPUAffinity entries still and only 3 entries for Client Core when I would have 6 or so if I should have one for every instance of EQ I have open at the same time?

    Also anyone have a link the the post covering this.
  6. Metanis Bad Company

    Sorry, I missed the announcement about ClientCore.

    I find my eqclient.ini still has all the old lines for CPUAffinityx but now I find 2 more lines for ClientCore0 and ClientCore4.

    I guess I'd have to ask what was the point in renaming something that was well understood for many years and replacing it with something they couldn't be bothered to document properly?
  7. Warpeace Augur

    I'm just not understanding why we have entries for both. The real question is can I just add new entries for additional Client Core into that file and will it spread them since it is not automatically adding new ones as additional EQ instances are being added?
  8. Tyreel Augur

    For old no longer used options they usually don't delete the lines so if they need to revert a change(emergency patch) your old options still work.

    My eqclient had these lines added automatically. This number of entries also matches the max number of clients i have run at once 5.
    ClientCore0=-1
    ClientCore1=-1
    ClientCore2=-1
    ClientCore3=-1
    ClientCore4=-1

    I think you can safely add more lines but it seems to be managing it automatically at least for me.
  9. Warpeace Augur


    It didn't match my old options. Seems like something is not working as intended if that's the case they should increase as the number of active clients are loaded on your PC.
  10. Herf Augur

    I only have ClientCore0 and my CPU is a Core i7-4790. Should I have more entries?
  11. Tyreel Augur

    My old vs new doesn't match but what auto added is one line of ClientCore#=-1 per max number of launched instances of everquest on my PC(not every time just each new maximum number of clients open). Why some one would only have ClientCore0 and ClientCore4 I don't know. Also mine matching might just be a coincidence.

    On Windows 10/11
    The main thing is to not have anything other than -1 after the = sign on any entry for ClientCore#= doing so is what limits you to one core.
    Herf likes this.
  12. Jumbur Improved Familiar

    If you don't multi-box, then one line is fine. A single client won't use more than one core anyway.
  13. klanderso Developer

    CPUAffinity# was changed to be ClientCore#. The reason it wasn't removed from existing ini files is because there's no easy way to just remove those lines without nuking everyone's settings. The rename was to also make it clearer what it's actually used for.

    When the new setting is set to -1, it should be using all available cores (this is the new default). If you've changed it to a number that's higher than your number of cores (for example, if I have 8 cores and have it set to 74), it'll still use all available cores (default behavior). If you set it anywhere from 0 to YourCoreCount-1 (example, if I have 8 cores and set it from 0 to 7) it'll use that single core.

    The # after ClientCore is for the instance of the game. This is used to give each instance a specific core to be used. For example, I just made these changes to my ini file:
    Code:
    ClientCore0=1
    ClientCore1=13
    The first instance I launched is using core 1 and the second instance is using core 13. I verified this by checking the affinity in the Task Manager (don't let the order in Task Manager confuse you, I checked between launches and confirmed they're correct):
    [IMG]

    [IMG]
    You'll need to restart your game to see any changes you've made in this portion of the ini file.
  14. minimind The Village Idiot

    Super awesome insight! Follow-up question: Is it possible to set it so that instance 1 of EQ uses cores 0-3 and instance 2 uses cores 4-7 automagically?
  15. Wulfhere Augur

    The 64 bit client is still largely single threaded, having the same architecture. This can be seen by opening your in-game mail or overseer (and also doing quests) and experiencing game play freeze.

    It would be nice to be able to assign physical cores to each instance of the game, to maximize cache coherency. Each physical core is the pair of even/odd CPU in task manager (shown prev). Windows itself mostly runs on Core0 (CPU 0 & 1), so it would be nice to move the game to other physical cores in pairs. Something like this would be nice:

    ClientCore0=2,3
    ClientCore1=4,5
    ClientCore2=6,7
    ClientCore3=-1

    Even simpler would be to allow an even core to use it's odd counterpart automatically. E.g.

    ClientCore0=2 # Processor Affinity is CPU 2 and CPU 3
    minimind likes this.
  16. klanderso Developer

    Being able to set it to multiple cores is an interesting thought, but I'm not sure it's something on our plate for the future. You can, however, manually choose the cores for a specific program in Task Manager, but it has it be done manually each time you launch it.

    Right now, if you have it set to -1 it'll adjust itself as needed (basically let Windows handle it).
    minimind likes this.
  17. Wulfhere Augur

    It's not though. What you are calling a "Core" is a misnomer. Each single Core has 2 CPU, sharing primary cache, TLB, etc.. What EQ has always implemented is "ClientCPU0" affinity and nothing more. There has been no improvement with this renaming patch, sorry but no.
  18. Jumbur Improved Familiar

    I really really REALLY wish that they would move mouse handling to a separate core(or thread), so that mouse turning wouldn't get all confused every time the render skips a single frame...:(
    Having mouse polling limited by the framerate is a big mistake imho

    The only solution right now, is to cap the framerate at 30 fps, which is too low for comfort.
    It is my number#1 annoyance in Everquest...

    https://forums.daybreakgames.com/eq...ing-accuracy-and-irregular-framerates.270521/
    Maybe it will be easier to fix after the 64bit upgrade...assuming they "cleaned up" some of the code...
    Dre. likes this.
  19. I_Love_My_Bandwidth Mercslayer

    I think you're referring to HT, or Hyper-Threading (Intel) and SMT, or Simultaneous MultiThreading (AMD) in CPUs built on the x86 and x64 instruction set. In this situation each Physical Core has an accompanying Virtual Core. However, not every CPU package has two cores per CPU. Mostly very old CPUs, and very new CPUs - as well as some lower-end CPUs - could have Physical Cores only. Such as the quite old Intel Q6600 (4-Cores, without HT) or the very new Intel 12900k (8 'P' cores, HT-enabled and 8 'E' cores, without HT).

    This is more than just semantics. Every major chip designer (Apple, Intel, AMD, et al) are going to some form of performance hybrid architecture, combining highly efficient, non-HT "E-cores" with powerful, power-hungry, HT-enabled "P-cores".

    EverQuest could benefit greatly by re-working the engine to be multi-core aware - as long as they're in there working go ahead and code for performance hybrid architecture awareness. So the game can hop between P and E cores.

    Yes, yes - someone wake me up because I'm dreaming....;)
  20. Dre. Altoholic

    First thing I checked.

    Ive made a habit of waiting 10 seconds to avoid that post-zoning hitch in that sends your mouselook/autofollow off to Mars.