Daily Archives: July 31, 2012

Steam & Your Small SSD

I just finished “upgrading” my main PC for the first time in almost two years, and this is the first mainboard and CPU upgrade in nearly four.  For those of you reading familiar with my PC upgrade habits you know that is like having and Ice Age occur, having the glaciers come and retreat and the Earth turning green again between upgrades.  In truth, this is fairly minor upgrade in that I bought nothing new, save a $30 case in order to pull it off.

Well, in truth I did buy a shiny, new 180GB Intel Solid State Drive.  Yes, it is Sandforce based, which I vowed never to buy… but it is also Intel, which I always promise to buy but then shrink back from the cost… *shrug*  I had completely grown out of the 40GB Gen2 Intel SSD however, and so this purchase was completely spousal approved.  I am typing from the very machine which I put together, fancy water cooling kit and all.  It’s a little louder than I would prefer, but the big upgrade comes a year from now and I’ll save the money and trouble until that time…

ANYWAY – the main event.  I put Steam and all of my Steam games on a Western Digital Black 640GB 7200 RPM drive.  It is plenty speedy for the load times for games, but Steam annoyingly always took a while to launch and the UI was painfully laggy compared to the apps installed onto the SSD boot drive.  A bigger SSD makes this all better, right?  Well, at any given time I have over 200GB of Steam games installed, not too mention the ~30GB of Blizzard games sitting on the hard drive.  There wasn’t room in the budget for a 512GB or 600GB SSD (I paid $130 for 180GB, a 512 is at least $350 if not $4-500), especially given the minimal increase games gain by being installed to an SSD.

Simple solution, right?  Install Steam to the SSD, install the games to the spinning cheap drive, call it a day!

If only it were that easy!  Steam installs all of the games you manage through it in the same directory that you install the Steam application into.  Remember, I have only a 180GB drive and 200+GB of games installed.

Enter “symbolic links” and easy apps like http://www.traynier.com/software/steammover/ that allow you to move installed games to a secondary drive by using a clever trick of NTFS.   This means you can have your cake and eat it too – a minority of your games are on the SSD, along with the core Steam files, meaning the best possible performance while the games you aren’t actively playing or are too big are more economically stored on spinning disk.  I started using this tool, which meant I copied my downloaded games from the steamapps/common directory from my old Steam install (the same secondary disk was in my old system, carried it over to the new system) over to the SSD, then the handy tool moved the data back to the secondary directory on the spinning drive.

This took a while, even at ~100+MB a second.  Plus, writing data to an SSD wears it out, so it should be minimized if possible.  I got to Rage, the newest game from Id that is ~21GB on disk and decided there had to be a better way.

I found a great work around.  Now, I create the same directory in the SSD steamapps/common directory and copy the .exe and other miscellaneous top level files from the spinning drive, which is about 30-50MB depending on the game, which takes less than a second.  Next, I use the tool to “move” the game from the SSD to the secondary drive.  Finally, I cut the massive files out of the original steamapps/common/game directory and paste them into the new directory on the same drive and partition.  Since this is a simple modification of the file system tree and no data gets moved, it is essentially instantaneous.

Win for me!  Hopefully a win for you!

Note – the Valve games put their darn big files right in the root of the steamapps directory, so this relocation trick doesn’t even work on them.  If you are planning on playing TF:2, L4D, CS:S, etc you are going to need a decent amount of room on the SSD to pull this off.  I wouldn’t do it with less than an 80GB SSD.

–Nat

(also, not shut out in July! :))