Or, I think it should. Here's a brief rundown.
I've been using unRaid as a fileserver for years and years now. Running on a Slackware distribution, newer versions have integrated the KVM Hypervisor, a system for running virtual machines directly on the server. As I had a bunch of hardware that needed upgrading, I was pretty excited about this.. The prospect of running my fileserver, my gaming rig, and an upgrade for my old Mac all on one machine tucked away in the basement was great.
And, for the most part, it is. I'm currently running an i7-5820k overclocked to 4.5ghz on a Gigabyte X99-UD3P motherboard. 32 gigs of DDR4 RAM, a stupidly fast Samsung NVME SSD for virtual machine images, and a GTX760 passed directly to my Windows virtual machine. Good enough for a 7.9 Windows experience index, Cinebench OpenGL framerates comfortably over 100fps, and so on.
Now, before I embarked on this endeavour, I was told to expect about 5% overhead when gaming on a VM. Upgrading from a 2500k to the Haswell-E, I knew I was getting far more than 5% extra IPC with the new processor. Dolphin benchmark finished in around 5:30 at stock speeds, haven't benched since I've thrown an extra ghz at it. I should be pretty good here, right?
Of course, since I'm writing here, I'm obviously not. I'm getting some baffling symptoms, and they're always the same, regardless of most configuration changes. My test game is SMG1, which my 2500k+GTX760 had no trouble with. The game's title screen begins with a quick dip down to 55fps, then back up to 60, where it stays through the player selection screen. Starting a game, fps dip down to 40 or so, then climb back up. If I walk all the way to the left, then turn and come back again, there's a spot where the camera shifts and a sun/galaxy/whatever becomes visible, complete with some light ray effects. Here, fps drop to 45 and stay there as long as I stand there.
Now, you're saying, "oh well your system just can't handle it". Yeah, well. As I'm sitting there at 45fps, Dolphin is using less than 40% of my CPU. The two individual cores that Dolphin is using are sitting at around 60%. GPU is at 45%. GPU bus load at 22%. I've got so much headroom left, why isn't Dolphin using it? Here's a screenshot of what I'm looking at. FPS bouncing between 45-48 as I snapped this.
Dolphin settings are pretty much standard, except I have to use render to main window or the game is completely unplayable. Rendering at standard resolution, no upscaling, no vsync, no funny stuff. DX11 and OpenGL act the same way. DX12 in a Windows 10 VM is slightly better but still acts the same, slowdowns in the same spots, etc.
I've got people over at the KVM forum discussing this as well over here, and come up with ideas that have helped other people with similar issues, but nothing has helped me, so I thought I'd ask around here.
Specific things about my setup that I thought would cause issues but I'm close to ruling out:
My apologies for the lengthy post, but I want to be thorough here. I'd appreciate any help anyone could provide.. and if there's any other information at all about my setup that I'm forgetting, I'd be happy to provide it if needed.
Thanks in advance!
I've been using unRaid as a fileserver for years and years now. Running on a Slackware distribution, newer versions have integrated the KVM Hypervisor, a system for running virtual machines directly on the server. As I had a bunch of hardware that needed upgrading, I was pretty excited about this.. The prospect of running my fileserver, my gaming rig, and an upgrade for my old Mac all on one machine tucked away in the basement was great.
And, for the most part, it is. I'm currently running an i7-5820k overclocked to 4.5ghz on a Gigabyte X99-UD3P motherboard. 32 gigs of DDR4 RAM, a stupidly fast Samsung NVME SSD for virtual machine images, and a GTX760 passed directly to my Windows virtual machine. Good enough for a 7.9 Windows experience index, Cinebench OpenGL framerates comfortably over 100fps, and so on.
Now, before I embarked on this endeavour, I was told to expect about 5% overhead when gaming on a VM. Upgrading from a 2500k to the Haswell-E, I knew I was getting far more than 5% extra IPC with the new processor. Dolphin benchmark finished in around 5:30 at stock speeds, haven't benched since I've thrown an extra ghz at it. I should be pretty good here, right?
Of course, since I'm writing here, I'm obviously not. I'm getting some baffling symptoms, and they're always the same, regardless of most configuration changes. My test game is SMG1, which my 2500k+GTX760 had no trouble with. The game's title screen begins with a quick dip down to 55fps, then back up to 60, where it stays through the player selection screen. Starting a game, fps dip down to 40 or so, then climb back up. If I walk all the way to the left, then turn and come back again, there's a spot where the camera shifts and a sun/galaxy/whatever becomes visible, complete with some light ray effects. Here, fps drop to 45 and stay there as long as I stand there.
Now, you're saying, "oh well your system just can't handle it". Yeah, well. As I'm sitting there at 45fps, Dolphin is using less than 40% of my CPU. The two individual cores that Dolphin is using are sitting at around 60%. GPU is at 45%. GPU bus load at 22%. I've got so much headroom left, why isn't Dolphin using it? Here's a screenshot of what I'm looking at. FPS bouncing between 45-48 as I snapped this.
Dolphin settings are pretty much standard, except I have to use render to main window or the game is completely unplayable. Rendering at standard resolution, no upscaling, no vsync, no funny stuff. DX11 and OpenGL act the same way. DX12 in a Windows 10 VM is slightly better but still acts the same, slowdowns in the same spots, etc.
I've got people over at the KVM forum discussing this as well over here, and come up with ideas that have helped other people with similar issues, but nothing has helped me, so I thought I'd ask around here.
Specific things about my setup that I thought would cause issues but I'm close to ruling out:
- Some of the virtual IO drivers I need to use increase DPC latency a bit. However disabling them doesn't improve things.
- 5820k doesn't have quite enough PCIe lanes, so my GPUs run at 8x instead of 16x. Bus load at 22% would suggest this isn't the problem, though. Especially because running at 3x resolution and 1080p doesn't make things worse.
- CPU isn't completely exposed to the host OS. There's no instruction translation or emulation, but Windows doesn't see all the cores -- just the cores I expose to it. As a result, I can keep other VMs or the host itself from interfering with Windows at all. However, Windows doesn't know things like bus speed, CPU speed, etc. CPU-Z reports my bus as being 1000mhz, and based on processor load CPU speed will be reported as 1, 2, or 3ghz. Could this possibly be throwing Dolphin off?
My apologies for the lengthy post, but I want to be thorough here. I'd appreciate any help anyone could provide.. and if there's any other information at all about my setup that I'm forgetting, I'd be happy to provide it if needed.
Thanks in advance!