January 17, 201610 yr Hello everyone, and thanks for taking the time to read this message! Long time unRaid user here, just starting to dabble with kvm and virtualization. My current setup doesn't support vt-d, so I haven't been able to do anything too complex yet, but I was pleasantly surprised at how easy unRaid makes setting up virtual machines! I've done a ton of research but there are still a few questions I haven't found the answers for. I'm looking at a rather large CPU upgrade, to give my server a bit more grunt and maybe consolidate a few machines into one centralized rig. In addition to my server, I've got an aging Mac Mini C2D that is very long in the tooth, a Windows gaming machine sporting an overclocked i5 2500k, and an old Atom-based Acer Revo that I use purely as an Openelec machine. So in my mind, I'll be running at least three guests.. One Windows, one Mac OS X (I've got plenty of Hackintosh experience so I'm confident I can get that running), and one Openelec. As far as hardware, I'm leaning towards the i7 5820k six core Haswell-E, though I haven't completely ruled out the 6700k Skylake. GPUs will be a GTX760 for Windows, Radeon HD5770 for Mac (both harvested from existing machines), and whatever cheap nvidia card I can find for Openelec. Now, I play a lot of games under emulation, specifically Gamecube and Wii games on Dolphin. I'm generally satisfied with Dolphin's performance on my 2500k, overclocked to about 4.3ghz. I'll possibly be overclocking the server a bit as well (conservatively, and with much torture testing beforehand to insure it's 100% stable). Even factoring in 5-10% overhead for running under virtualization, performance increases going from Sandy Bridge to Haswell-E would suggest that I'd be happy with Dolphin's performance in kvm... Am I right to assume as much? Are there ways to prioritize one guest over another? Or to ensure that a guest is running on real cores, not virtual? And my other question involves the behaviour of GPUs that are passed through to a guest. What happens to the GPU when a guest is suspended or saved? When it's resumed again, will the GPU reattach automatically? Is it possible to use the same GPU in multiple guests, for example? Not simultaneously, obviously, but by stopping one then resuming the other. Thanks!
January 17, 201610 yr Hi iphillips! The biggest thing I can recommend at this point is to go Haswell over Skylake. Skylake CPUs tend to have more issues with passing through devices than their haswell counterparts. As far as virtualization overhead, for gaming, this is pretty much a non-issue. Take a look at the blog I posted going over this: http://lime-technology.com/gaming-on-a-nas-you-better-believe-it/ As far as prioritizing guests, you will pin logical CPUs to guest VMs. The best advice is to not overlap your core assignments between multiple running VMs. This will ensure each VM has the best experience. And lastly, with respect to suspend/resume, I don't personally recommend using that in a VM (it can be quirky), but some folks have been and it's worked fine for them. You absolutely can, however, stop one guest and start another using the same GPU. I do that frequently as I toggle between a work VM and gaming VM.
January 17, 201610 yr Author Thanks Jon! That's very helpful.. I'd pretty much settled on Haswell already, though was slightly tempted by Skylake's improved single threaded performance which would help in emulation, but it sounds as though it's going to be the 5820k for certain. As far as pinning logical CPUs goes -- in playing around with things right now, when editing a VM I can select either core 0, core 1, or both. Is this what you're getting at... making sure that I'm not selecting the same cores in multiple VMs? And how can I prevent unRaid from using those cores, so that things aren't slowed up in the VM when, for instance, Sick Beard decides it's time to start doing its thing? Performance of the gaming VM is critical.. Everything else can fight for what's left over.
January 17, 201610 yr Thanks Jon! That's very helpful.. I'd pretty much settled on Haswell already, though was slightly tempted by Skylake's improved single threaded performance which would help in emulation, but it sounds as though it's going to be the 5820k for certain. As far as pinning logical CPUs goes -- in playing around with things right now, when editing a VM I can select either core 0, core 1, or both. Is this what you're getting at... making sure that I'm not selecting the same cores in multiple VMs? And how can I prevent unRaid from using those cores, so that things aren't slowed up in the VM when, for instance, Sick Beard decides it's time to start doing its thing? Performance of the gaming VM is critical.. Everything else can fight for what's left over. You can edit the syslinux configuration under the webgui (main tab > flash > syslinux configuration) Find the line that says "menu default" and a few lines below it, you'll see the word "append." Add isolcpus= followed by the logical CPUs you want to restrict to just the gaming VM after "append". So if you have a quad core hyperthreaded processor, you would do something like append isolcpus=0-5 That will isolate CPUs 0-5 (yes, we start from 0) from host operations.
January 31, 201610 yr Author Jon, thanks a lot for all your advice, both in this particular thread and in the forums in general. I ended up going the 5820k route, and after a few hiccups I've got things running nearly perfectly! I'm sending this message from a Mac OS Yosemite VM that's more or less 100% functional, complete with GPU and Bluetooth passthrough. It's amazing how the addition of kvm has turned unRAID from a useful appliance into the only computing solution I need. I have one (maybe simple?) question, that I've searched for in the forums but can't find an answer to... surprisingly, maybe it's too obvious and I've just missed it. lol.. But how do I pass my shares through to a VM? Is there a way to do this in my VM's xml or am I best to just use SMB or AFP? Oh, another one. When numbering CPUs, I get that mine run from 0-11. Six of those will be physical and six logical.. Do they alternate, 0 physical, 1 logical, 2 physical etc? And what would happen if I were to pass a single logical CPU to a VM? What's the difference between the two from a virtualization standpoint?
Archived
This topic is now archived and is closed to further replies.