Very high CPU usage in Bazzite VM only when running certain games

Hey all,

I set up a VM in my TrueNAS Scale system which runs Bazzite linux in a VM. The server is set up with an AMD Ryzen 7 5700G CPU, 64 GB of DDR4 3200MhZ, and Radeon RX 6950XT GPU. The GPU is passed through over PCIE, and one USB controller is also passed over PCIE to allow me to connect game controllers. I did all of this because my server already lives behind my TV, and I thought it would be cool to use the machine that’s already running (and rarely fully utilized) to play games on my TV.

The VM receives 1 CPU, 5 cores, 10 threads of the host model, and a maximum of 32 Gb of RAM.

This setup mostly works great, but I’m having issues with certain demanding games. If I run something light like Hollow Knight, it runs great. If I run a demanding game like Lego Star Wars: Skywalker Saga, it also runs great. Even at 4k maxed out. Elden Ring, however, runs exceptionally poorly. Shortly after the title screen hits, my CPU utilization goes up to 80-100% and the game slows down to .5-2.0 fps on the title screen. It stays there even once loaded in. Horizon Zero Dawn and Metro: Exodus both exhibit the same behavior. I’ve manually adjusted graphics settings on these games. I’ve limited the frame rate, changed the graphics API, and verified the game files. None of these attempts changed the behavior.

At first I thought it was a game engine issue since only some intense 3D games exhibit the issue, but I’ve had very little luck narrowing that down, and the games that are affected don’t seem to share the same engine or anything like that.

I’ve also tried to switch from host model to host passthrough for the CPU, and have also tried emulating other models. I’ve added additional cores and threads. None of this has changed the behavior.

I’ve read that a certain qemu handler service can cause excessive cpu utilization in certain scenarios, but I’m no longer able to find the post where I read that. Is anyone familiar with this phenomenon?

If anyone has any suggestions on where to look to narrow this down, I would appreciate it very much.

If I’ve posted this in the wrong spot, please let me know and I will correct it ASAP.

Thanks everyone.

This is a very clear and well-explained post, and it’s great how you shared all the details of your system and the steps you’ve already tried. It really helps others understand the problem better. Issues like this can be tricky in VMs, especially with heavy games, so I hope someone here can point you in the right direction. Reading posts like this also helps beginners learn more, just like when people discuss gaming topics like Delta Roblox in a simple way. Hope you find a solution soon!

You’re running the games through 2 virtualization stacks. The proton layer and the vm layer which will cause you issues. Games are very demanding and generally want direct hardware access. If I had to guess, your bottleneck is going to be the VM instances itself as Proton is lightweight in comparison, and the bottleneck will most likely be the storage. Games require high IOPS and suffer greatly as you add more layers between it and the storage. You might want to try passing through an iSCSI or NVMe-oF zvol to the VM to see if it fixes your issue.

The storage queues will peg your cpu at 100% as well if it is waiting for data to process. Hope it solves your issue.