1 PC, Concurrent Multiusers?

Previously, it was cheaper to just buy a few modestly spec’ed PCs instead of getting a high core-count PC and setting up multiusers environment.

But now with enormous multicore CPUs being affordable, we thought it makes more sense than ever for a single PC to serve multiple users at the same time. We can plug in multiple monitors, keyboards and mice and just use.

Me and my fellow teammates think this is the future, and we wanted to make this concept easily accessible to everyone.


I want to hear what you all think of this.

While there are many guides on how to set this up, almost all of those are overwhelmingly complicated - matching hardware spec and using advanced Linux techniques. As a person who was interested in this tech years before 6 cores, 8 cores CPUs for mainline was a thing, I can comfortably say that UX was/is horrible. We had to use multiple graphics cards since QEMU’s integrated graphics stack is not performant, and USB devices was a nightmare, especially when used headlessly.

We wanted to avoid all of these major issues and allow non-techies to use this advanced tech as well.

People can just avoid using these type of solutions and get cheap alternatives such as Raspberry Pi and Chromebook. But still, there are nothing like running a full and proper desktop OS such as Windows, and that’s what we’re targeting at.
Using multi-session RDP is also not comparable, imo, as that still needs some kind of a client device to remotely login.

I know many people would be wondering how gaming will be handled. While the majority of people here would be gamers, we’re currently targeting value over performance - people who’re fine with IGP-level performance.
This mean that we want to enable multiple OSes to use a single graphics card. This needs a virtualized graphics device to be passed to the OS, which in term, means worsened graphics performance. We have been able to achieve 1080p60-ish performance using a single RX460 with 4 concurrent users, while the stock graphics driver in QEMU - QXL doesn’t even come close.
We want to wait until SR-IOV powered graphics cards to be a thing before experimenting with gaming.

I’m sorry if this sounds way too much like an advertisement, but I’m genuinely curious.

What do you think? We think this is the future. If there was a simple and elegant solution to this concept, we think the entire world can save some serious amount of resources(hardware, power, wastes, etc).

2 Likes

How are you getting one GPU to push to multiple windows installations?

Have you tested this solution with Linux guests?


I wouldn’t say this is the future exactly (I’m hesitant to say anything is the future), but it’s awesome technology. I’m definitely interested in it and would love to get some more insight into the solution.

1 Like

Unfortunately, we don’t have anything “magic” here.

It’s the typical you would expect - virtualized drivers on top of Linux host.

Since QXL is pretty much the only solution for Windows guests, we used that.
But with default QEMU’s console / SPICE and QXL’s limitation, the performance is just embarrassing.

We took our efforts into improving QXL and QEMU’s console viewer,
since writing a 2D graphics driver from scratch is not within our time budget.

We didn’t test with Linux guest(yet), but I expect it to be much better than Windows.
Testing virgl on Linux would also be interesting.

2 Likes

This technology is a great concept. Ever since I saw Linus do his 7 gamers, 1 CPU video the concept has impressed me. It impressed me so much, I set up my own headless virtualization server at home using Unraid and a steam box sitting on my TVs so my kids can game anywhere in the house.

While most office environments seem to be going the way of laptops instead of dedicated desktops, there are a few who use virtualization environments instead. I have personally seen were the typical performance of these solutions become quickly overwhelmed when a user needs to use a powerful piece of software like Adobe CC in their daily work. Typical office laptops quickly overheat and chug. Remote VM performance is frustrating and image quality can suffer if the network becomes saturated.

Instead, it might make sense, in today’s open office environments, to have a central PC that can handle roaming profiles and say 4 users each. This would only be viable if the user profiles could be quickly moved or accessed from any such station a user visits in the office or if they travel from office to office.

Also, I have been really impressed with the graphics performance of the Steam Link boxes for gaming. If I can game at a solid 60FPS, 1080p over a 100Mb link, that puts just about every remote desktop solution to shame. If you could pair this with such boxes the PC’s could be safely locked away in a server closet and the end users would never know the difference.

Thank you for this. Are you sharing these changes upstream?

I was mostly hoping that it works. Since I didn’t know you had improved QXL, I was concerned about Linux drivers. Might be worth testing on Fedora or something.

1 Like

SR-IOV will be the thing that makes this possible. SR-IOV allows 1 GPU to act as multiple GPUs to a hypervisor.

Apparently AMD pushed SR-IOV support on their Linux Vulkan driver before christmass.

https://www.phoronix.com/scan.php?page=article&item=amdvlk-radeon-vulkan&num=1

Last line of that article.

I still have no idea about what actual GPUs will support this, and what kind of hoops you have to jump through to make it work.
But I want that so much for my own system.

1 Like