I hope this question is ok here. It’s about gaming on Linux after all so I figured here should be appropriate but if not I apologize and would kindly request someone point me to the right place. I already posted this at r/pcmasterrace but was suggested to post in a Linux focused subredit (which makes sense, should have done that right away)
My situation is a bit special. I am currently running Fedora 39 on a Ryzen 7800X3D. I just recently moved to Linux from Windows a bit under 2 months ago so I don’t have much experience there and my system was still built with Windows in mind.
I’m still playing Ragnarok Online, an ancient MMO from 2002 that I run through CrossOver, so basically WINE. I play this using many accounts so I’m used to just having 8 clients open and 7-8 connected to the servers, which never was a problem on Windows (plus playing modern games with all those RO clients sitting in the background). Now, running this through compatability layers on Linux seems to put really hefty strain on the CPU. I tried this with a few CPUs and basically, it seems to directly correlate with amount of CPU cores. I was able to open 6 clients on a Ryzen 7600 and hit 95-100% CPU load, any additional clients would cause the game to perform really poorly to the point of being unplayable (and rather choppy even with a few less clients) and randomly disconnect clients every other minute. The 7800X3D behaves the same except with a base line of 8 clients instead of 6 and on another Ryzen 3900XT system, I was able to add yet more clients, although the older CPU seems to struggle more with running the game smoothly even with a few less clients open. Even if I reduce amount of clients by a few, the game is not running very smoothly with several open, especially when doing other things on the side such as recording gameplay. Performance with just a few clients open is perfectly fine, though.
That aside, I’m of course still playing modern games, which is why I initially got the 7800X3D.
Now I was thinking about upgrading my CPU to something more “many RO clients friendly” aka. more cores but I’m unsure about what CPU would make the most sense here. I understand Linux doesn’t have the ability to split load across the different CCDs the way Windows does. What I am wondering now is how well the 3D V-Cache on the Ryzen 7950X3D works under Linux and whether it would make sense to go with that CPU or if maybe the regular 7950X would make more sense in a core heavy Linux scenario.
Some input would be appreciated. Thanks in advance!
I run a 7900X3D along with a 7900XTX card. I regularly game with a 4k monitor with no upscaling and tend to average about 60 FPS on AAA games like Hogwarts Legacy, FF7 Remake.
There are usually 2 kinks that I’m aware of with these dual-chiplet high-core CPUs:
- At worst, the gaming performance is equal to a 7800X3D, though often it’s just only marginally better when playing a single game. If recording gameplay is something you do regularly though, then you’ll probably see more benefits since you can record without it having a significant impact on your game.
- If you do undervolting (and you probably should), it usually takes a lot of time to do proper testing (there’s no shortcut for this) to ensure your undervolt is stable. This is something that needs to be done per-core and takes more time the more cores you have.
I still fondly remember playing RO, but are you really actively playing all 8 clients? I recall the stupid system where you had to stay connected just to open a player shop to sell items. If that’s all you’re doing with the other 7 clients, I’d recommend maybe just buying a NUC or something with a high core count and using it purely for that while you just run 1 active client where you’re actually doing things.
I personally would go with 7950 or 7950x.
Use the 7950X non-3D. You’re not missing enough gaming performance.
You CAN have the games use just the v-cache cores, but it’s very complicated, you have to specify a specific topology in an environment variable or launch option, and basically it results in the game ONLY seeing the 8 v-cache cores.
Which means if you want to take advantage of the pure v-cache, you’re still only using 8-cores, which is the same as a 7800X3D, which defeats the purpose of the 7950X3D.
If you need more CPU-power, use the 7950X. Otherwise stay with the 7800X3D. Those are your only real options.
but it’s very complicated
I would not say so. It’s just one launch option
WINE_CPU_TOPOLOGY
specifying on what cores the game is going to run. Same as gamemode or mangohud.gamemoderun %command
ormangohud %command%
are NOT the same asWINE_CPU_TOPOLOGY=0,16,1,17,2,18,3,19,4,20,5,21,6,22,7,23
which requires using lstopo to confirm you’re using the correct core numbers, which also forces you to run all games with only 8 cores/16 threads, so half your cores aren’t even able to touch the game whatsoever.Not to mention the fact that you also have to do a completely different thing, using
taskset
, for native titles.Is it complicated for me? No, because I’m a power user. Is it going to be complicated for the vast majority of users? 100%. And OP is one of them.
But you can literally just combine that as
WINE_CPU_TOPOLOGY=0,16,1,17,2,18,3,19,4,20,5,21,6,22,7,23 gamemoderun %command%
, same as setting any environmental variable to be passed to the game. You’re making it out to be more complicated than it is.Also, I disagree with your assessment to stick with the 7950x or the 7800x3d. If you want more CPU power AND you want to game then the 7950x3d is still a great option. It’s generally more efficient than the 7950x while performing about the same in CPU tasks. If you have a game that you think can benefit from the 3d-vcache then you can limit the core topology for that game. You get the best of both worlds.
This wine commit nuked RO cpu performance so you have to get a build before that commit or revert that commit and build wine yourself.
I have absolutely no familiarity with RO. But reading OP’s description of each client hogging a whole CPU core points directly towards a busy-wait bug. Which could really be caused by a patch like the one you’ve shown here.