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.

Why Does My Windows VM Not Use All CPU Power?

Featured Replies

Hi,

 

I am experimenting with a Windows VM to get the fastest possible HEVC Encoding process but find that a VM on my 2950X Threadripper barely uses the CPU Power available? 

 

Is this just a reporting issue or is it correct?  

 

If I encode natively on my I7 8700K Handbrake uses 80% of my CPU using the highest priority but the VM uses 30% Please look at the screenshots and any advice is greatly appreciated! 🙂

 

 

handbrake all cores i7.jpg

handbrake all cores vm wintaskmanager.jpg

handbrake all cores vm.jpg

I use Intel chips, and only have a little bit of a hint on this issue, but I think you need to study up on NUMA nodes and how they interact with KVM/QEMU... Thread ripper isn't really a single CPU, it really acts like 2 or 4 CPU sockets in a single CPU socket, with a limited number of methods for one CPU to pass info or tasks to another CPU...  In this context to avoid confusion, they don't call these CPU's on a CPU a CPU, but rather a single CPU with multiple NUMA nodes...

 

Your PCIe slots are also linked not to the CPU, but rather a specific NUMA node, and if a different NUMA node wants to talk to that card, it also has to do this inter-NUMA node communication process...

 

Threadripper can be an awesome CPU, but requires alot more configuration and understanding to get it running at its peak...

  • Author

Hi,

 

I had found some info on this earlier on the Handbrake forum regarding NUMA, I am getting better results using less cores when using handbrake, I am now looking for another cpu stress test that is not handbrake to give me a better idea of results when configuring.

 

Many Thanks for the reply & if you can recommend a better stress test I would appreciate it! 🙂

I can tell you that QEMU doesn't detect the NUMA setup you have, and so you have to manually configure each VM to let the kernel it uses know how to max out the CPU...  So the first thing you will need to do is fix the NUMA setup in your VM's XML before you fix anything inside of the VM...  If you don't, the VM will always be handing stuff off to other CPU's that it thinks will be near instant, but instead takes ages on CPU timescales...  This will mean that the CPU's will spend a ton of time waiting for intercommunication to happen rather then doing anything useful...

 

https://libvirt.org/formatdomain.html#elementsNUMATuning

<domain>
  ...
  <numatune>
    <memory mode="strict" nodeset="1-4,^3"/>
    <memnode cellid="0" mode="strict" nodeset="1"/>
    <memnode cellid="2" mode="preferred" nodeset="2"/>
  </numatune>
  ...
</domain>
...
<cpu>
  ...
  <numa>
    <cell id='0' cpus='0-3' memory='512000' unit='KiB' discard='yes'/>
    <cell id='1' cpus='4-7' memory='512000' unit='KiB' memAccess='shared'/>
  </numa>
  ...
</cpu>
...
...
<cpu>
  ...
  <numa>
    <cell id='0' cpus='0,4-7' memory='512000' unit='KiB'>
      <distances>
        <sibling id='0' value='10'/>
        <sibling id='1' value='21'/>
        <sibling id='2' value='31'/>
        <sibling id='3' value='41'/>
      </distances>
    </cell>
    <cell id='1' cpus='1,8-10,12-15' memory='512000' unit='KiB' memAccess='shared'>
      <distances>
        <sibling id='0' value='21'/>
        <sibling id='1' value='10'/>
        <sibling id='2' value='21'/>
        <sibling id='3' value='31'/>
      </distances>
    </cell>
    <cell id='2' cpus='2,11' memory='512000' unit='KiB' memAccess='shared'>
      <distances>
        <sibling id='0' value='31'/>
        <sibling id='1' value='21'/>
        <sibling id='2' value='10'/>
        <sibling id='3' value='21'/>
      </distances>
    </cell>
    <cell id='3' cpus='3' memory='512000' unit='KiB'>
      <distances>
        <sibling id='0' value='41'/>
        <sibling id='1' value='31'/>
        <sibling id='2' value='21'/>
        <sibling id='3' value='10'/>
      </distances>
    </cell>
  </numa>
  ...
</cpu>
...

 

Edited by Warrentheo

ah, found one for you:

 

  • Author
17 minutes ago, Warrentheo said:

ah, found one for you:

 

Nice Job! Thanks! I Love Spaceinvader videos 🙂

 

Archived

This topic is now archived and is closed to further replies.

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.