RPCS3 Forums

Full Version: What is SPURS and the impact on Intel / AMD
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi there,

I have been watch some thread about performance issues, and some recomendations is the SPURS threads.

From Wiki:
Maximum number of SPURS threads
Unlimited
Limits the maximum number of SPURS threads in each thread group. May improve performance in some cases, especially on systems with limited number of hardware threads.
Limiting the number of threads is also likely to cause crashes. It's recommended to keep this at default value.


But exactly what it means in terms of SPURS thread vs CPU Threads ....  it is something like

5 Spur Thread -> 1 SPURS Thread Group ->  1 CPU thread ?

I don't quite understand the relation between SPURS Thread / SPURS Thread Group and CPU Threads.

Less Spurs threads less bottleneck on CPU thread ?

This because I find that AMD ryzen Thread management to be inferior than Intel's one, almost that RPCS3 stalls the CPU threads if they reach 100% use and freezes .
I find better results limiting everything in RPCS3, than leaving to Auto. ( I have AMD Ryzen 5 2600 stock ).

Does this have anything to do with the SPURS and RPCS3 overflooding the CPU threads causing stability issues ?


Thank you!
1 SPURS threads is essentially 1 SPU thread, which runs on a single PS3 SPE core. You can have up to 6 SPE cores for games. Reducing the amount of SPURS threads makes the game use less SPEs if possible, which leads to better performance as SPU emulation is the major bottleneck due to its architecture.
hmm,
so it optimal to have SPU counting and some room in cpu core/threads for RSX,

sometimes i get the "feeling" that RPCS3 just floods SPU and RSX compiling at the CPU...and if the CPU is already bootlenecked causes freezes.

SPU and RSX are the same thing or diferent thread process's .

( sorry if im asking some to much technical works . I just want to understand a bit, for better fine tuning rpcs3 setups. )
However its not that simple. Limiting SPURS lead to crash on my system while limiting "prefered SPU threads" in CPU section doesn't. I would like to know deeper about correlation between 2. For now I am guessing that limiting SPURS t. mean limiting how many SPU threads can game internally allocate, which would explain the crash.
I've been struggling to understand optimal settings to a point that dont allocate more cores/threads than needed to emulation.

Hope to have some opinions of the works of RPCS3 in what is what.

For what I find is this. ( in AMD Ryzen 5 2600 6c/12t - with Gran Turismo 5 ) . I know that isnt powerfull cpu.

LLVM cores : Switching between 4, 6 and 8 , beeing 4 the sluggish performance ... beeing 6 more optimal, 8 is CPU burst intensive...
SPU Threads : Set to MEGA with 2 threads, more performance constrain, less FIFO desync, less shuttering., setting to 4, increases raw performance(FPS), but much more shuttering, Fifo desync
SHADERS: Set to 6 and 8, I think is ways of RPCS3 compensate the CELL processing power, this needs enough threads to feed SPU emulation, 6 = minimal, 8 = optimal, >8 = notice to cause overhead on SPU emulation to a point that freezes/stall RPCS3 virtualization...
SPURS Threads : set to 4 .... less than 4 gives poor perfomance, more than 4 gives random freezes.

Now, since there is a sequence of instructions that needs to be sent in correct order and timming. but we need a "buffer" for those intructions to parse and compile, it relates to CPU power and system latency. ( drivers, ram speed, cpu cache speed, etc )
Driver Wake, set to 250u got some stability, changing to 600u, it sacrificed performance( not the best smooth experience), but yet, much less random freezes.

In the end we have to allocate cores and threads to:

LLVM Cores
SPU Threads
Shader Threads
SPURS Threads
and RSX ?

Which is best to allocate cores and threads in a limiting scenario ?

the RSX processing, that i really don't know if it uses LLVM cores or SPU threads .... or Shaders Threads, or anything outside of these configurations. is it fixed 2 threads ?

And whats the diference between Rpcs3 Scheduler and Rpcs3 Scheduler Alternative, how impact have on core/threads order of execution?