Unusual VM setup proposal and questions.


Recommended Posts

Hello all,

 

I have a very specific need for a Windows 10 VM that allows GPU passthrough, one that can be opened however within a window rather than on a separate monitor, and all while running the unRaid server on my main PC. Basically I want to do what other workstation rather than sever focused programs would do all while having near bare-metal performance. Is this possible?

 

I'm figuring that it should be but I can't wrap my head around how to do it. I have a rather involved Windows 10 install on my computer currently that I cannot lose, so that's one of the reasons I haven't just dived into the whole idea of this yet. 

 

On an important note I guess, is that I have 2 graphics cards, 1 gtx 980 and 1 gtx 1080ti, and 4 monitors. 1 of which is hooked up to the 980 exclusively. 

 

I think that one solution would be to flip my graphics card setup to be my 1080ti on my main monitor with the other 3 on the 980, run 2 Windows 10 VMs, share my 2 ssd's and 1 hdd between them both, and use synergy to move my mouse between them. That sounds like a working idea but causes a few complications, namely one large one: I won't be able to move windows across the screens like I would normally. I have a 3 + 1 monitor array and not being able to do this would just kill it for me.

 

So back to the VM via VNC. Does this inherit any performance problems or latency? 

 

I'm certain what I want in doable and probably isn't that unusual, but I just can't figure it out. How do I do it all guys?

Link to comment

No, what you want is not possible.    When you do GPU passthru then the only thing that can use the monitor attached to it  is the VM (thus it does not run in a window).

 

UnRAID can run headless, so is any  reason why unRAID needs access to the monitor attached to the GPU in your desired setup.   You could then run the unRAID GUI via a browser running in the VM (so it is the unRAID GUI running in a Window).

Link to comment

I had another idea. Can I run the VM headless and use an rdp to remote into it? If I did that would that let me do what I want?  

 

All the while could I use 1 powerful GPU and 1 GPU for unraid or would I need a total of three gpus, one for unraid, one for my main windows vm, and another for the other headless VM? 

Link to comment
9 minutes ago, NeoDude said:

Don't quite know what you're trying to achieve here tbh.

 

I run my main PC as a Windows VM with passed through 1070. I only use one monitor and just access UnRaid via the WebGUI. 

 

I need to have a second windows vm that I can reinstall often and run within a virtualized os drive.

Link to comment

If you are prepared to RDP into a VM (or use the unRAID built-in VNC option) then it is not necessary for a VM to have a GPU assigned to it at all.  From your description of your need I think you could get away with a single GPU and then:

  • Run you main Windows VM using hardware passthru of the GPU.  This would give something close to bare-metal performance.   You could have several,VMs set up to use the same GPU as long as you only ever want to run one of them at a time.  You should leave at least one CPU unused by the VM (typically CPU0) to give unRAID some resources to run it s NAS function, and also to support thr KVM emulation.
  • Run unRAID in headless mode and access the unRAID GUI using a web browser running in your main Windows VM.  unRAID itself does not gain anything performance wise by having a dedicated GPU.
  • Have another VM that has no GPU assigned to it that is accessed via RDP.   Obviously this one will not have the equivalent of bare-metal GPU performance, but since you seem prepared to use RDP I suspect that you do not need that in this VM?  If the VM is not capable of supporting RDP for some reason then you could instead access it using a VNC client (e.g. realVNC) in your main Windows VM to access the built-in KVM VNC support for VMs.

As a general note you can run as many VMs as you like that do not have dedicated GPUs as long you have enough RAM to run them (RAM is dedicated to a VM while it is running).   I quite frequently have several VMs running with no GPU assigned with different OS and/or OS versions that I can use for testing.   Since these VMs are only idling unless I am switched to it and actually actively using one of them for testing they do not interfere much with each other.

Link to comment
5 minutes ago, itimpi said:

If you are prepared to RDP into a VM (or use the unRAID built-in VNC option) then it is not necessary for a VM to have a GPU assigned to it at all.  From your description of your need I think you could get away with a single GPU and then:

  • Run you main Windows VM using hardware passthru of the GPU.  This would give something close to bare-metal performance.   You could have several,VMs set up to use the same GPU as long as you only ever want to run one of them at a time.  You should leave at least one CPU unused by the VM (typically CPU0) to give unRAID some resources to run it s NAS function, and also to support thr KVM emulation.
  • Run unRAID in headless mode and access the unRAID GUI using a web browser running in your main Windows VM.  unRAID itself does not gain anything performance wise by having a dedicated GPU.
  • Have another VM that has no GPU assigned to it that is accessed via RDP.   Obviously this one will not have the equivalent of bare-metal GPU performance, but since you seem prepared to use RDP I suspect that you do not need that in this VM?  If the VM is not capable of supporting RDP for some reason then you could instead access it using a VNC client (e.g. realVNC) in your main Windows VM to access the built-in KVM VNC support for VMs.

As a general note you can run as many VMs as you like that do not have dedicated GPUs as long you have enough RAM to run them (RAM is dedicated to a VM while it is running).   I quite frequently have several VMs running with no GPU assigned with different OS and/or OS versions that I can use for testing.   Since these VMs are only idling unless I am switched to it and actually actively using one of them for testing they do not interfere much with each other.

 

When you say that I am going to use only one VM at a time, does that mean I can't access my headless VM from within my windows vm?

 

I plan to use something like steam in house streaming for rdp because of the performance that solution normally has. In this scenario my windows vm would be sharing power with the headless VM.

Link to comment
5 hours ago, unrateable said:

maybe "Looking Glass" * is the solution you are looking for ? afaiu it will give you bare metal GPU performance and still allows you to have a windowed vm

 

*An extremely low latency KVMFR (KVM FrameRelay) implementation for guests with VGA PCI Passthrough.

 

Sounds promising but iirc I read somewhere that it doesn't work with a consumer Nvidia card

 

Edit: I'm finding it increasingly difficult to figure out how to get Looking Glass to run. I'm a total newbie to VMs in general. Maybe I should've pointed that out.

Edited by Requiescat
Link to comment
3 hours ago, Requiescat said:

 

When you say that I am going to use only one VM at a time, does that mean I can't access my headless VM from within my windows vm?.

Not what I meant -  you can alway access the headless VMs.

 

what, I was trying to say was that once you start a VM then the hardware defined for it is dedicated while the VM is running.    I was suggesting that you might have a desire to have multiple VMs defined to use the GPU, and if you do this then only one of those VMs could be running at any given point in time.    That is a different issue to headless VMs where the key dedicated resource that is likely to constrain them running in parallel is likely to be RAM.

Link to comment

One thing I might have forgotten to add is that I want to essentially use Windows 10 as my host and have my guest Windows 10 run within a window. Looking glass allows this but only with Linux as the host OS. Knowing that unRaid is Linux based, would I be able to run looking glass on unRaid and pass the client window to one of my Windows 10 VMs?

Link to comment

"pass the client window to one of my Windows 10 VMs" 

 

what I believe actually happens with looking glas is that it runs on the host (linux(maybe  also unraid) and then the client VM output (with almost no latency) is passed (via direct framebuffer read out) to a window on the host

 

 

Link to comment
17 minutes ago, unrateable said:

"pass the client window to one of my Windows 10 VMs" 

 

what I believe actually happens with looking glas is that it runs on the host (linux(maybe  also unraid) and then the client VM output (with almost no latency) is passed (via direct framebuffer read out) to a window on the host

 

 

 

Yes, precisely. My whole purpose of this project was the retain Windows 10 as a Host (Or at the very least a VM) and to have a(nother) Windows VM with PCI passthrough. I've come to realize that the only way I can have Windows run a Windows VM would be to use Windows Server 2016 as a host. This isn't really ideal, for a lot of reasons. 

 

I might be able to just run my current bare-metal Windows 10 install in unRaid as a VM and leave it at that, as that might serve the purpose I was looking for in running Windows in a VM. What, if any, are the limitations that running in a VM 100% of the time bring about?

Link to comment

I still don't quite get what you're trying to do. Why can't you have a Windows 10 VM with GPU passthrough and also a second Windows 10 VM that you access via VNC. The second VM would show in a window like what you're wanting. Am I missing something?

Link to comment
On 5/4/2018 at 2:49 AM, NeoDude said:

I still don't quite get what you're trying to do. Why can't you have a Windows 10 VM with GPU passthrough and also a second Windows 10 VM that you access via VNC. The second VM would show in a window like what you're wanting. Am I missing something?

 

Two reasons. I want(ed) to keep Windows 10 as my host and also that would require having 2 dedicated GPUs for each VM. I have access to that many but it would defeat the purpose. I ended up just reinstalling Windows 10 and this whole project is pretty much pointless. I did find out that I could've used Hyper V with Windows Server 2016 and a Grid enabled Nvidia card, which I have access to, but that would've required me driving to my office to pickup a P5000.

Link to comment
2 hours ago, unrateable said:

why do you need a windows host if a unraid win vm can give you 98% bare metal perf. ?  whats the purpose of the project ?  just wondering  :)

 

 

 

I needed a windows host with a windows vm because it was the easiest solution. If I had to install a windows vm anyways then I'd just reinstall Windows.

Link to comment
22 hours ago, Requiescat said:

 

Two reasons. I want(ed) to keep Windows 10 as my host and also that would require having 2 dedicated GPUs for each VM. 

 

 

You wouldn't need a GPU for the second VM as you'd be accessing it via VNC.

Edited by NeoDude
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.