This post has been de-listed
It is no longer included in search results and normal feeds (front page, hot posts, subreddit posts, etc). It remains visible only via the author's post history.
Just leaving this here for others to read up on since it took me a while to figure this out and test.
I have a Ryzen 5 2600x (6 cores, 12 threads, single die, consisting of 2 CCX connected via infinity fabric, bare metal Cinebench R15 scores: 1400 multi-core (116.7 per thread) and 180 single-threaded) and have set up a WIndows 10 gaming VM. Since performance was mediocre initially I have read up about and tinkered with different core assignments to boost performance. I tried three configurations and here's what I found:
- 4 cores/8 threads (cores 1/7, 2/8, 4/10 and 5/11, isolated):
This config has 2 cores of each CCX and their respective hyperthreads assigned to the VM. Assigning both threads of a core to a VM is best practice so performance doesnt get hampered by something else running on the other thread like a docker container.Because of this this config had the best single-core performance of around 170 points. Multi-core was 860 (107.5 per thread) and games in CPU-intensive scenarios were stuttering (Subnautica looking at base with many fish, lots of lighting 20-24fps) - 10 threads (dynamically allocated):
I wanted to give the VM as much resources as possible and read about the option to let UnRAID dynamically assign cores to the VM by removing the <cputune> tag and it's contents in the XML. This should in theory balance the load very evenly but cores can't be isolated so other processes might utilize threads or the other hyperthread of a core at the same time.Multi-core was very good at 1150 points (115 per thread) but single-core was very mediocre at 155. Gaming performance (subnautica same scene) was worse than 4c/8t at 16-20 fps. - 6 cores/6 threads (cores 6,7,8,9,10,11, isolated):
This config has one thread of each core assigned to the VM. In the VM's XML i changed the topology tag to read "<topology sockets='1' cores='6' threads='1'/>" so that the VM recognizes each thread as a separate core. To the VM this looks like a full CPU with SMT turned off.
This had good single-core performance at 165 points and astonishingly good multi-core at 930 (155 per thread!). I figure this is since the load is spread out across all cores. This config does pose the risk of a docker or other process loading the other thread and introducing stuttering but fps (subnautica same scene 26-29fps) and especially stutter improvement was very significant. Since I don't run any CPU-intensive dockers I stayed on this config.
Keep in mind that all of this has changed with Zen 2 and the chiplet architecture. But if you're on first or second gen Ryzen and want to improve gaming performance then maybe differing from the best practice of assigning both threads to a VM is viable for you.
Post Details
- Posted
- 4 years ago
- Reddit URL
- View post on reddit.com
- External URL
- reddit.com/r/unRAID/comm...