Please help me understand CPU pinning


Recommended Posts

I understand the basic idea, but I'm not sure on how to optimize. I guess my confusion is with how emulatorpin and iothreadpin work.

 

My i7-5820k is a 6 core 12 threads CPU.

I'd like to split the cores between 2 VMs, and for now, I'd like to optimize it for gaming.

 

So I've isolated CPUs 2,3,4,5,8,9,10,11 in Syslinux and I am currently assigning 4 to each VM. This part is pretty straightforward.

 

Now, with the remaining 4 cores, (0,1,6,7) I'm a bit confused on how to best utilize them. Should emulatorpin be set to 0,6 in both VMs and then iothreadpin cpuset to 1,7, should iothreadpin and emulatorpin simply share all 4 remaining cores? Or should each VM have separate cores defined for emulatorpin and iothreadpin?

 

Shouldthe iothreadpin CPUset actually come from threads already assigned to the VM? So if vm1 has 4,10,5,11 should iothreadpin CPUset='4,10'?

 

Please help.

Link to comment

You are overthinking it a bit. 😅

Your CPU is not a chiplet design so it's much simpler

  1. Keep core 0 free for Unraid
    • Preferably also keep the HT sister of core 0 free but if you really can't avoid it, it's not that big of a deal as long as it doesn't get loaded 100% all the time
  2. Isolate CPU cores for VM - which you have already done
  3. Use 1 logical core (i.e. thread) for the emulator per VM
    • From my experience, using more than 1 thread/VM for the emulator does absolutely nothing
    • You can use the HT sister of core 0 for the emulator but should not for best performance

That's about it really.

 

 

 

 

 

Link to comment
  • 3 years later...
On 8/2/2019 at 1:36 PM, testdasi said:

You are overthinking it a bit. 😅

Your CPU is not a chiplet design so it's much simpler

  1. Keep core 0 free for Unraid
    • Preferably also keep the HT sister of core 0 free but if you really can't avoid it, it's not that big of a deal as long as it doesn't get loaded 100% all the time
  2. Isolate CPU cores for VM - which you have already done
  3. Use 1 logical core (i.e. thread) for the emulator per VM
    • From my experience, using more than 1 thread/VM for the emulator does absolutely nothing
    • You can use the HT sister of core 0 for the emulator but should not for best performance

That's about it really.

 

 

 

 

 

Sorry for ressurecting this thread but you seem to know things :D

 

You say core 0 free for unraid is that really fully it and still valid in 2023?

 

I've been keeping core 0 (and it's HT) and core 1 (+HT) free.. so that is even overkill? (I have an EPYC 7282) like what would it influence if looking at it from a bottleneck point of view? (say core 0 +ht is overloaded what would I start to see?)

Link to comment
1 hour ago, Jumbo_Erdnuesse said:

On my old configuration i only kept core 0+HT and got it loaded at 100% by simply copying files from an attached HDD to my vm´s vdisk.

If you were looking at the dashboard it was just iowait, didn't mean the core was fully loaded, just that it was waiting on IO. Could still do something else in the meantime.

  • Thanks 1
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.