KVM Passthrough - poor performance in particular games?

I am currently in the testing phases of my KVM passthrough setup on my new Ryzen build:

Ryzen 1700X, R9 390 passthrough to Win 10 guest running off Ubuntu 18.04 (4.15 Kernel)

I want to note that I am currently not running an Ideal setup, which is both Host and Guest are running off the same SSD, but even with this setup nearly all the games I tested so far had basically the same performance as bare metal with the exception of one. The game in question is Dragon’s Dogma Dark Arisen which runs pretty poorly with huge frame drops. Does anyone have experience with this game in a VM passthough environment?

Strange enough, I had the same experience with this game on my last build, a FX8350 with the same R9 390 passthrough to Guest. The game of course runs without issue on bare metal.

Are there just games that don’t run properly in this environment?

Does it use Denovo DRM? If so, that is EXTREMELY CPU intensive. Reserving less cores will give less resources for the DRM to actually work. This is where Threadripper might make up the difference specifically for those CPU hungry DRM driven games.

Honestly I am not sure if it does. The guest has 8 cores with 8GB RAM allocated to it. The CPU usage did not look to be that intense at least when viewed from the Host.

As a comparison the newest game I have is Far Cry 5 which uses DRM I think? Tested it on Ultra settings on the Guest and it plays perfectly, around the 50s FPS.

Certain games run in virtualization will operate at less than optimal performance inside of KVM no matter what the settings are adjusted to. It’s a matter of “give and take” in those regards. The same as it would be in using WINE for example in regards to certain applications. The dependency being what is optimized to operate better within the given environment.

Dark Arisen does run decent under Wine. Its a DX9 game. So no vulkan translation layer until VK9.

If only particular games has this strange behavior, to determine further solutions and/or options you/we need some metrics to go along with it. Like IO on Disc, RAM Usage, and the holy trifecta: GBL_SYSCALL, SYSCALL, and PROCSYSCALL

But my main suspicion, to be honest, is, that the game does some sort of action that isn’t handled very well by the KVM, so maybe a system call-thingy or equivalent.

I have to admit tho, that I have no clue how to get a good measure of System calls for a game in a KVM guest tbh.


I looked it up and it seems that you can strace the qemu part of KVM and maybe you see something there

Will look into this as I have never dealt with system calls before. It’s not a deal breaker for me though as it was just something I noticed that persisted from my last machine and was curious to know if anyone shared the same experience.

I am awaiting some more parts for my build such as a separate HDD for the guest so it’s not 100% finishes. I decided that I would hold off on troubleshooting until I completely finish my build, as this could end with me chasing my tail.