Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Performance Improvements in VMs by adjusting CPU pinning and assignment

Featured Replies

How relevant is Post #1 in 2022 on 6.9.2 though? I'm just curious as I got all cores/threads checked for my 5950X and dont see any kind of performance issues?

  • 4 weeks later...
  • Replies 341
  • Views 449.2k
  • Created
  • Last Reply

Top Posters In This Topic

Most Popular Posts

  • I've started working on enhancing the VM Form Editor in my spare time to add extra support for the CPU block so these tweaks we're making can be applied without manually editing the XML.   U

  • Check 6 boxes instead of 3 [emoji848] Sent from my SM-G955U using Tapatalk

  • SpaceInvaderOne
    SpaceInvaderOne

    Thats interesting. I did some testing a few days ago pinning hyperthreaded pairs then pinning none hyperthreaded pairs and running passmark cpu benchmark software afterwards   this is my results

Posted Images

Thanks, worked out, wondered me a little cause i thought i made that before and had errors on my vm´s when trying to start them,

must been a failure by me. working actually a little better now when the gaming vm is in use so the other can be used a little better.

admiral casino biz

Edited by fazaliuyt

  • 11 months later...

Wondering if someone could recommend how I may increase performance in a VM with a Intel® Avoton C2750 Octa-Core Processor on an ASRock C2750D4I mb which has single thread pairings. I've tried googling it, but can't find much information what would be the proper or recommended way to pin the CPU.

 

The main purpose of the server is to run Plex and dockers, but as of recently I am trying to set up a VM to run Power BI and Excel mainly.

Screen Shot 2023-03-27 at 3.45.33 PM.png

I am sure, it has been asked before, but can I change machine type from Q35 to I440vx for existing VM? Do I need to change something in VM setting or will it work on the fly? 

1 hour ago, sonisame said:

I am sure, it has been asked before, but can I change machine type from Q35 to I440vx for existing VM? Do I need to change something in VM setting or will it work on the fly? 

as this is more or less just the "chipset", yes, it should work, may just needs some new drivers then ...

 

but, just to be safe and as its so easy ...

 

shut down your vm, copy the vdisk image as backup,  change  mashine type and see what happens, if all is ok, just wipe the vdisk image backup, if not wipe the non working one, move back the original one, change back your vm setting and all is like it never happened ...

 

or, after copy, just setup a new vm with your changed i440 setting and use the copied vdisk ... if all is ok, wipe the "old" vm ...

  • 2 weeks later...

Thank you, I was able to change all my VM machine types.

Sam

  • 11 months later...

If you are curious to see how your CPU is handle in unraid the following two commands can show you dies layout for CPU isolation.  For the chiplet designs coming out is best to put your workhorse vm on a single chiplet intead across multiple.  Hope this helps.

lscpu -e and lstopo

 

lstopo
Machine (126GB total)
  Package L#0
    NUMANode L#0 (P#0 126GB)
    L3 L#0 (32MB)
      L2 L#0 (512KB) + L1d L#0 (32KB) + L1i L#0 (32KB) + Core L#0
        PU L#0 (P#0)
        PU L#1 (P#16)
      L2 L#1 (512KB) + L1d L#1 (32KB) + L1i L#1 (32KB) + Core L#1
        PU L#2 (P#1)
        PU L#3 (P#17)
      L2 L#2 (512KB) + L1d L#2 (32KB) + L1i L#2 (32KB) + Core L#2
        PU L#4 (P#2)
        PU L#5 (P#18)
      L2 L#3 (512KB) + L1d L#3 (32KB) + L1i L#3 (32KB) + Core L#3
        PU L#6 (P#3)
        PU L#7 (P#19)
      L2 L#4 (512KB) + L1d L#4 (32KB) + L1i L#4 (32KB) + Core L#4
        PU L#8 (P#4)
        PU L#9 (P#20)
      L2 L#5 (512KB) + L1d L#5 (32KB) + L1i L#5 (32KB) + Core L#5
        PU L#10 (P#5)
        PU L#11 (P#21)
      L2 L#6 (512KB) + L1d L#6 (32KB) + L1i L#6 (32KB) + Core L#6
        PU L#12 (P#6)
        PU L#13 (P#22)
      L2 L#7 (512KB) + L1d L#7 (32KB) + L1i L#7 (32KB) + Core L#7
        PU L#14 (P#7)
        PU L#15 (P#23)
    L3 L#1 (32MB)
      L2 L#8 (512KB) + L1d L#8 (32KB) + L1i L#8 (32KB) + Core L#8
        PU L#16 (P#8)
        PU L#17 (P#24)
      L2 L#9 (512KB) + L1d L#9 (32KB) + L1i L#9 (32KB) + Core L#9
        PU L#18 (P#9)
        PU L#19 (P#25)
      L2 L#10 (512KB) + L1d L#10 (32KB) + L1i L#10 (32KB) + Core L#10
        PU L#20 (P#10)
        PU L#21 (P#26)
      L2 L#11 (512KB) + L1d L#11 (32KB) + L1i L#11 (32KB) + Core L#11
        PU L#22 (P#11)
        PU L#23 (P#27)
      L2 L#12 (512KB) + L1d L#12 (32KB) + L1i L#12 (32KB) + Core L#12
        PU L#24 (P#12)
        PU L#25 (P#28)
      L2 L#13 (512KB) + L1d L#13 (32KB) + L1i L#13 (32KB) + Core L#13
        PU L#26 (P#13)
        PU L#27 (P#29)
      L2 L#14 (512KB) + L1d L#14 (32KB) + L1i L#14 (32KB) + Core L#14
        PU L#28 (P#14)
        PU L#29 (P#30)
      L2 L#15 (512KB) + L1d L#15 (32KB) + L1i L#15 (32KB) + Core L#15
        PU L#30 (P#15)
        PU L#31 (P#31)

 

lscpu -e
CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE    MAXMHZ    MINMHZ       MHZ
  0    0      0    0 0:0:0:0          yes 5083.3979 2200.0000 3696.7129
  1    0      0    1 1:1:1:0          yes 5083.3979 2200.0000 3838.7380
  2    0      0    2 2:2:2:0          yes 5083.3979 2200.0000 4712.8442
  3    0      0    3 3:3:3:0          yes 5083.3979 2200.0000 4323.0791
  4    0      0    4 4:4:4:0          yes 5083.3979 2200.0000 4716.0020
  5    0      0    5 5:5:5:0          yes 5083.3979 2200.0000 4095.6111
  6    0      0    6 6:6:6:0          yes 5083.3979 2200.0000 4717.2632
  7    0      0    7 7:7:7:0          yes 5083.3979 2200.0000 4715.3799
  8    0      0    8 8:8:8:1          yes 5083.3979 2200.0000 3594.2419
  9    0      0    9 9:9:9:1          yes 5083.3979 2200.0000 3400.0000
 10    0      0   10 10:10:10:1       yes 5083.3979 2200.0000 3581.8450
 11    0      0   11 11:11:11:1       yes 5083.3979 2200.0000 3400.0000
 12    0      0   12 12:12:12:1       yes 5083.3979 2200.0000 3400.0000
 13    0      0   13 13:13:13:1       yes 5083.3979 2200.0000 3746.9951
 14    0      0   14 14:14:14:1       yes 5083.3979 2200.0000 3400.0000
 15    0      0   15 15:15:15:1       yes 5083.3979 2200.0000 3400.0000
 16    0      0    0 0:0:0:0          yes 5083.3979 2200.0000 3787.1699
 17    0      0    1 1:1:1:0          yes 5083.3979 2200.0000 4684.5049
 18    0      0    2 2:2:2:0          yes 5083.3979 2200.0000 4675.6758
 19    0      0    3 3:3:3:0          yes 5083.3979 2200.0000 4415.8789
 20    0      0    4 4:4:4:0          yes 5083.3979 2200.0000 4704.3140
 21    0      0    5 5:5:5:0          yes 5083.3979 2200.0000 4511.8540
 22    0      0    6 6:6:6:0          yes 5083.3979 2200.0000 4669.6411
 23    0      0    7 7:7:7:0          yes 5083.3979 2200.0000 4663.3330
 24    0      0    8 8:8:8:1          yes 5083.3979 2200.0000 3400.0000
 25    0      0    9 9:9:9:1          yes 5083.3979 2200.0000 3400.0000
 26    0      0   10 10:10:10:1       yes 5083.3979 2200.0000 3400.0000
 27    0      0   11 11:11:11:1       yes 5083.3979 2200.0000 3400.0000
 28    0      0   12 12:12:12:1       yes 5083.3979 2200.0000 3400.0000
 29    0      0   13 13:13:13:1       yes 5083.3979 2200.0000 3400.0000
 30    0      0   14 14:14:14:1       yes 5083.3979 2200.0000 3593.3479
 31    0      0   15 15:15:15:1       yes 5083.3979 2200.0000 3400.0000

  • 1 month later...

Can someone please explain this to me? I have my VM set to 8 cores, but in the XML view under "cpu" , it looks like its set to use only 4 cores and 2 threads.

 

  <cpu mode='host-passthrough' check='none' migratable='on'>
    <topology sockets='1' dies='1' cores='4' threads='2'/>
    <cache mode='passthrough'/>
    <feature policy='require' name='topoext'/>
  </cpu>


I dont understand why that is when just above that section I have this:
 

  <vcpu placement='static'>8</vcpu>
  <cputune>
    <vcpupin vcpu='0' cpuset='20'/>
    <vcpupin vcpu='1' cpuset='84'/>
    <vcpupin vcpu='2' cpuset='21'/>
    <vcpupin vcpu='3' cpuset='85'/>
    <vcpupin vcpu='4' cpuset='22'/>
    <vcpupin vcpu='5' cpuset='86'/>
    <vcpupin vcpu='6' cpuset='23'/>
    <vcpupin vcpu='7' cpuset='87'/>
  </cputune>


 

form.jpg

xml.jpg

11 minutes ago, spotopolis said:

it looks like its set to use only 4 cores and 2 threads.

HT setup ... 4 cores "Hyperthreading" ;)

6 minutes ago, alturismo said:

HT setup ... 4 cores "Hyperthreading" ;)

Shouldn't it be 4 cores and 4 threads, not 2 with my above settings? I have 8 total selected.

 

EDIT: I initially configured this though the "form view" and just happened to notice the way the xml was configured as 4 core and 2 thread. I was surprised by that cause I thought it should read 4 thread.

Edited by spotopolis

5 minutes ago, spotopolis said:

Shouldn't it be 4 cores and 4 threads, not 2 with my above settings? I have 8 total selected.

 

nope, 4 core with each 2 threads ... its correct like this

 

sample Gaming VM here

 

image.png.3b70f90601a714f2b8fd5d4f8519a5a9.png

 

image.png.fd457952a9a1c5ba1eeeb93b86cde30f.png

5 minutes ago, alturismo said:

nope, 4 core with each 2 threads ... its correct like this

 

sample Gaming VM here

 

image.png.3b70f90601a714f2b8fd5d4f8519a5a9.png

 

image.png.fd457952a9a1c5ba1eeeb93b86cde30f.png

Aaaah. I understand now. Thank you for the clarification. I see what you are saying.

 

I hadn't considered it was listing it as 2 threads per core. I figured since it displayed the total number of cores, it would display the total number of threads.

 

I was thinking my configuration was somehow corrupted and had mismatched information.

  • 3 months later...

A few days ago I set up a Win10 VM for iTunes backup purposes. The VM settings followed the configuration in the first post (pinning cpu cores, pairs for hyperthreading and not using the first two). 4GB of ram and vdisk on my cache SSD. After all of this I still find that the VM is extremely slow to use, almost unusable. I don't know what else to tweak because it seems like the configuration ticks all the boxes for usable performance.

 

vm1.png

vm3.png

vm2.png

2 hours ago, Mad_cyclist said:

I don't know what else to tweak because it seems like the configuration ticks all the boxes for usable performance.

you definately shouldnt use ballooning RAM in Windows

 

image.png.ba2f1b9b19b808a31e3be6274272497e.png

 

and 4 GB aint that much anymore anyhow, but still should perform reasonable ... ;)

 

and after installing the VM, you prolly use the web VNC ...

 

if so, see this more as "Installation" only ... then use RDP, or at least install nativ VNC Server and connect with a VNC Client ... while RDP will always perform better.

 

and this thread is more about "fine tuning" ... for like Gaming VM's ... ;)

  • 2 months later...

Just wanted to share some numbers for those with E & P cores and looking for an understanding of their relative speed.

 

Cinebench R23 Multithread using 4 threads on an overclocked 12600k with XMP enabled:

4 threads on 2 P Cores (HT) = 4764 (typical use)
4 threads on 4 P Cores (no HT) = 6993 (+46%)
4 threads on 4 E Cores = 3768 = (-20%)

 

E Cores are no slouch.   They are alone faster than Intel Core i3 8100

 

 

Edited by dimes007

  • 3 months later...

Hello everyone, I'm seeking your opinions to make sure I haven't gone off track with optimizing my Windows 11 VM. I have a Ryzen 7 5800X, and I've configured CPU isolation like this:

 

01.thumb.jpg.6190aad3fea55a22fb06103f86f31620.jpg

 

Which translates to this in the XML:

 

  <vcpu placement='static'>10</vcpu>
  <cputune>
    <vcpupin vcpu='0' cpuset='3'/>
    <vcpupin vcpu='1' cpuset='11'/>
    <vcpupin vcpu='2' cpuset='4'/>
    <vcpupin vcpu='3' cpuset='12'/>
    <vcpupin vcpu='4' cpuset='5'/>
    <vcpupin vcpu='5' cpuset='13'/>
    <vcpupin vcpu='6' cpuset='6'/>
    <vcpupin vcpu='7' cpuset='14'/>
    <vcpupin vcpu='8' cpuset='7'/>
    <vcpupin vcpu='9' cpuset='15'/>
  </cputune>

 

I have a doubt about the arrangement of the core/hyper-threading pairs.

Thank you for your responses, have a great day, everyone! :)

Edited by BœufLord

  • 3 weeks later...

Hi.
I'm wondering if with isolcpus and emulatorpin it's possible to force unraid to only use ecore.
Leaving pcore strickly for VMs.

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...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.