Linux gaming VM issues (part 5 of Debian as type 1 hypervisor)

03 Oct 2020

So I have been running a Linux virtual machine as my main OS for a while. Recently I changed things a bit, moved my Linux VM over to the big GPU (RTX2060) and enlarged the /home drive so I could install and play games directly under Linux. I’m still using Sketchup on Windows, can’t find a decent replacement yet.

Anyway gaming does work, but far from perfect. I mostly play World of Warcraft, very casually (that is solo play with some LFD/LFR/BG). The issue I have is when I open the bags or map, everything locks up for about 1 second the FPS drops to about 15-20 and then rises again. Even when I am running without the above issues my FPS is still ~50ish lower than when I am running WoW on a Bare metal Debian install.

None of those issues appear when I am playing in a Windows 10 VM.

Optimizations

So lots of negative talks, I really do like running my Main OS as a virtual machine. So I have tried a lot of optimizations. But I can’t really find anything on optimizing a Linux VM for gamin when I’m googling. Every guide I find expects me to game on a Windows VM.

So what optimizations have I tested

CPU Pinning

I have isolated all cores/threads except the first Core (2 threads) for the Host OS. But I can’t say I have noticed any difference.

Huge pages

I have dedicated 8Gb of RAM (I have only 16Gb) for my Debian VM. The Host OS will not use this part of the memory. But I don’t see any difference at all, I guess this is because I run the Host as a type 1 hypervisor. Doing nothing else then running VM’s the RAM is not used much by the Host OS anyway.

Dedicated SSD

I dedicated an SSD for my virtial machine instead of running Qcow2 images. I did not use passthrough though, don’t have enough SATA controllers or NVME drives to spare separate one of them from the Host OS.

This is what I did to dedicate my 120Gb SSD to a virtual machine

<domain ...>
  ...
  <devices>
    <disk type='block' device='disk'>
      <driver name='qemu' type='raw'/>
      <source dev='/dev/sda'/>
      <target dev='sda' bus='scsi'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    ...
  </devices>
</domain>

This gives direct access to that SSD, after I installed Debian on that virtual machine I could reboot my Host and run that same Debian install “Bare metal”. Running the same Debian install as I am running in a VM, but no “Bare metal” gives me about 40-50 more FPS and no freeze what so ever when opening map/bags.

Anyway, this did not give any boost in performance compared to Qcow2.

Different Linux distros

Because it was working good enough on my Windows 10 VM, I thought it maybe was some issues with Debian.

Ubuntu Mate VM

My first choice was to run Ubuntu Mate. I did not know what I was thinking though, Ubuntu and Debian is almost the same. Anyway install went flawless, no issues with Nvidia drivers or installing Lutris + World of Warcraft.

When WoW finnally was installed and ready to run, the same issues was still there.

FreeBSD

I do like FreeBSD, mostly because it is not only a kernel. It is the entire OS around it well packed. And the best part is that all packages I install will be placed in /usr/local and not mixed up with the Base OS related packages in /usr is in my opinion great.

I have no issues when installing Nvidia drivers and configure Mate the way I like it on FreeBSD. But then, when I get to the wine part the issues starts. The wine port on FreeBSD is either 32bit or 64bit, you can not easily install both at the same time. By doing it this way you have to choose what to run, either 32bit apps or 64bit apps.

Whats the problem then? Well first I successfully installed and started Battle.net, but then when I was going to install WoW it failed becase WoW needs 64bit and 32bit wine can’t run 64bit apps.

I have been reading on forums that it is possible to hack around and get both 64 and 32 bit wine installed at the same time. But I failed to do so, I managed to break my 32bit wine install so I no longer could start Battle.net. So I gave up on FreeBSD gaming for now.

Manjaro VM

I’m to lazy to go through the installation for Arch Linux, so I tried Manjaro instead.

I began downloading Manjaro ISO with Mate desktop (because I like it). First of, the ISO is huge because it has all the packages. Both Debian and Ubuntu Mate has smaller ISO and downloads latest packages when installing.

So because it installs from ISO the packages is no longer the latest. Thus I could not install the Nvidia drivers without upgrading all the packages. And upgrading all the packages took forever. I don’t know why it took so long the download speed was good, maxed out my 100Mbit download. The issues with Manjaro did not stop there, getting the Nvidia drivers was not as easy as it is on Debian (Ubuntu Mate download them during install if you check third party packages) even FreeBSD was less issues for me.

Anway it wasn’t that hard, just annoying compared to Ubuntu and Debian. Moving forward with Lutris and World of Warcraft was similar experience.

So the result then, I thougth the gaming performance would be better on bleeding edge distro like Manjaro. Way newer kernel, more optimized and newer drivers I thougth. But I was wrong, sure I did get WoW to run compared to FreeBSD, but it did not run well. WoW wasn’t playable, I did get around 50ish FPS using an RTX2060 and medium settings at 1920x1080p. Open map/bag freeze issue was still there and hit me a lot harder than on Debian and Ubuntu.

I was suprised to see a popular distro as Manjaro fail so hard compared to Debian and Ubuntu. I’m sure you can tweak som parts here and there and get the same results and maybe even better than Debian/Ubuntu, but I’m way to lazy these days to do that.