Open Baughn opened 9 months ago
Question since you seem very knowing about this and I plan to purchase one of these CPU's myself, how does cutting off core access to the others improve things? Should it not use the vcache cores + the rest by default? Or is this just preventing it from randomly choosing the non cached cores.
It's preventing it from randomly choosing the non-vcache cores, but also telling Proton that it should only use the vcache cores.
You could do the first half of that with taskset, but then Proton (and by extension the game) would still believe that all 16 cores are available, even though they're not. Using WINE_CPU_TOPOLOGY kills two geese with the same carrot.
It's preventing it from randomly choosing the non-vcache cores, but also telling Proton that it should only use the vcache cores.
You could do the first half of that with taskset, but then Proton (and by extension the game) would still believe that all 16 cores are available, even though they're not. Using WINE_CPU_TOPOLOGY kills two geese with the same carrot.
Gotcha, sounds like a great change if implemented, much better than the windows implementation of just killing half the cores outright through magical game detection. How does one go about using your script with Proton? Or is this an actual patch to the WINE_CPU_TOPOLOGY command?
I don't know enough about Proton to say; that's why this is a feature request without a PR.
You can run the script as-is, and it'll output a WINE_CPU_TOPOLOGY line. You can then get that into the environment of Steam, by whatever means, and it'll affect every game you launch. I'm on NixOS, so I just set it in configuration.nix.
I don't know enough about Proton to say; that's why this is a feature request without a PR.
You can run the script as-is, and it'll output a WINE_CPU_TOPOLOGY line. You can then get that into the environment of Steam, by whatever means, and it'll affect every game you launch. I'm on NixOS, so I just set it in configuration.nix.
Ah, I get the purpose of the script now, nicely written, ill keep it around for when I get my CPU, thank you.
Hi, I switched to Linux (CachyOS) 1 Week ago. I'm only lightyears away from programming such a code myself ; ) . Especially eversince I'm sitting here now, and still asking myself how to implement that Code savely and correctly.
Feature Request
I confirm:
Description
On an X3D CPU, WINE_CPU_TOPOLOGY--if not already set--should be set to limit visible CPU cores to only those with V-cache available.
Here's an example Python script that would do it:
Justification [optional]
On an X3D CPU, for the vast majority of games, forcing the game to run only on the V-cache cores improves performance significantly. In some cases (e.g, Stationeers) this can be a 100% FPS improvement.
On Windows, AMD's game mode driver ensures this by shutting off (!) half the CPU, when a Steam game is run on a CPU with V-cache available on some but not all cores. (E.g, the 7950X3D.)
On Linux this can be done through taskset or by shutting off the cores through /sys/devices/cpu, but I got the best results by using WINE_CPU_TOPOLOGY to limit apparent hardware thread counts & core affinity to only the v-cache cores. This allows other processes to keep running, and allows worker thread tuning to match the actually available resources.
Risks [optional]
There's probably one or two games somewhere in the library that do better with all 16 cores available.
References [optional]
Appendix
FPS, measured in a mature Stationeers base under maximally CPU-hungry conditions.
Using taskset --cpu-list:
Using WINE_CPU_TOPOLOGY: