Please provide an option to adjust CPU affinity
complete
bd_
With EAC, it is no longer possible to adjust CPU affinity for the VRChat process. On AMD processors in particular, restricting VRChat to a single CCX (half of the cores, on certain models) could provide (and historically has provided) a significant performance boost. Because this is no longer possible with external tools, please provide a built-in mechanism to adjust this affinity.
Log In
_
_tau_
complete
This has been available for a while now via the
--affinity
parameter, documented here: https://docs.vrchat.com/docs/launch-optionsDo note however that on most systems running affected AMD CPUs the core affinity should also be configured automatically now, without the parameter.
Hackebein
_tau_ We got previously told that there will be a setting in the menu for it. Did that got cancled?
_
_tau_
Hackebein As far as I'm aware there is no menu setting for this planned. Since we now automatically try to detect the best configuration anyway the launch parameter is purely a power-user option.
Hackebein
_tau_ are there docs to document this behavior?
_
_tau_
Hackebein: I don't think the automatic selection is documented right now, but you can suggest edits on readme I believe.
ColonelPannick
This has become more important than ever with the introduction of multi tiered processors, ie 7950x3d. Limiting VRC to the 3D cores and leaving the extra cores non-parked for the VR compositor, HTC, oculus, etc software should provide quite a performance improvement. Even on a 3700 or 5900x limiting VRC to a single CCD provided me a boost in certain scenarios.
--Edit. Not sure why this comes up in search first, but the --affinity option exists now. Don't recall seeing it in any patch notes, but is documented.
Hackebein
ColonelPannick: it exists. it were mentioned in update notes but they also said they want an option in game to controll it. Not only a start parameter
M
Mythuselah
For folks wondering why this provides a boost, the reason is that this increases something called "cache coherency". CPUs have their own memory that is "close" to them. When a CPU needs access to something in memory, that data is copied into the CPU cache. Because the cache is closer and faster than normal "main memory" ram, it can increase the performance of future work it does that needs that data.
This fast cache memory is limited though, and if too many new things are loaded in (say by another program that runs on that CPU) then the data gets removed from the cache. The next time vrchat tries to access that data it will have to load it into the cache again.
The other issue with cache is that if vrchat switches to run on another CPU then that other CPU's cache won't have the data loaded into its cache which is slower.
CPU affinity keeps vrchat running on the same set of CPU(s) which means that it is working with the same cached data. It also will tell the OS to try to push other programs to run on other CPU(s) which will help keep the data on that cache.
This is one of the reasons that consoles are so fast. CPU affinity and the lack of other programs running that can mess up a CPU cache help keep data that is needed on the fast memory in caches.
Hackebein
Tupper - VRChat Head of Community
Silent_Angel
With some testing, it is not possible to set cpu affinity and priority with 3rd party software. Not even task manager has permission to do this. I find this a huge inconvenience. From a performance perspective, I find it unacceptable... especially for a VR application where stability is priority.
zexc
you can do this natively in windows
Canloo
zexc: i know, but why cant it be a feature. Easier to use instead of everytime opening my task manager to look for the thing and always uncheck or check 24 threads.
If it can bring better perfromance for many then why not implement it. or atleast a txt file to edit in the vrc folder.
Shadowriver
Canloo: There no need for mod for this, there software that let you automatize and also addinity settings performance gain diffrence per hardware (in fact it is OS job to schedule threads to proper cores)
Canloo
Shadowriver: why would there be a need for a third party Software when they can easily implement it into the game. A mod already existed for that. So i dont see the issue in that
zexc
Shadowriver: while i agree its the os's job to do this. windows infact still loves to toss all things on core 0 and 1. This issue effects vrchat dis-proportionally due to its weak multi threading. The benefits of changing cores on vrchat on ryzen chips specifically can increase fps in the upwards of 2-9%.
This is just a failure on windows, but something vrchat could help address by allowing core assignments on launch options.
Lenr
also, adding an option to set CPU priority too would be great. Same issue with EAC making it impossible, unless you want to regedit.
Silent_Angel
It may not provide too much of a performance improvement for some systems, and for other's it will make a massive difference. It will definitely improve the overall stability of the game's framerate delivery. There are 3rd party applications that allow you adjust CPU affinity for certain processes; but having a nice convenient way to do this in game is a step in the right direction. Especially for those of us who like squeezing every drop of performance form their hardware (Me included).
Aev
tracked
While there have been some challenges in testing, we're definitely investigating this!
Load More
→