{"video_id":"gk1eKPRLaJA","title":"Downloading Games at 10 GIGABIT?","channel":"Linus Tech Tips","show":"Linus Tech Tips","published_at":"2019-05-06T14:53:29Z","duration_s":741,"segments":[{"start_s":0.32,"end_s":4.56,"text":"Waiting what seems like an eternity for games to download","speaker":null,"is_sponsor":0},{"start_s":4.56,"end_s":6.64,"text":"is annoying enough to start with.","speaker":null,"is_sponsor":0},{"start_s":6.64,"end_s":11.14,"text":"But when there are multiple people in the house or office","speaker":null,"is_sponsor":0},{"start_s":11.14,"end_s":15.0,"text":"and everyone wants to grab a hot new title at the same time,","speaker":null,"is_sponsor":0},{"start_s":15.0,"end_s":18.12,"text":"you can run into some serious bottlenecking.","speaker":null,"is_sponsor":0},{"start_s":18.12,"end_s":23.12,"text":"So we set out to solve that problem once and for all","speaker":null,"is_sponsor":0},{"start_s":24.24,"end_s":26.64,"text":"without just spending more money","speaker":null,"is_sponsor":0},{"start_s":26.64,"end_s":28.5,"text":"on a faster internet connection.","speaker":null,"is_sponsor":0},{"start_s":28.5,"end_s":31.28,"text":"And now, well, not quite now, Jake's fixing it,","speaker":null,"is_sponsor":0},{"start_s":31.28,"end_s":34.56,"text":"but soon everyone in this building","speaker":null,"is_sponsor":0},{"start_s":34.56,"end_s":36.52,"text":"will be able to download games","speaker":null,"is_sponsor":0},{"start_s":36.52,"end_s":40.69,"text":"from services like Steam at full speed.","speaker":null,"is_sponsor":0},{"start_s":40.69,"end_s":43.94,"text":"And I'm gonna show you guys how","speaker":null,"is_sponsor":0},{"start_s":43.94,"end_s":46.08,"text":"after Jake fixes the machine.","speaker":null,"is_sponsor":0},{"start_s":46.08,"end_s":49.3,"text":"And I tell you about Corsair's next generation","speaker":null,"is_sponsor":0},{"start_s":49.3,"end_s":51.3,"text":"Strafe Mark II keyboard.","speaker":null,"is_sponsor":0},{"start_s":51.3,"end_s":54.4,"text":"It features a variety of Cherry MX RGB key switches","speaker":null,"is_sponsor":0},{"start_s":54.4,"end_s":57.24,"text":"and eight megabytes of onboard profile storage.","speaker":null,"is_sponsor":0},{"start_s":57.24,"end_s":59.0,"text":"Check it out at the link below.","speaker":null,"is_sponsor":0},{"start_s":68.02,"end_s":70.86,"text":"If you've been to an organized LAN event recently,","speaker":null,"is_sponsor":0},{"start_s":70.86,"end_s":73.92,"text":"you were probably wowed by game download speeds","speaker":null,"is_sponsor":0},{"start_s":73.92,"end_s":77.12,"text":"that seemed like they were from the future or something.","speaker":null,"is_sponsor":0},{"start_s":77.12,"end_s":80.1,"text":"But unless it was DreamHack 2018,","speaker":null,"is_sponsor":0},{"start_s":80.1,"end_s":84.12,"text":"the event's internet speed is probably nowhere near enough","speaker":null,"is_sponsor":0},{"start_s":84.12,"end_s":86.54,"text":"to offer those kinds of speeds","speaker":null,"is_sponsor":0},{"start_s":86.54,"end_s":88.94,"text":"to even just a couple of people.","speaker":null,"is_sponsor":0},{"start_s":88.94,"end_s":92.52,"text":"So how do they do it?","speaker":null,"is_sponsor":0},{"start_s":92.52,"end_s":93.56,"text":"Great question.","speaker":null,"is_sponsor":0},{"start_s":93.56,"end_s":97.58,"text":"And one that can be both simple and complicated to answer.","speaker":null,"is_sponsor":0},{"start_s":97.88,"end_s":101.62,"text":"In short, those insane speeds are thanks to the event","speaker":null,"is_sponsor":0},{"start_s":101.62,"end_s":105.4,"text":"having something called a caching server.","speaker":null,"is_sponsor":0},{"start_s":105.4,"end_s":108.98,"text":"Basically, when a game is first downloaded on the network,","speaker":null,"is_sponsor":0},{"start_s":108.98,"end_s":111.0,"text":"instead of the files just going straight","speaker":null,"is_sponsor":0},{"start_s":111.0,"end_s":112.22,"text":"to the downloader's drive,","speaker":null,"is_sponsor":0},{"start_s":112.22,"end_s":114.86,"text":"like let's say this laptop that used to be here,","speaker":null,"is_sponsor":0},{"start_s":114.86,"end_s":117.32,"text":"but instead I'll use this hard drive as a prop.","speaker":null,"is_sponsor":0},{"start_s":117.32,"end_s":119.74,"text":"Instead of them just going straight to this drive,","speaker":null,"is_sponsor":0},{"start_s":119.74,"end_s":123.22,"text":"they are first saved to a separate machine","speaker":null,"is_sponsor":0},{"start_s":123.22,"end_s":127.32,"text":"and then kind of relayed to the user.","speaker":null,"is_sponsor":0},{"start_s":127.32,"end_s":129.9,"text":"So then the next time someone wants to download","speaker":null,"is_sponsor":0},{"start_s":129.9,"end_s":134.14,"text":"that same game, let's say to this other hard drive,","speaker":null,"is_sponsor":0},{"start_s":134.14,"end_s":138.74,"text":"instead of pulling it off of Steam or Uplay directly,","speaker":null,"is_sponsor":0},{"start_s":138.74,"end_s":141.82,"text":"it'll save a ton of bandwidth to the outside internet","speaker":null,"is_sponsor":0},{"start_s":141.82,"end_s":144.2,"text":"by grabbing it off of that same server.","speaker":null,"is_sponsor":0},{"start_s":144.2,"end_s":148.28,"text":"This will help keep latency down for all of the gamers","speaker":null,"is_sponsor":0},{"start_s":148.28,"end_s":150.56,"text":"that are sharing that same connection.","speaker":null,"is_sponsor":0},{"start_s":150.56,"end_s":154.07,"text":"So the concept is simple,","speaker":null,"is_sponsor":0},{"start_s":154.07,"end_s":156.89,"text":"but when you get into sending up Nginx, DNx,","speaker":null,"is_sponsor":0},{"start_s":157.35,"end_s":160.11,"text":"DNS forwarding, dealing with HTTPS,","speaker":null,"is_sponsor":0},{"start_s":160.11,"end_s":162.83,"text":"and worrying about when to clear the cache,","speaker":null,"is_sponsor":0},{"start_s":162.83,"end_s":166.91,"text":"the actual deployment can get pretty confusing.","speaker":null,"is_sponsor":0},{"start_s":166.91,"end_s":168.17,"text":"Now, thankfully for us,","speaker":null,"is_sponsor":0},{"start_s":168.17,"end_s":170.09,"text":"there are a ton of different solutions","speaker":null,"is_sponsor":0},{"start_s":170.09,"end_s":172.41,"text":"that mostly revolve around the same built-in","speaker":null,"is_sponsor":0},{"start_s":172.41,"end_s":175.29,"text":"Nginx caching solution with the most up-to-date","speaker":null,"is_sponsor":0},{"start_s":175.29,"end_s":178.97,"text":"being the appropriately named Steam Cache.","speaker":null,"is_sponsor":0},{"start_s":178.97,"end_s":181.81,"text":"It's pre-compiled for Docker, making it quick to set up,","speaker":null,"is_sponsor":0},{"start_s":181.81,"end_s":184.95,"text":"and despite its name, there's actually a version of it","speaker":null,"is_sponsor":0},{"start_s":184.95,"end_s":187.15,"text":"that supports Steam, Origin,","speaker":null,"is_sponsor":0},{"start_s":187.35,"end_s":191.07,"text":"SiteGames, Battle.net, Frontier Launchpad, Uplay,","speaker":null,"is_sponsor":0},{"start_s":191.07,"end_s":192.79,"text":"and even Windows Update.","speaker":null,"is_sponsor":0},{"start_s":192.79,"end_s":196.45,"text":"So it's perfect for your next LAN or even general home use,","speaker":null,"is_sponsor":0},{"start_s":196.45,"end_s":199.95,"text":"because I mean, who needs Epic Games Launcher anyway, right?","speaker":null,"is_sponsor":0},{"start_s":199.95,"end_s":201.27,"text":"Yeah, right?","speaker":null,"is_sponsor":0},{"start_s":201.27,"end_s":204.15,"text":"So let's get started on exactly how it works then, shall we?","speaker":null,"is_sponsor":0},{"start_s":204.15,"end_s":207.71,"text":"For most people, standard one gigabit networking,","speaker":null,"is_sponsor":0},{"start_s":207.71,"end_s":211.13,"text":"along with a couple of,","speaker":null,"is_sponsor":0},{"start_s":211.13,"end_s":213.71,"text":"along with a couple of RAID zeroed hard drives","speaker":null,"is_sponsor":0},{"start_s":213.71,"end_s":217.63,"text":"will be more than sufficient, but come on,","speaker":null,"is_sponsor":0},{"start_s":217.83,"end_s":219.59,"text":"you guys know how we do.","speaker":null,"is_sponsor":0},{"start_s":219.59,"end_s":223.27,"text":"So we wanted to plan to allow every single writer","speaker":null,"is_sponsor":0},{"start_s":223.27,"end_s":227.25,"text":"here in the office to download games at the same time.","speaker":null,"is_sponsor":0},{"start_s":227.25,"end_s":230.59,"text":"So that would be about one Gigabyte per second","speaker":null,"is_sponsor":0},{"start_s":230.59,"end_s":232.05,"text":"of sequential read speeds.","speaker":null,"is_sponsor":0},{"start_s":232.05,"end_s":236.71,"text":"Now, that's child's play for today's high-end NVMe SSDs,","speaker":null,"is_sponsor":0},{"start_s":236.71,"end_s":241.23,"text":"like this one, but since we also need capacity,","speaker":null,"is_sponsor":0},{"start_s":241.23,"end_s":242.61,"text":"and that's not what you're gonna get","speaker":null,"is_sponsor":0},{"start_s":242.61,"end_s":247.61,"text":"from a single Optane drive, we decided on six RAID zeroed,","speaker":null,"is_sponsor":0},{"start_s":247.83,"end_s":251.53,"text":"480 gig SATA SSDs from Corsair","speaker":null,"is_sponsor":0},{"start_s":251.53,"end_s":254.25,"text":"that we pulled out of that dual machine build.","speaker":null,"is_sponsor":0},{"start_s":254.25,"end_s":256.43,"text":"Rip, rip in pieces.","speaker":null,"is_sponsor":0},{"start_s":256.43,"end_s":260.23,"text":"Now, it should be noted that a single drive failure here","speaker":null,"is_sponsor":0},{"start_s":260.23,"end_s":264.61,"text":"would result in a complete loss of all the data on the array,","speaker":null,"is_sponsor":0},{"start_s":264.61,"end_s":266.97,"text":"but it doesn't really matter","speaker":null,"is_sponsor":0},{"start_s":266.97,"end_s":269.61,"text":"since this server is not mission critical.","speaker":null,"is_sponsor":0},{"start_s":269.61,"end_s":272.67,"text":"All it's doing is caching readily available games","speaker":null,"is_sponsor":0},{"start_s":272.67,"end_s":273.51,"text":"and updates.","speaker":null,"is_sponsor":0},{"start_s":273.51,"end_s":276.45,"text":"We could easily throw a new drive in and redownload it all.","speaker":null,"is_sponsor":0},{"start_s":276.45,"end_s":277.59,"text":"The other key specs of our system,","speaker":null,"is_sponsor":0},{"start_s":277.59,"end_s":281.17,"text":"are it's 64 gigs of DDR4 RAM.","speaker":null,"is_sponsor":0},{"start_s":281.17,"end_s":283.97,"text":"Lots of RAM lets the server cache files in memory","speaker":null,"is_sponsor":0},{"start_s":283.97,"end_s":288.27,"text":"for quicker transfers and a 10 gigabit network card.","speaker":null,"is_sponsor":0},{"start_s":288.27,"end_s":290.59,"text":"So remember, even though we wanna download","speaker":null,"is_sponsor":0},{"start_s":290.59,"end_s":292.39,"text":"from this server at one gigabit,","speaker":null,"is_sponsor":0},{"start_s":292.39,"end_s":294.83,"text":"we want multiple people to be able to do that","speaker":null,"is_sponsor":0},{"start_s":294.83,"end_s":295.67,"text":"at the same time.","speaker":null,"is_sponsor":0},{"start_s":295.67,"end_s":298.31,"text":"So this one needs a bigger pipe.","speaker":null,"is_sponsor":0},{"start_s":298.31,"end_s":301.41,"text":"Now we're using an X540T2, but that's kind of older.","speaker":null,"is_sponsor":0},{"start_s":301.41,"end_s":302.55,"text":"It was cause we had it lying around.","speaker":null,"is_sponsor":0},{"start_s":302.55,"end_s":304.53,"text":"They're actually cheaper options these days","speaker":null,"is_sponsor":0},{"start_s":304.53,"end_s":306.81,"text":"from a Quantia and a SUSE.","speaker":null,"is_sponsor":0},{"start_s":306.81,"end_s":307.59,"text":"So then,","speaker":null,"is_sponsor":0},{"start_s":307.59,"end_s":310.11,"text":"now that we have a server primed for caching,","speaker":null,"is_sponsor":0},{"start_s":310.11,"end_s":313.15,"text":"we can get back to the software side of things.","speaker":null,"is_sponsor":0},{"start_s":313.15,"end_s":314.53,"text":"As I mentioned earlier,","speaker":null,"is_sponsor":0},{"start_s":314.53,"end_s":316.93,"text":"Steam cache comes in the form of a Docker container,","speaker":null,"is_sponsor":0},{"start_s":316.93,"end_s":319.83,"text":"which is kind of like a virtual machine,","speaker":null,"is_sponsor":0},{"start_s":319.83,"end_s":323.91,"text":"but instead of emulating the entire operating system,","speaker":null,"is_sponsor":0},{"start_s":323.91,"end_s":327.33,"text":"then with the specific software that we need on top of that,","speaker":null,"is_sponsor":0},{"start_s":327.33,"end_s":332.19,"text":"Docker can run specific software as if it's on its OS","speaker":null,"is_sponsor":0},{"start_s":332.19,"end_s":334.71,"text":"without running an entire separate OS,","speaker":null,"is_sponsor":0},{"start_s":334.71,"end_s":336.35,"text":"making it a lot more efficient,","speaker":null,"is_sponsor":0},{"start_s":336.35,"end_s":337.63,"text":"especially if you need to run","speaker":null,"is_sponsor":0},{"start_s":337.91,"end_s":340.17,"text":"multiple instances of the same software.","speaker":null,"is_sponsor":0},{"start_s":340.17,"end_s":341.75,"text":"And we will need to do that","speaker":null,"is_sponsor":0},{"start_s":341.75,"end_s":344.51,"text":"since each different service that needs caching,","speaker":null,"is_sponsor":0},{"start_s":344.51,"end_s":346.85,"text":"Steam, Origin, Battle.net, et cetera,","speaker":null,"is_sponsor":0},{"start_s":346.85,"end_s":349.86,"text":"will run in its own instance.","speaker":null,"is_sponsor":0},{"start_s":349.86,"end_s":352.26,"text":"Now we know all of that was a gross oversimplification,","speaker":null,"is_sponsor":0},{"start_s":352.26,"end_s":354.44,"text":"so we're actually gonna link a video below","speaker":null,"is_sponsor":0},{"start_s":354.44,"end_s":357.8,"text":"with a better explanation of Docker if you're into that.","speaker":null,"is_sponsor":0},{"start_s":357.8,"end_s":360.18,"text":"Docker can run on both Linux and Windows,","speaker":null,"is_sponsor":0},{"start_s":360.18,"end_s":362.22,"text":"but the Windows version has to actually","speaker":null,"is_sponsor":0},{"start_s":362.22,"end_s":364.74,"text":"virtualize the Linux kernel on top of Windows,","speaker":null,"is_sponsor":0},{"start_s":364.74,"end_s":366.14,"text":"so we're gonna stick with Linux.","speaker":null,"is_sponsor":0},{"start_s":366.14,"end_s":367.98,"text":"We went with Ubuntu Desktop 18.04,","speaker":null,"is_sponsor":0},{"start_s":368.42,"end_s":371.08,"text":"because we love reading butthurt comments","speaker":null,"is_sponsor":0},{"start_s":371.08,"end_s":373.04,"text":"from the Arch and Mint fanboys.","speaker":null,"is_sponsor":0},{"start_s":373.04,"end_s":374.9,"text":"Just kidding, love you guys.","speaker":null,"is_sponsor":0},{"start_s":374.9,"end_s":377.24,"text":"But don't worry, the guide that we're gonna have linked below","speaker":null,"is_sponsor":0},{"start_s":377.24,"end_s":380.18,"text":"will work on pretty much any flavor of Linux that you like.","speaker":null,"is_sponsor":0},{"start_s":380.18,"end_s":384.49,"text":"Now our first step is to get Docker up and running.","speaker":null,"is_sponsor":0},{"start_s":384.49,"end_s":387.57,"text":"Once you have it, make sure that you run your Docker commands","speaker":null,"is_sponsor":0},{"start_s":387.57,"end_s":392.55,"text":"either with sudo or by adding your user to the Docker group.","speaker":null,"is_sponsor":0},{"start_s":392.55,"end_s":396.92,"text":"Do not run any of this as root, please.","speaker":null,"is_sponsor":0},{"start_s":396.92,"end_s":398.02,"text":"Then, for our installation, we're gonna run it on Linux.","speaker":null,"is_sponsor":0},{"start_s":398.02,"end_s":398.66,"text":"We're gonna run it on Windows.","speaker":null,"is_sponsor":0},{"start_s":398.68,"end_s":400.72,"text":"We wanna cache all of the services","speaker":null,"is_sponsor":0},{"start_s":400.72,"end_s":403.1,"text":"that we use on a regular basis here at the office,","speaker":null,"is_sponsor":0},{"start_s":403.1,"end_s":407.18,"text":"which means that we're going to need six static IPs,","speaker":null,"is_sponsor":0},{"start_s":407.18,"end_s":408.8,"text":"one for each of them.","speaker":null,"is_sponsor":0},{"start_s":408.8,"end_s":411.12,"text":"Since this OS has a graphical interface,","speaker":null,"is_sponsor":0},{"start_s":411.12,"end_s":413.46,"text":"it's actually super easy to set up our IPs.","speaker":null,"is_sponsor":0},{"start_s":413.46,"end_s":417.0,"text":"We just need to navigate to network settings and enter them.","speaker":null,"is_sponsor":0},{"start_s":417.0,"end_s":417.84,"text":"Wa-bam.","speaker":null,"is_sponsor":0},{"start_s":417.84,"end_s":418.68,"text":"Wa-bam, just like that.","speaker":null,"is_sponsor":0},{"start_s":418.68,"end_s":419.72,"text":"I type pretty fast.","speaker":null,"is_sponsor":0},{"start_s":419.72,"end_s":423.06,"text":"Now we can start each of the caching Docker containers","speaker":null,"is_sponsor":0},{"start_s":423.06,"end_s":426.46,"text":"one by one, and then Steam Cache DNS,","speaker":null,"is_sponsor":0},{"start_s":426.46,"end_s":428.02,"text":"which will forward all of the IPs.","speaker":null,"is_sponsor":0},{"start_s":428.02,"end_s":431.94,"text":"All of the URLs that need caching to our server","speaker":null,"is_sponsor":0},{"start_s":431.94,"end_s":433.98,"text":"instead of the World Wide Web.","speaker":null,"is_sponsor":0},{"start_s":433.98,"end_s":435.38,"text":"Then, I mean, don't worry.","speaker":null,"is_sponsor":0},{"start_s":435.38,"end_s":438.9,"text":"Then if something isn't on our server, it won't just fail.","speaker":null,"is_sponsor":0},{"start_s":438.9,"end_s":440.62,"text":"If the content isn't cached yet,","speaker":null,"is_sponsor":0},{"start_s":440.62,"end_s":442.94,"text":"it will then get downloaded to the caching server","speaker":null,"is_sponsor":0},{"start_s":442.94,"end_s":445.9,"text":"and be forwarded to the downloader seamlessly.","speaker":null,"is_sponsor":0},{"start_s":445.9,"end_s":446.9,"text":"Cool, right?","speaker":null,"is_sponsor":0},{"start_s":446.9,"end_s":448.52,"text":"So theoretically then,","speaker":null,"is_sponsor":0},{"start_s":448.52,"end_s":451.08,"text":"we should be good to start downloading some games, right?","speaker":null,"is_sponsor":0},{"start_s":451.08,"end_s":451.92,"text":"Not quite.","speaker":null,"is_sponsor":0},{"start_s":451.92,"end_s":454.64,"text":"So we need to set the cache IP as DNS","speaker":null,"is_sponsor":0},{"start_s":454.64,"end_s":455.9,"text":"on all the systems we wanna use.","speaker":null,"is_sponsor":0},{"start_s":455.9,"end_s":457.36,"text":"Right, okay.","speaker":null,"is_sponsor":0},{"start_s":457.36,"end_s":460.88,"text":"So keep in mind that if you intend to run a solution","speaker":null,"is_sponsor":0},{"start_s":460.88,"end_s":464.08,"text":"like this long-term, it's a lot more elegant","speaker":null,"is_sponsor":0},{"start_s":464.08,"end_s":466.96,"text":"to set your primary DNS on your router","speaker":null,"is_sponsor":0},{"start_s":466.96,"end_s":469.32,"text":"to the IP of your caching server","speaker":null,"is_sponsor":0},{"start_s":469.32,"end_s":472.42,"text":"instead of setting up the DNS settings","speaker":null,"is_sponsor":0},{"start_s":472.42,"end_s":474.94,"text":"on a computer by computer basis.","speaker":null,"is_sponsor":0},{"start_s":475.88,"end_s":477.58,"text":"Don't worry, any unrelated traffic","speaker":null,"is_sponsor":0},{"start_s":477.58,"end_s":479.38,"text":"will go to the usual location.","speaker":null,"is_sponsor":0},{"start_s":479.38,"end_s":480.54,"text":"Okay, so we're ready.","speaker":null,"is_sponsor":0},{"start_s":480.54,"end_s":482.26,"text":"So here's the caching server.","speaker":null,"is_sponsor":0},{"start_s":482.26,"end_s":485.28,"text":"We've got our diagnostics panel running and all of that.","speaker":null,"is_sponsor":0},{"start_s":485.28,"end_s":487.2,"text":"And then we've got actually a couple of test victims.","speaker":null,"is_sponsor":0},{"start_s":487.2,"end_s":489.94,"text":"So first up, we've got this guy,","speaker":null,"is_sponsor":0},{"start_s":489.94,"end_s":491.22,"text":"one of Jake's test benches,","speaker":null,"is_sponsor":0},{"start_s":491.22,"end_s":493.3,"text":"and we're just gonna do a quick sanity check,","speaker":null,"is_sponsor":0},{"start_s":493.3,"end_s":494.78,"text":"make sure everything's working.","speaker":null,"is_sponsor":0},{"start_s":494.78,"end_s":496.58,"text":"This is actually a 10 gig client","speaker":null,"is_sponsor":0},{"start_s":496.58,"end_s":498.7,"text":"with an Intel Optane drive as its boot.","speaker":null,"is_sponsor":0},{"start_s":498.7,"end_s":499.94,"text":"So go ahead and hit that.","speaker":null,"is_sponsor":0},{"start_s":499.94,"end_s":501.52,"text":"I wanna hit it at the same time as you.","speaker":null,"is_sponsor":0},{"start_s":501.52,"end_s":504.16,"text":"Okay, three, two, one, go.","speaker":null,"is_sponsor":0},{"start_s":508.12,"end_s":509.74,"text":"Oh boy, Brandon, you're gonna have to get here","speaker":null,"is_sponsor":0},{"start_s":509.74,"end_s":511.88,"text":"in the next 23 seconds here.","speaker":null,"is_sponsor":0},{"start_s":511.88,"end_s":513.82,"text":"You got this?","speaker":null,"is_sponsor":0},{"start_s":513.82,"end_s":514.76,"text":"I'm at 200 megs.","speaker":null,"is_sponsor":0},{"start_s":514.76,"end_s":517.16,"text":"I'm coming down at 320 megs a second.","speaker":null,"is_sponsor":0},{"start_s":517.16,"end_s":518.0,"text":"Sir, you're at what?","speaker":null,"is_sponsor":0},{"start_s":518.0,"end_s":518.84,"text":"223.","speaker":null,"is_sponsor":0},{"start_s":518.84,"end_s":519.68,"text":"223?","speaker":null,"is_sponsor":0},{"start_s":520.52,"end_s":521.36,"text":"230.","speaker":null,"is_sponsor":0},{"start_s":521.36,"end_s":522.86,"text":"250.","speaker":null,"is_sponsor":0},{"start_s":522.86,"end_s":524.02,"text":"Oh, wow.","speaker":null,"is_sponsor":0},{"start_s":524.02,"end_s":524.86,"text":"300.","speaker":null,"is_sponsor":0},{"start_s":524.86,"end_s":526.52,"text":"Are you done the game yet?","speaker":null,"is_sponsor":0},{"start_s":526.52,"end_s":528.29,"text":"Seven seconds. Who's gonna win?","speaker":null,"is_sponsor":0},{"start_s":528.29,"end_s":529.35,"text":"Five. Two seconds.","speaker":null,"is_sponsor":0},{"start_s":529.35,"end_s":530.79,"text":"Two.","speaker":null,"is_sponsor":0},{"start_s":530.79,"end_s":531.63,"text":"And done.","speaker":null,"is_sponsor":0},{"start_s":531.63,"end_s":532.89,"text":"I'm done.","speaker":null,"is_sponsor":0},{"start_s":532.89,"end_s":534.05,"text":"Same time.","speaker":null,"is_sponsor":0},{"start_s":534.05,"end_s":534.89,"text":"Go check, go check.","speaker":null,"is_sponsor":0},{"start_s":534.89,"end_s":535.83,"text":"His will be done too,","speaker":null,"is_sponsor":0},{"start_s":535.83,"end_s":538.46,"text":"so we don't even have to see the actual speed.","speaker":null,"is_sponsor":0},{"start_s":538.46,"end_s":540.1,"text":"Wonder what the...","speaker":null,"is_sponsor":0},{"start_s":540.1,"end_s":541.74,"text":"That is disgusting.","speaker":null,"is_sponsor":0},{"start_s":541.74,"end_s":546.72,"text":"Okay, so we peaked out at 7.2 gigabit.","speaker":null,"is_sponsor":0},{"start_s":546.72,"end_s":548.2,"text":"7.2 gigabit?","speaker":null,"is_sponsor":0},{"start_s":548.2,"end_s":549.3,"text":"Yeah, from the cert.","speaker":null,"is_sponsor":0},{"start_s":549.3,"end_s":550.34,"text":"Show Brandon.","speaker":null,"is_sponsor":0},{"start_s":550.34,"end_s":551.18,"text":"Seven point, okay.","speaker":null,"is_sponsor":0},{"start_s":551.18,"end_s":552.54,"text":"So that was the peak, 7.2,","speaker":null,"is_sponsor":0},{"start_s":552.54,"end_s":555.71,"text":"and then it was kind of averaged around six.","speaker":null,"is_sponsor":0},{"start_s":555.71,"end_s":559.45,"text":"There's another 6.7 right there.","speaker":null,"is_sponsor":0},{"start_s":559.45,"end_s":561.83,"text":"Dang flabbit, that's insane.","speaker":null,"is_sponsor":0},{"start_s":561.83,"end_s":564.83,"text":"All right, for LOLs, I'm just gonna do PUBG","speaker":null,"is_sponsor":0},{"start_s":564.83,"end_s":566.94,"text":"and see if that one works.","speaker":null,"is_sponsor":0},{"start_s":566.94,"end_s":567.78,"text":"Oh, yeah, it is.","speaker":null,"is_sponsor":0},{"start_s":567.78,"end_s":568.62,"text":"It is.","speaker":null,"is_sponsor":0},{"start_s":568.62,"end_s":570.58,"text":"Okay, so with games like PUBG,","speaker":null,"is_sponsor":0},{"start_s":570.58,"end_s":572.52,"text":"where there's a lot of compression,","speaker":null,"is_sponsor":0},{"start_s":572.52,"end_s":574.36,"text":"you're limited by your computer.","speaker":null,"is_sponsor":0},{"start_s":574.36,"end_s":575.94,"text":"So if we look at the cores of this system,","speaker":null,"is_sponsor":0},{"start_s":575.94,"end_s":577.44,"text":"since this is an i9,","speaker":null,"is_sponsor":0},{"start_s":577.44,"end_s":580.58,"text":"you don't have a huge amount of single-threaded performance.","speaker":null,"is_sponsor":0},{"start_s":580.58,"end_s":582.02,"text":"So Steam will only use...","speaker":null,"is_sponsor":0},{"start_s":582.02,"end_s":583.66,"text":"It will only use a certain amount of cores,","speaker":null,"is_sponsor":0},{"start_s":583.66,"end_s":584.7,"text":"and it won't bypass that.","speaker":null,"is_sponsor":0},{"start_s":584.7,"end_s":585.52,"text":"So you'll see...","speaker":null,"is_sponsor":0},{"start_s":585.52,"end_s":586.36,"text":"90%.","speaker":null,"is_sponsor":0},{"start_s":586.36,"end_s":588.46,"text":"So we're capped out by our CPU right now.","speaker":null,"is_sponsor":0},{"start_s":588.46,"end_s":589.46,"text":"Yeah, decompressing.","speaker":null,"is_sponsor":0},{"start_s":589.46,"end_s":590.46,"text":"Not by our servers.","speaker":null,"is_sponsor":0},{"start_s":590.46,"end_s":591.3,"text":"So if you see here,","speaker":null,"is_sponsor":0},{"start_s":591.3,"end_s":593.58,"text":"there's two full cores that are being utilized.","speaker":null,"is_sponsor":0},{"start_s":593.58,"end_s":595.8,"text":"I think it's normally three or four that it'll use max.","speaker":null,"is_sponsor":0},{"start_s":595.8,"end_s":596.64,"text":"Right.","speaker":null,"is_sponsor":0},{"start_s":596.64,"end_s":597.48,"text":"And then past that,","speaker":null,"is_sponsor":0},{"start_s":597.48,"end_s":599.52,"text":"it won't use any more to not interrupt","speaker":null,"is_sponsor":0},{"start_s":599.52,"end_s":600.62,"text":"the rest of your system.","speaker":null,"is_sponsor":0},{"start_s":600.62,"end_s":601.46,"text":"Right.","speaker":null,"is_sponsor":0},{"start_s":601.46,"end_s":602.3,"text":"And I think it's more optimized","speaker":null,"is_sponsor":0},{"start_s":602.3,"end_s":604.96,"text":"for like four to eight core systems.","speaker":null,"is_sponsor":0},{"start_s":604.96,"end_s":606.92,"text":"16 cores is a little too much for Steam.","speaker":null,"is_sponsor":0},{"start_s":606.92,"end_s":608.88,"text":"So it's a less impressive demo,","speaker":null,"is_sponsor":0},{"start_s":608.88,"end_s":610.92,"text":"but it's definitely our best case scenario.","speaker":null,"is_sponsor":0},{"start_s":610.92,"end_s":612.02,"text":"And that means that we could have","speaker":null,"is_sponsor":0},{"start_s":612.02,"end_s":612.86,"text":"five systems.","speaker":null,"is_sponsor":0},{"start_s":612.86,"end_s":613.68,"text":"Yeah.","speaker":null,"is_sponsor":0},{"start_s":613.68,"end_s":614.52,"text":"Hitting it at the same time.","speaker":null,"is_sponsor":0},{"start_s":614.52,"end_s":615.36,"text":"Well, apparently seven now,","speaker":null,"is_sponsor":0},{"start_s":615.36,"end_s":617.0,"text":"based on what we saw there.","speaker":null,"is_sponsor":0},{"start_s":617.0,"end_s":618.76,"text":"So I guess conclusion time then.","speaker":null,"is_sponsor":0},{"start_s":618.76,"end_s":621.32,"text":"This may not be a solution for the everyday gamer.","speaker":null,"is_sponsor":0},{"start_s":621.32,"end_s":624.96,"text":"Like many people will only ever download each game,","speaker":null,"is_sponsor":0},{"start_s":624.96,"end_s":626.02,"text":"play it once,","speaker":null,"is_sponsor":0},{"start_s":626.02,"end_s":628.48,"text":"then delete it and never download it again.","speaker":null,"is_sponsor":0},{"start_s":628.48,"end_s":631.02,"text":"And it's a lot more user-friendly","speaker":null,"is_sponsor":0},{"start_s":631.02,"end_s":635.1,"text":"to just use Steam's own backup feature to a NAS","speaker":null,"is_sponsor":0},{"start_s":635.1,"end_s":636.56,"text":"if there's something that you, you know,","speaker":null,"is_sponsor":0},{"start_s":636.56,"end_s":639.24,"text":"think occasionally you might wanna re-download.","speaker":null,"is_sponsor":0},{"start_s":639.24,"end_s":641.78,"text":"But if you have a bunch of gaming aficionados","speaker":null,"is_sponsor":0},{"start_s":641.78,"end_s":642.66,"text":"in the house,","speaker":null,"is_sponsor":0},{"start_s":642.66,"end_s":645.46,"text":"or if you help run a local LAN gaming organization,","speaker":null,"is_sponsor":0},{"start_s":645.46,"end_s":648.7,"text":"we would definitely recommend giving it a shot.","speaker":null,"is_sponsor":0},{"start_s":648.7,"end_s":651.88,"text":"Especially if you have an old computer lying around","speaker":null,"is_sponsor":0},{"start_s":651.88,"end_s":656.61,"text":"that's just waiting to be given a new purpose.","speaker":null,"is_sponsor":0},{"start_s":656.61,"end_s":657.93,"text":"Speaking of just waiting,","speaker":null,"is_sponsor":0},{"start_s":657.93,"end_s":659.23,"text":"what are you waiting for?","speaker":null,"is_sponsor":0},{"start_s":659.23,"end_s":660.99,"text":"Try FreshBooks today.","speaker":null,"is_sponsor":0},{"start_s":660.99,"end_s":663.53,"text":"FreshBooks is the small business accounting software","speaker":null,"is_sponsor":0},{"start_s":663.53,"end_s":665.83,"text":"custom built for how you wanna work.","speaker":null,"is_sponsor":0},{"start_s":665.83,"end_s":667.39,"text":"It's the simple way to be more productive,","speaker":null,"is_sponsor":0},{"start_s":667.39,"end_s":668.23,"text":"more organized,","speaker":null,"is_sponsor":0},{"start_s":668.23,"end_s":670.61,"text":"and to get paid faster.","speaker":null,"is_sponsor":0},{"start_s":670.61,"end_s":672.19,"text":"FreshBooks allows you to create and send","speaker":null,"is_sponsor":0},{"start_s":672.19,"end_s":675.41,"text":"professional-looking invoices in less than 30 seconds.","speaker":null,"is_sponsor":0},{"start_s":675.41,"end_s":678.03,"text":"You can set up online payments with just a couple of clicks","speaker":null,"is_sponsor":0},{"start_s":678.03,"end_s":680.01,"text":"and get paid up to four days faster.","speaker":null,"is_sponsor":0},{"start_s":680.01,"end_s":682.21,"text":"They've got apps for iOS and Android,","speaker":null,"is_sponsor":0},{"start_s":682.21,"end_s":684.25,"text":"so you can take the entire FreshBooks experience","speaker":null,"is_sponsor":0},{"start_s":684.25,"end_s":685.09,"text":"with you on the go,","speaker":null,"is_sponsor":0},{"start_s":685.09,"end_s":687.71,"text":"and you can see when your client has seen your invoice","speaker":null,"is_sponsor":0},{"start_s":687.71,"end_s":689.75,"text":"to put an end to the guessing games.","speaker":null,"is_sponsor":0},{"start_s":689.75,"end_s":691.45,"text":"So for your unrestricted 30-day free trial,","speaker":null,"is_sponsor":0},{"start_s":691.45,"end_s":693.41,"text":"go to freshbooks.com slash techtips","speaker":null,"is_sponsor":0},{"start_s":693.41,"end_s":695.23,"text":"and enter Linus Tech Tips","speaker":null,"is_sponsor":0},{"start_s":695.23,"end_s":697.57,"text":"in the How Did You Hear About Us section.","speaker":null,"is_sponsor":0},{"start_s":697.57,"end_s":699.85,"text":"We're gonna have that linked below.","speaker":null,"is_sponsor":0},{"start_s":699.85,"end_s":700.97,"text":"So thanks for watching, guys.","speaker":null,"is_sponsor":0},{"start_s":700.97,"end_s":701.81,"text":"Dislike or like.","speaker":null,"is_sponsor":0},{"start_s":701.81,"end_s":703.31,"text":"Check out our other videos.","speaker":null,"is_sponsor":0},{"start_s":703.31,"end_s":704.69,"text":"Oh, wait, this is my tech wiki outro.","speaker":null,"is_sponsor":0},{"start_s":704.69,"end_s":705.53,"text":"Crap.","speaker":null,"is_sponsor":0},{"start_s":705.53,"end_s":707.19,"text":"Also, get subscribed.","speaker":null,"is_sponsor":0},{"start_s":707.19,"end_s":708.23,"text":"We have merch.","speaker":null,"is_sponsor":0},{"start_s":708.23,"end_s":710.65,"text":"And let us know if you wanna see a follow-up to this video","speaker":null,"is_sponsor":0},{"start_s":710.65,"end_s":714.23,"text":"where instead of like a jank-tastic,","speaker":null,"is_sponsor":0},{"start_s":714.23,"end_s":719.23,"text":"like rat's nest of SSDs in the back of a regular tower,","speaker":null,"is_sponsor":0},{"start_s":719.49,"end_s":721.55,"text":"yeah, in Jake's water-cooled test bench,","speaker":null,"is_sponsor":0},{"start_s":721.55,"end_s":724.45,"text":"if you wanna see us like set this up properly,","speaker":null,"is_sponsor":0},{"start_s":724.45,"end_s":727.47,"text":"get like every Steam and Origin game possible","speaker":null,"is_sponsor":0},{"start_s":727.47,"end_s":729.91,"text":"cached onto it and do some cool demos,","speaker":null,"is_sponsor":0},{"start_s":729.91,"end_s":731.79,"text":"maybe we should do like a LAN center.","speaker":null,"is_sponsor":0},{"start_s":731.81,"end_s":732.65,"text":"Oh.","speaker":null,"is_sponsor":0},{"start_s":732.65,"end_s":733.47,"text":"That'd be pretty sick.","speaker":null,"is_sponsor":0},{"start_s":733.47,"end_s":734.31,"text":"This would be perfect for that.","speaker":null,"is_sponsor":0},{"start_s":734.31,"end_s":735.15,"text":"Yeah.","speaker":null,"is_sponsor":0},{"start_s":735.15,"end_s":735.99,"text":"We might need more networking, though.","speaker":null,"is_sponsor":0},{"start_s":735.99,"end_s":736.83,"text":"Mm.","speaker":null,"is_sponsor":0},{"start_s":736.83,"end_s":737.67,"text":"Maybe.","speaker":null,"is_sponsor":0},{"start_s":737.67,"end_s":739.61,"text":"You wanna see us take it to the next level?","speaker":null,"is_sponsor":0},{"start_s":739.61,"end_s":740.99,"text":"Let us know in the comments below.","speaker":null,"is_sponsor":0}],"full_text":"Waiting what seems like an eternity for games to download is annoying enough to start with. But when there are multiple people in the house or office and everyone wants to grab a hot new title at the same time, you can run into some serious bottlenecking. So we set out to solve that problem once and for all without just spending more money on a faster internet connection. And now, well, not quite now, Jake's fixing it, but soon everyone in this building will be able to download games from services like Steam at full speed. And I'm gonna show you guys how after Jake fixes the machine. And I tell you about Corsair's next generation Strafe Mark II keyboard. It features a variety of Cherry MX RGB key switches and eight megabytes of onboard profile storage. Check it out at the link below. If you've been to an organized LAN event recently, you were probably wowed by game download speeds that seemed like they were from the future or something. But unless it was DreamHack 2018, the event's internet speed is probably nowhere near enough to offer those kinds of speeds to even just a couple of people. So how do they do it? Great question. And one that can be both simple and complicated to answer. In short, those insane speeds are thanks to the event having something called a caching server. Basically, when a game is first downloaded on the network, instead of the files just going straight to the downloader's drive, like let's say this laptop that used to be here, but instead I'll use this hard drive as a prop. Instead of them just going straight to this drive, they are first saved to a separate machine and then kind of relayed to the user. So then the next time someone wants to download that same game, let's say to this other hard drive, instead of pulling it off of Steam or Uplay directly, it'll save a ton of bandwidth to the outside internet by grabbing it off of that same server. This will help keep latency down for all of the gamers that are sharing that same connection. So the concept is simple, but when you get into sending up Nginx, DNx, DNS forwarding, dealing with HTTPS, and worrying about when to clear the cache, the actual deployment can get pretty confusing. Now, thankfully for us, there are a ton of different solutions that mostly revolve around the same built-in Nginx caching solution with the most up-to-date being the appropriately named Steam Cache. It's pre-compiled for Docker, making it quick to set up, and despite its name, there's actually a version of it that supports Steam, Origin, SiteGames, Battle.net, Frontier Launchpad, Uplay, and even Windows Update. So it's perfect for your next LAN or even general home use, because I mean, who needs Epic Games Launcher anyway, right? Yeah, right? So let's get started on exactly how it works then, shall we? For most people, standard one gigabit networking, along with a couple of, along with a couple of RAID zeroed hard drives will be more than sufficient, but come on, you guys know how we do. So we wanted to plan to allow every single writer here in the office to download games at the same time. So that would be about one Gigabyte per second of sequential read speeds. Now, that's child's play for today's high-end NVMe SSDs, like this one, but since we also need capacity, and that's not what you're gonna get from a single Optane drive, we decided on six RAID zeroed, 480 gig SATA SSDs from Corsair that we pulled out of that dual machine build. Rip, rip in pieces. Now, it should be noted that a single drive failure here would result in a complete loss of all the data on the array, but it doesn't really matter since this server is not mission critical. All it's doing is caching readily available games and updates. We could easily throw a new drive in and redownload it all. The other key specs of our system, are it's 64 gigs of DDR4 RAM. Lots of RAM lets the server cache files in memory for quicker transfers and a 10 gigabit network card. So remember, even though we wanna download from this server at one gigabit, we want multiple people to be able to do that at the same time. So this one needs a bigger pipe. Now we're using an X540T2, but that's kind of older. It was cause we had it lying around. They're actually cheaper options these days from a Quantia and a SUSE. So then, now that we have a server primed for caching, we can get back to the software side of things. As I mentioned earlier, Steam cache comes in the form of a Docker container, which is kind of like a virtual machine, but instead of emulating the entire operating system, then with the specific software that we need on top of that, Docker can run specific software as if it's on its OS without running an entire separate OS, making it a lot more efficient, especially if you need to run multiple instances of the same software. And we will need to do that since each different service that needs caching, Steam, Origin, Battle.net, et cetera, will run in its own instance. Now we know all of that was a gross oversimplification, so we're actually gonna link a video below with a better explanation of Docker if you're into that. Docker can run on both Linux and Windows, but the Windows version has to actually virtualize the Linux kernel on top of Windows, so we're gonna stick with Linux. We went with Ubuntu Desktop 18.04, because we love reading butthurt comments from the Arch and Mint fanboys. Just kidding, love you guys. But don't worry, the guide that we're gonna have linked below will work on pretty much any flavor of Linux that you like. Now our first step is to get Docker up and running. Once you have it, make sure that you run your Docker commands either with sudo or by adding your user to the Docker group. Do not run any of this as root, please. Then, for our installation, we're gonna run it on Linux. We're gonna run it on Windows. We wanna cache all of the services that we use on a regular basis here at the office, which means that we're going to need six static IPs, one for each of them. Since this OS has a graphical interface, it's actually super easy to set up our IPs. We just need to navigate to network settings and enter them. Wa-bam. Wa-bam, just like that. I type pretty fast. Now we can start each of the caching Docker containers one by one, and then Steam Cache DNS, which will forward all of the IPs. All of the URLs that need caching to our server instead of the World Wide Web. Then, I mean, don't worry. Then if something isn't on our server, it won't just fail. If the content isn't cached yet, it will then get downloaded to the caching server and be forwarded to the downloader seamlessly. Cool, right? So theoretically then, we should be good to start downloading some games, right? Not quite. So we need to set the cache IP as DNS on all the systems we wanna use. Right, okay. So keep in mind that if you intend to run a solution like this long-term, it's a lot more elegant to set your primary DNS on your router to the IP of your caching server instead of setting up the DNS settings on a computer by computer basis. Don't worry, any unrelated traffic will go to the usual location. Okay, so we're ready. So here's the caching server. We've got our diagnostics panel running and all of that. And then we've got actually a couple of test victims. So first up, we've got this guy, one of Jake's test benches, and we're just gonna do a quick sanity check, make sure everything's working. This is actually a 10 gig client with an Intel Optane drive as its boot. So go ahead and hit that. I wanna hit it at the same time as you. Okay, three, two, one, go. Oh boy, Brandon, you're gonna have to get here in the next 23 seconds here. You got this? I'm at 200 megs. I'm coming down at 320 megs a second. Sir, you're at what? 223. 223? 230. 250. Oh, wow. 300. Are you done the game yet? Seven seconds. Who's gonna win? Five. Two seconds. Two. And done. I'm done. Same time. Go check, go check. His will be done too, so we don't even have to see the actual speed. Wonder what the... That is disgusting. Okay, so we peaked out at 7.2 gigabit. 7.2 gigabit? Yeah, from the cert. Show Brandon. Seven point, okay. So that was the peak, 7.2, and then it was kind of averaged around six. There's another 6.7 right there. Dang flabbit, that's insane. All right, for LOLs, I'm just gonna do PUBG and see if that one works. Oh, yeah, it is. It is. Okay, so with games like PUBG, where there's a lot of compression, you're limited by your computer. So if we look at the cores of this system, since this is an i9, you don't have a huge amount of single-threaded performance. So Steam will only use... It will only use a certain amount of cores, and it won't bypass that. So you'll see... 90%. So we're capped out by our CPU right now. Yeah, decompressing. Not by our servers. So if you see here, there's two full cores that are being utilized. I think it's normally three or four that it'll use max. Right. And then past that, it won't use any more to not interrupt the rest of your system. Right. And I think it's more optimized for like four to eight core systems. 16 cores is a little too much for Steam. So it's a less impressive demo, but it's definitely our best case scenario. And that means that we could have five systems. Yeah. Hitting it at the same time. Well, apparently seven now, based on what we saw there. So I guess conclusion time then. This may not be a solution for the everyday gamer. Like many people will only ever download each game, play it once, then delete it and never download it again. And it's a lot more user-friendly to just use Steam's own backup feature to a NAS if there's something that you, you know, think occasionally you might wanna re-download. But if you have a bunch of gaming aficionados in the house, or if you help run a local LAN gaming organization, we would definitely recommend giving it a shot. Especially if you have an old computer lying around that's just waiting to be given a new purpose. Speaking of just waiting, what are you waiting for? Try FreshBooks today. FreshBooks is the small business accounting software custom built for how you wanna work. It's the simple way to be more productive, more organized, and to get paid faster. FreshBooks allows you to create and send professional-looking invoices in less than 30 seconds. You can set up online payments with just a couple of clicks and get paid up to four days faster. They've got apps for iOS and Android, so you can take the entire FreshBooks experience with you on the go, and you can see when your client has seen your invoice to put an end to the guessing games. So for your unrestricted 30-day free trial, go to freshbooks.com slash techtips and enter Linus Tech Tips in the How Did You Hear About Us section. We're gonna have that linked below. So thanks for watching, guys. Dislike or like. Check out our other videos. Oh, wait, this is my tech wiki outro. Crap. Also, get subscribed. We have merch. And let us know if you wanna see a follow-up to this video where instead of like a jank-tastic, like rat's nest of SSDs in the back of a regular tower, yeah, in Jake's water-cooled test bench, if you wanna see us like set this up properly, get like every Steam and Origin game possible cached onto it and do some cool demos, maybe we should do like a LAN center. Oh. That'd be pretty sick. This would be perfect for that. Yeah. We might need more networking, though. Mm. Maybe. You wanna see us take it to the next level? Let us know in the comments below."}