CPU Mode and Nested VMs


Recommended Posts

Hi guys, thank you in advance for your thoughts!

 

I have a Ubuntu KVM/VM client running on unraid, it in turn is a VirtualBox host which then has several VMs running on that. This all works fine for the most part, however I do have a question regarding virtualization of the CPU.

 

BTW, I tried getting VirtualBox running natively on Unraid with little success, I think I read all the post for this here, plus posts from other sources and still never got it to work. So, this is why I have this setup in the first place. If anyone has VirtualBox running on unraid, please let me know.

 

I first started out with "Host Passthrough" which (i would think) exposed the CPU to the Ubuntu Client, which in turn exposed that to the VirtualBox clients. For this test, I had 8 of my 8 cores allocated to the Ubuntu VM and have allocated a single core to the VirtualBox Client.

 

I noticed that when a started a process within a VirtualBox windows Client, it pinned one of the processors on the unraid box. To me, this behavior makes sense because it is just using the "passed-through" cores as if it were naively owned by the VM client and it is simply using only one core because I only allocated one core to the VirtualBox client.

 

What would be nice is if I allocation 1 core to the VirtualBox client that it would use 1/8th the processing power spread across the 8 host cores I have allocated. I thought that, in order for this to work that way, I would have to not pass through the CPU and virtualize the CPU layer. I changed my Ubuntu VM settings to do this, I allocated 8 cores to it but it is not set to "qemu64"

 

  <cpu mode='custom' match='exact' check='none'>
    <model fallback='forbid'>qemu64</model>
  </cpu>
 

for fun I also added <vcpu placement='static'>32</vcpu> to give me 32 virtual cores

 

so, my thinking was that if this is truly virtual that if I allocate just 4 of the 32 cores (1/8th again) to a VirtualBox client, that when is runs something, it would use 4/32 (or 1/8) of the 8 "real" cores and the workload would be spread across the 8 real cores.

 

This does not seem to be what is happening, when I run a process on the VirtualBox client and watch the usage on the unraid server, it is still pinning 1 core and all the others seem to be pretty much idle.

 

This could just be how qemu64 CPU virtualization layer is coded or maybe I am misunderstanding what CPU virtualization is completely.

 

Any input would be helpful.

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.