(angle grinder screeching)
- Whoa.
Hey, no, that's not how you do it, geez.
I don't think NZXT sponsored this video
so we could chop up their hardware.
They sponsored it so we can show you guys
how to take a single gaming rig, like this build PC,
and split it into two or even more
virtual gaming machines.
So you and a couple of buds can pool together
and share a single, working GPU,
even if not everyone can get their hands
on their own graphics card.
Super cool, right?
Let's show you how it works.
(upbeat theme music)
Splitting a GPU used to be a huge challenge
for a number of reasons.
First and foremost being that NVIDIA didn't want you to.
You see, NVIDIA locked down the ability
to virtualize their consumer GPUs,
taking one physical card and dividing it up
into multiple virtual ones.
And for years, they have only allowed this functionality
on their workstation and data center cards,
like the Quadro, Tesla, and Grid Series.
These artificial software limitations
have allowed NVIDIA to price those other cards
vastly higher than their GeForce options.
And remember how I said there were a number of reasons?
There weren't.
NVIDIA kept you from sharing your GPU resources
because they wanted to charge more for the capabilities.
Shocker, I know.
But we've got a trick up our sleeves today.
Everyone's favorite, Windows, specifically Windows 11
and some fancy tech called paravirtualization.
Paravirtualization differs from standard virtualization
by communicating directly with the hypervisor using drivers
rather than through hardware level calls.
So while spinning up a virtual machine or a VM,
setting up the hardware and software,
and actually getting to a workable VM
used to take a lot of skill and time,
the keyword there is "used to."
Thanks to a cute little script aptly named Easy-GPU-P,
the P is for partitioning,
which was written by one of Parsec's developers.
Almost all of the work of setting up a Windows VM
is done for you,
it divvies up your hardware, installs your OS and drivers,
and of course, installs Parsec.
But that's not just because
they wanna shield their software,
it's kind of the secret sauce
that makes this whole thing work.
But before we get to that,
we need to talk about the limitations of the setup
with the most important one being hardware outputs.
While the virtual machines we create
are able to borrow our GPU's processing power
and it's onboard memory,
they cannot borrow the physical display outputs.
Think of it kind of like this,
we can slice our GPU up this way,
where one of the virtual machines
ends up with all of the outputs,
but we can't slice it up this way
where each one gets its own output.
That is where Parsec's Cloud Gaming software
comes into play.
It's able to snag an encoded video feed
from each of our VMs,
and then stream it to a different device,
like a low-powered PC, a MacBook, or even a phone.
Before we can even think about splitting a GPU up though,
we're gonna need to get one.
Fortunately, our friends over at NZXT Build
sent over a sweet, pre-built system
that is absolutely perfect for this kind of use case.
It's got a Ryzen 9 5950X 16 Core processor
and a near top-of-the-line RTX 3080TI.
Of course, you can check out this rig
at the link down below.
But, you don't need specs like this to be able to do this.
We tested a handful of modern GPUs
with really amazing results, though your mileage may vary.
And one thing to note is that you must split your GPU's
video memory evenly between each VM.
So if your GPU is light on VRAM,
you may have issues gaming on more than a couple of VMs.
Since we're starting with two VMs and one of these 3080 TIs,
that's gonna give us six gigs each.
Now, regular system memory
can be divided up any way you like,
just like with regular VMs,
but since we've got a total of 32 gigs of RAM,
and most modern games are asking for eight gigs or more,
we're gonna divide them up with eight gigs per VM.
Now, we'll get into more details later,
but for now, we've got Hyper-V Manager
open on our monitor.
(dark atmospheric music)
Very funny, buy a desk pad, lttstore.com.
So Hyper-V Manager open on our monitor,
and we're gonna go ahead and fire up
a couple of our VMs here.
We've got GPU-P-1 and GPU-P-2,
for player one and player two.
Each of these was configured
with four of our 16 Ryzen Cores, and as I mentioned before,
eight gigs of RAM.
Fortunately, the Parsec scripts
that we linked in the description
did all the heavy lifting
leaving us with just games to install.
- [Colin] Here we are, yayyyy.
- But before we fire them up,
we've got a couple of housekeeping items to take care of.
First and foremost is the fact
that these windows are limited to 1080p resolution,
which doesn't sound like a huge problem,
until you remember that the 3080 Ti in this machine
is capable of way higher resolutions than that.
That is where cheap, little display port
or HDMI Dummy Plugs, like these ones, come in.
Even though we can't actually use
the physical ports on our GPU to plug into a monitor
for each VM, if you plug these in,
they can trick the GPU into thinking
that a monitor is connected,
which actually unlocks the resolution selector in Windows.
So we go ahead and set that to 4K on each of our VMs,
and it's time to see how a 3080 Ti
handles two concurrent 4K gaming sessions.
It's pretty cool, right?
- If you wanna mirror it to both one and two,
then we can get a display here so people can see it?
- Sure, I can do that.
First, I'm gonna set it to 3840 by 2160.
Duplicate is not an option.
- No, interesting.
- Well, I guess you won't be peeking
into what we're doing from over there.
Let's for the first time in my life
run two games at once on the same GPU
on two separate machines.
Colin, you can be my Counter-Strike friend.
- I am only at 1080p.
- Right, right, right, right, right.
We'll get you the real performance numbers later.
The developer ran into a bit of a weird issue
where for whatever reason, that one VM is not able to do 4K,
but he's replicated it on his side, he's working on it.
Okay, this is not the most amazing performance ever,
but I'm at 60fps.
Oh, it's going, David.
It be like, "Whoa, dog, what is this?
Two games running at once."
Oh, someone's spawn camping us.
- [Colin] Yeah, they're all spawn camping us.
- [Linus] How rude.
- [Colin] Come on, it's Counter-Strike,
what did you expect?
- [Linus] Yeah, that's fair.
I'm going back to 1080p.
Okay, we got a match to win here, Colin.
- Sure, fair.
I mean, I'm getting 200fps.
- Yeah, I want more like that.
My game is dead.
I'm gone.
Steam is closed.
- Why did you do this?
And it's beautiful here, terrible there.
- [Linus] Oh yeah, don't look at that and think
that that is representative
of the gaming experience of the gaming experience at all.
Hey still, I got two kills, okay?
- Okay, but we're playing video games.
- We're playing video games.
- On one GPU and one CPU.
- And we're both getting 150 to 200fps.
- Yes.
- David, does this blow your mind?
- [David] Yeah.
- [Colin] Yeah, he just shot me direct,
straight through the door.
- [David] You can shoot through the door.
- [Colin] Yeah, but he could see,
he was tracking me, I swear.
Hex.
- Hex.
Question for you then.
In total, we're getting about 400fps
between the two of us on that GPU.
So running a single instance at 1080p,
what were we getting?
- I only ran at a 4K. - Oh, balls.
- Well, but at 4K, we're getting 462fps.
- So theoretically, assuming that we are still CPU limited?
I have no idea.
I just don't even know what to expect from this.
When you split the GPU across multiple workloads
in a game like CS:GO, where you're typically CPU
rather than GPU bound,
could you potentially end up with more fps-es
or less fps-es?
It looks like a little bit less right now,
given that we're running 1080p,
but what if we were to split it more ways?
Would it scale better or worse?
- We can find out.
- I guess we can.
As impressive as it is that this is running at all,
I'm sure what you really wanna know
is objectively speaking, how well is it running, right?
So right now, we're getting anywhere from 350 to 400fps
shared between the two of us.
So how does that compare to running the same card
but just in a single instance on bare metal?
Even though we only have one of these running
at 4K right now, we've actually got some numbers for you.
So CS:GO on a single 3080 Ti
managed about 460fps average,
then with our 50% VMs, so this is 1/2 of a 3080 Ti,
we managed 175fps.
So it looks like we actually do get less
than 1/2 of the performance, the scaling is not perfect,
which is, I have to admit, not quite what I expected,
CS:GO being a mostly CPU-bound game,
I would have thought would allow our GPU
to stretch its legs more.
But who knows?
Maybe we're not dividing it up enough.
We've got more demos, right?
- We do got more demos.
- All right, let's try something new.
Yeah, I'm averaging 50fps
even in fairly busy parts of town,
40, it dipped down to 40.
My 99th percentile's is 25,
that is absolutely playable in a game like this.
So to be clear, Anno 1800,
not the world's most demanding game,
but it's also not the world's easiest to run game.
This is all very reasonable, 80 degree hotspot.
- [Colin] It's fine, yeah.
- This thing's not working that hard actually.
Do dual GS:GOs is, for whatever reason,
heavier than dual Annos.
Is that because the CPU is scaling really well
in the GS:GO, and making it...?
Oh, hold on, I gotta win lunch.
So GPU usage is right up around 70, 75%.
- [Colin] I'm surprised it's not just pinning it.
I wonder if the host VM is using some of it.
- Could be.
Clearly it works,
and all things considered,
it was actually pretty easy to set up.
Colin here who set up and wrote this video
has literally never touched Hyper-V,
yet he was able to get this up and running
in a couple of hours.
So what does it take to do it?
Well, apart from what we've already mentioned,
you're gonna need a Pro or Enterprise version
of Windows 10 or Windows 11,
we would suggest the latter as it is a bit easier.
You start by downloading the files
from the Easy-GPU-P GitHub
and extracting them to your desktop,
then you grab the latest drivers for your GPU
from NVIDIA's website directly.
Now comes the most important step.
You need to enable virtualization
both in the BIOS and in Windows.
Now on most systems, you'll find the BIOS settings
under CPU settings,
and they'll either be called SVM mode on AMD,
or Intel VT-x on, well, Intel.
Save and reset, and once you're back into Windows,
hit the Windows key
and type "Turn Windows features on or off."
Scroll down to Hyper-V, and enable everything inside
and reboot your PC.
While it's booting by the way,
why not hit the subscribe button?
We've got a lot more cool Windows 11 content planned,
like running it on a phone.
Ooh.
Now that our operating system is set up properly,
we can run the Easy-GPU-P scripts.
Because it's possible that these steps will change,
I'm gonna refer you to the GitHub page
to find the latest information.
And if you get stuck, the linustechtips.com forum
is a great resource.
Once you configure your script,
you can rerun it over and over to keep making VMs,
just make sure to change the VM name
each time before creating another.
And remember that NVIDIA limits
the number of concurrent end banking coding streams to three
on their consumer graphics cards
meaning the practical player limit is four:
one local, and three remote ones.
If you did everything right, in Hyper-V Manager,
you should see your new VMs just like we saw earlier.
You double click the VM to boot it up,
and then you can install your games and configure Parsec.
Now all that's left is for us to go ahead
and make three VMs, each with four CPU cores,
25% of our GPU, and eight gigs of RAM
to see if we can run four gamers
off this single CPU and GPU.
Which one is Alt? Is it command is Alt?
- No, command is wind key. - Oh.
- It's gotta be an option.
- Okay, I think we might just have to lose the MacBook,
it was a funny meme,
but we're just having some issues.
- Hey, MacBook works.
- Oh, heck yeah.
I got my LTT crew,
it's Linus and the LinusTechTips's.
- Okay, let's queue up. - And Mac address.
You know when it's like you're the little brother
and he's who's holding the controller
but not actually doing anything while you play?
This is what I feel like now.
- I think we're doing it, guys.
- Oh, oh, I'm playing.
Oh, I got one.
- [Linus] Wait, I killed LTT Benchmark Tertiary,
we're not all on the same team?
- [Colin] No.
- So we're actually getting a grand total
of around 300 frames-per-second,
does that sound about right to y'all?
- Jeff's experience being on native is clearly better.
- Yeah, that looks a little more responsive.
- 'Cause I'm getting a lot of chop on my end.
- Mine look like that?
- [Linus] Wow.
- Oh, let's go.
- [Linus] Yeah, with only a 1/4 of the GPU,
he's still getting 150, 180fps.
GPU's definitely working harder than it was
with Anno right now though.
You know what though?
I actually don't think it's working as hard as it was
with two instances of CS:GO.
Can you all tab for a sec?
Whoa, GPU crawl mode is 98%.
I lied, I think the fan's just running heavier.
Okay, go, go, go.
Remember guys, not only is it running
four instances of the game,
but it's also running four instances
of NVIDIA's hardware encoding.
Oh, there's a guy there.
(Linus laughing)
And theoretically, that hardware encoder
is sort of separate hardware,
but in practice, it does put additional strain on the GPU,
it does produce additional heat when it's operating.
And so it can affect your overall performance.
- [Jonathan] So how do I change guns?
- [Colin] So press B to buy guns.
- [Linus] Oh yeah.
- [Jonathan] What? To buy?
- [Linus] Yeah. - [Colin] Yeah.
- [Linus] You have to buy guns.
- [Colin] I mean, logically.
- Imagine what this would be capable of
if NVIDIA allowed us to access them locally
rather than remotely.
You could have a single gaming machine
in the middle of a big table
and just have four separate sets of peripherals
hooked up to it,
and all be playing a game off the same hard ware.
That's freaking incredible.
But the 3080 Ti is pretty expensive.
What if we tried it with something more reasonable,
like a 2070 Super?
We did, and as long as you're only gonna play
fairly light games, things like Rocket League,
it's actually surprisingly usable as well.
Though there are some things to note about this setup
if you're going to try it for real.
Hardware that crazy, top of the line,
is not strictly necessary, but it definitely helps.
And perhaps even more important is your network speed.
Parsec suggests having an upload speed
of over 50 megabit per second
if you plan on hosting two or more VMs over the internet.
And even if you're running locally,
you will need a directly wired connection.
Wi-Fi or mesh networking
might have the throughput for modern applications
like 4K Netflix, or what have you,
but their latency is not nearly good enough for this.
You may also encounter some black screens
with Windows security prompts and stuff like that,
so having Parsec access to the host as well as the VMs
is a good idea,
so you'll be able to squash those little interruptions.
Another thing is you should definitely temper
your performance expectations.
As we found, 400fps on bare metal
absolutely does not result in four times
100fps on four VMs.
You'll also need a Windows license for each of your VMs.
Definitely don't just spin up a new one
whenever your license expires.
Another thing to discuss is the cost.
You're absolutely saving some money using a single machine
to run four instances instead of four separate machines.
You only need once case, you only need one power supply,
you only even really need one SSD.
But it should be noted
that you're going to end up shelling out
for higher quality hardware
versus if you only had to run a single client workload.
Say take the SSD for example,
if you were to use a basic, basic QLC SSD
with no DRAM cache,
you could get away with that for a single gaming machine.
You try to have four clients working off of that thing
at the same time,
you're gonna have and extremely bad time,
and the same goes for a power supply.
Nevermind just the wattage that it's rated to output,
but let's talk about the duty cycle.
Manufacturers, when they warranty these things,
when they decide about how long they expect them to last,
they have an expectation for how many hours a year
you're probably gonna have it running,
and how hard it's gonna be hit.
As we discovered with all four of our gamers
hitting that 3080 Ti, it is pinned at 100% usage.
These and other components like your motherboard
or a mini core CPU are things that you would wanna consider
when you're configuring your system
with someone like, of course, NZXT
who is the sponsor of this video.
So in conclusion,
this is a really cool and novel use of Parsec.
It's normally used to have a friend remote in
to play a multiplayer game,
or to stream games from your home PC
to another of your own devices,
kind of like having your own private cloud gaming service.
But here, you're turning it into
all of you and your friends' private cloud gaming service,
which is a seriously legitimate possible use case for it,
especially in these troubled times.
Now, in addition to performance drops though,
you'll experience additional connection latency,
about a frame on a local network,
and a couple of frames on a remote one,
and you'll be giving up some image quality.
Even a high bit rate HEVC stream is going to have
more blocking and artifacts
than a hardwired display port connection,
especially if you crank your frame rate past 60.
But I'm super excited for the future
of this kind of technology,
and I think it's an awesome little project
that they created over there,
so go give them some love, all right?
If you enjoyed this video,
go check out "Six Workstations, One CPU,"
or "Seven Gamers, One CPU"
for an example of doing this with actually,
very little performance drawback
because we loaded up the system with GPUs
back when you could actually find them.
Hey, who just killed me?
Rude.