Inert Detritus The Internet's dust bunnies

Posted
3 September 2009 @ 12am

SSDs and You: My Dual-Drive Setup

I’ve been running a dual-drive setup on my new MacBook Pro for the past two months. Here’s a bit of info about how I’ve got it set up, and how it’s working for me

A quick introduction to SSDs

The vast majority of a HD’s time is spent traveling from bit A to bit B: reading or writing small amounts of data is fast, but getting the read/write heads to where it needs to be takes forever, in computing terms.1 Sets of bits that are farther apart on the platter take longer to reach: for example, duplicating a file on one disk takes much longer than copying it to another disk, because the heads have to move to where the file is, read some bits, move to where there’s free space, write some bits, and repeat hundreds of times.

SSDs have a constant access time, regardless of what bits you ask it to read or write: reading two physically adjacent blocks of a song is just as fast as reading a block of data for an application followed by a block of data for a download.

It doesn’t matter if an SSD beats a spinning platter HD by inches or miles for sequential read and writes: the real magic is the throughput and speed of random reads and writes.

Only big media files, like pictures, music, and videos, can typically be sequentially read and written.2 The rest of the system, from OS libraries to application bundles and preferences, are scattered across the disk. When you launch an app, OS X tries in a very short amount of time to read the app’s binary, open any libraries the app needs to run, load any additional app resources it needs, and read its preferences and other application data. None of those bits sit near each other on the drive, so it takes a lot of back-and-forth hard drive seeking to get everything read in and ready to go. SSDs don’t have to pay any time penalty for randomly choosing two bits to read, so app launches are lightning fast.

The setup nitty gritty

I did this to my mid-2009 15″ MacBook Pro. I upgraded the built-in HD to a 500 GB, 7200 RPM Seagate drive. I bought an Optibay3 and an 80 GB Intel X25-M and installed them myself. The install was easy: take 10 screws out of the bottom case to expose the guts of the laptop, and remove three more inside to swap out the optical drive for the SSD carrier. Close it back up, format the drive, and you’re ready to go.

Why two drives?

I wanted an SSD for the ludicrous speed increases, but I have a few hundred gigabytes of pictures, videos, and music, and no one manufactures (affordable) 500 GB SSDs just yet. Instead of moving lots of that media off the machine and onto an external drive, I’ve split my filesystem setup between the two drives. I moved as many of the more-randomly-read bits onto the SSD as possible (the base OS, /Applications, and especially ~/Library), and kept my user’s Music, Movies, Pictures, Desktop, and Downloads on the spinning platter drive, where bit storage is cheap and longer seek times don’t matter. By keeping the entire OS and the vast majority of my user’s home directory on the SSD, boot times, login times, and app launch times are all largely the same as an SSD-only system, but I still have plenty of capacity for large downloads of videos, pictures, or music, and can still work and use all my media while on the go. It’s the best of both worlds.

Dragons ahead

Getting an already-installed OS properly copied to the SSD was tricky: I hacked a SuperDuper script to copy over my 500 GB boot volume, minus the above paths and a few others, and symlink over what I didn’t copy. It was tricky, and this is a good time to make sure you’ve got an up-to-date SuperDuper backup of your boot volume somewhere: I had to restore the 500 GB drive from backup once when I typo’d a path and it thought I meant /Music and not ~/Music.

A special note for anyone wondering about how OS X installs handle a dual-drive setup: I haven’t tried a Leopard Archive and Install on this machine, but I can’t think of any reason it wouldn’t work, as long as you check the box to preserve Users. On Snow Leopard, I’ve done several OS upgrade installs since setting this up, and have had zero problems.

Results! I demand results!

I initially didn’t copy my user over at all, but the system wasn’t much more responsive than a spinning-platter setup: though apps and the base OS were on the SSD, there was still lots of drive thrashing when loading preferences and application data. The biggest speedup in login and app launch time came from putting ~/Library on the SSD: ~/Library/Application Support and ~/Library/Preferences are hit heavily by apps on launch. I also moved over all of ~/Music except for the actual iTunes Music folder: having the iTunes Library file on the SSD greatly improved iTunes launch times and song metadata updates.4

Right now, only a few specific applications access the 500 GB drive: iTunes (and only when playing songs), Aperture, and any copy operations to/from ~/Desktop or ~/Downloads.

Hacks

Since most of the files used by my system are on the SSD, sudo pmset -b disksleep 1 is my new best friend. This Terminal command sets the disk sleep timeout while on battery to 1 minute: most of my time on battery is spent with the SSD powered and the Seagate drive spun down. I’ve seen a big improvement in battery life the past weeks as a result.5

Was it good for you too?

This configuration was a bit tricky to get set up, but it was very much worth it. OS boot, login, app launches…almost every daily operation on the machine is lightning fast,6 and I didn’t have to make any compromises with what music or photos I keep on the machine. From now on, I’ll be making sure that any machine I use day-to-day as my primary system is running on an SSD.

  1. HD seek and rotational latency times are usually measured in milliseconds: a ten millisecond seek time burns 20 million CPU cycles on a 2 GHz processor. Entire empires can rise and fall in the time it takes those platters to spin and the read/write heads to move []
  2. assuming no file fragmentation on the drive []
  3. Fraser Speirs got a MaxConnect kit for his setup []
  4. the computer seems to write changes to the library file at the same time as the actual media files. Having them on separate drives eliminated the typical disk thrashing this causes []
  5. If you install the Developer Tools, check out Spindown HD in /Developer/Applications/Performance Tools/CHUD/Hardware Tools/ for an easy way to know if the drive is asleep or spinning. []
  6. even OS reinstalls! []

10 Comments

Posted by
Justin M.
3 September 2009 @ 8am

Wow, this sounds like an interesting setup. I’ve been tempted to get an SSD, and may even go with something like this, once my warranty’s past for this new 17″ MBP.


Posted by
Jake
4 October 2009 @ 11am

Thanks for the details, especially regarding SuperDuper. At some point I may install an SSD in my iMac and move my pictures, videos, and music to an external FireWire drive, and I’m glad you put all this information in one spot.


Posted by
Melanie
15 December 2009 @ 8am

Thanks for a great article. I have a brand new MBP sitting here and I’m sorting through how to tackle the setup. I needed all the info you’ve shared here and even some tidbits from your other posts. Keep it up — I enjoy your stuff and you write very well! Cheers.


Posted by
Justin M.
28 January 2010 @ 11pm

I’m still intrigued by this and counting down the days until the end of March when my warranty is up. How are you liking it some months later?


Posted by
Christopher Bowns
29 January 2010 @ 1am

Still loving it. Battery life is negligibly impacted unless I’m actively using both drives. I have all the large storage advantages of the HD, and all the speed advantages of the SSD. I’ll be doing this setup until SSDs are large and cheap enough to hold all my bits.


Posted by
Matt
24 February 2010 @ 8am

Re: sudo pmset –b disksleep 1 : Entering a command on the terminal does not constitute a hack.


Posted by
Jan R.
24 February 2010 @ 2pm

I’m thinking about trying this setup with my old MacBook (white). I currently have a 500 GB HD with Snow Leopard installed. Could you elaborate a little on how to make this setup work, like for example the SuperDuper script you used? And also how to make the changes you mentioned in the “RESULTS! I DEMAND RESULTS!” paragraph.


Posted by
Jason
26 February 2010 @ 4pm

Sounds like you put the SSD in the Optibay enclosure??? Wouldn’t this have been simpler (not required the SuperDuper hijinks, etc.) if you had put the 500GB platter in the Optibay, installed the SSD in the standard HDD slot, reinstalled the OS, and then moved the few items (music library, photos) over to the Optibay drive?


Posted by
Christopher Bowns
28 February 2010 @ 9am

@Jan: I’d rather not; it was a very hacked together SuperDuper script, and the changes required to split my user data across the drives is something you should be comfortable doing without having me a write a section called “Here’s what a Terminal command is”. Sorry.


Posted by
Josh Barfield
20 April 2010 @ 1pm

I know I’m late to the game, but I’m pretty much convinced. I figure I have another year and a half in my 2.53GHz C2D 15″ MBP. The investment seems worth it for the speed increases. I think I’ll put the SSD in the Optibay with a fresh OS install and then symlink everything after the fact.

Exciting to hear about the speed increases. Looking forward to it!