Sharing system resources near bare metal perfomance

So I have a consumer grade PC that I made for my two nephews (because I didnt had the money to buy two separate computers with equally strong hardware as the single unit I made for them + I find it slick :stuck_out_tongue: and power consumption + clutter is reduced with one system)

The current hardware specs are as follows:

CPU : Intel i9 9900k delid OCed at 5.3 GHz all cores stable AF :stuck_out_tongue: ( 8 cores 16 threads)

RAM : 32GB (2*16) DDR4 memory 3200 mhz G.Skill RGB cl16

Mobo : Asrock z370 Taichi

GPU : Sapphire RX 5700 xt

Main drive : 1TB Nvme storage Sabrent rocket, 6TB (for steam library etc) WD blue and I can other media if needed.

OS :1 windows 10 pro installation (I can add a second license)

2 montiros, 2 keyboards, 2 USB headsets

Currently, I use a not so well known piece of russian software to share resources called aster (it is not a VM what it does is just some windows magic to allow two different windows accounts to log in simultaniously and redirects traffic of I/O the way you want it to be -to divide e.g 2 keyboards among two users or the graphics card horse power-

For the most part it gets the job done (both users can log in simultaneously on their separate windows account, both can use the keyboard seperately on tasks open separately on their individual monitor - each monitor displays the desktop of each windows user its not set as multi monitor/expand screen -

they can play games separately without issue (at near 50% GPU performance compared to as if only 1 user would play a game) without any keyboard or other I/O conflicts.

But I dont like it because it still runs windows…

Because sometimes there are issues (when windows updates and an update conflicts with aster I need to update aster first, but my nephews dont have that kind of hindsight yet or technical knowledge so I have to fix the problem… doent happen frequently within a year it happened once but still )

Plus I have issues running different steam accounts since steam “sees” its running on the same machine… so I have to sandbox the other user with all limitations that comes with that, incase both want to play a steam game simultaneously some online games because of that reason arent playable for both of them … but non steam games /stand alone ones have no issue.

So I wonder If I could use SR-IOV and install two windows VMs that could use the same GPU for accelerating games

If possible set it in a way that if the 2nd user shuts down his windows vm then the first gets full hardware performance back.

Would that be possible with SR-IOV ?

If not how would you tackle this issue?

It is possible with SR-IOV but that is not supported by your GPU so it won’t work.

Also, NAVI cards suffer from the reset bug so if one of the guest vms reboots the card will be hung until the host system powercycles. But if you’re careful you could just buy a second card and pass that through and then just live with the bug.

Are the games your nephews want to play available under Linux?

I am not being negative regarding your situation specifically. It strikes me a LOT of people go through a lot of trouble setting up a Linux system with vfio, etc, just to run Windows on top of it.

The aster software sounds great, allowing multiple users to share the same hardware, and even the same GPU, without needing to learn the inner workings of the Linux kernel.

1 Like

Yea so far it worked nice (except when windows had a major update and aster wouldnt work with it unless I updated it manually and reset the settings)

but the steam issue makes me want to try and look for a more “sophisticated” solution because e.g although they both have separate steam accounts (lets say steam user 1 and steam user 2) both have a separate license for an online game e.g PUBG

they can not both log into steam with their individual accounts and play PUG simultaneously despite having two different licenses one on each different steam account.

because steam “knows” that both of the client instances run on the same windows OS and thus logs off one player at random…

The only solution that somewhat works is if I sandbox one user’s steam client but again most of the games are not playable (e.g it logs off or refuses to start them) if the other nephew is on steam as well…

But stand alone games work fine even if both users open the game from a single source folder (= I dont have to clone installations) or one can play a standalone game and an other a steam game…

So I thought that in order to solve this I have to run two windows instances as a vm…

But then I need to solve the issue “how to have decent FPS while playing on a windows vm” :stuck_out_tongue:

PS Aster doesnt use linux its just a windows program.

Yea this is partially why I post it here because you guys seem more knowledgeable than other forums I know…

As far as I can understand there is no hardware issue its a driver issue that detects its a Vega or am I wrong?

If not couldnt this just be “bypassed” ?

SR-IOV is still considered an enterprise feature and need enterprise hardware to work correctly especially for GPUs. You will need either nVidia GRID (very expensive licensing) or the Radeon instinct card. Anaway profesional card to run two games at the same time will be very expensive on its own.
The best option will be to buy second card for second VM. In theory as long as you don’t restart the VM with the Radeon you will not have to power cycle the host.

Note that this is not actually SR-IOV. It solves that same problem that SR-IOV does, but in the way Nvidia often solves things, ie with a proprietary, vendor lock-in approach. It is not based on the SR-IOV standard, so it needs both special support on the hypervisor, and special guest drivers. The guest drivers are what they charge for, like $450 per year per user if you want to run any software you want to.

Have you looked into “Multiseat”?
https://wiki.archlinux.org/index.php/xorg_multiseat

I might sound like some evangelist but I think most games run on proton without any problems, and running everything in this configuration doesn’t require any support for VMs from any component, even the CPU.

On linux steam makes some directories under /tmp for its runtime but this can be “fixed” by running the separate desktop systems in containers or chroots with xorg’s socket mounted into them from the host OS.

Also if you really want to use KVM and share the CPU to many users then used quadros / instincts are probably affordable.

Well I bellieve this will run on the same issues as my current sollution using the aster software I mentioned (e.g steam will prohibit both of them loging in their individual steam account on the same machine) . but thanks for the heads up

There is no way steam will know that there is another steam process running on the system with this approach, the isolation is secure enough that some hosting providers allow you to run any code you want in them on shared physical hosts (aka VPS).
I don’t know how much hassle/configuration this approach could take to fit your use case tho.