Fusion Drive: Under the Hood

I took the 27-inch iMac out of the box and immediately went to work on Fusion Drive testing. I started filling the drive with a 128KB sequential write pass (queue depth of 1). Using iStat Menus 4 to actively monitor the state of both drives I noticed that only the SSD was receiving this initial write pass. The SSD was being written to at 322MB/s with no activity on the HDD.

After 117GB of writes the HDD took over, at speeds of roughly 133 - 175MB/s to begin with.

The initial test just confirmed that Fusion Drive is indeed spanning the capacity of both drives. The first 117GB ended up on the SSD and the remaining 1TB of writes went directly to the HDD. It also gave me the first indication of priority: Fusion Drive will try to write to the SSD first, assuming there's sufficient free space (more on this later).

Next up, I wanted to test random IO as this is ultimately where SSDs trump hard drives in performance and typically where SSD caching or hybrid hard drives fall short. I first tried the worst case scenario, a random write test that would span all logical block addresses. Given that the total capacity of the Fusion Drive is 1.1TB, how this test was handled would tell me a lot about how Apple maps LBAs (Logical Block Addresses) between the two drives.

The results were interesting and not unexpected. Both the SSD and HDD saw write activity, with more IOs obviously hitting the hard drive (which consumes a larger percentage of all available LBAs). The average 4KB (QD16) random write performance was around 0.51MB/s, it was constrained by the hard drive portion of the Fusion Drive setup.

After stopping the random write task however, there was immediate moving of data between the HDD and SSD. Since the LBAs were chosen at random, it's possible that some (identical or just spatially similar) addresses were picked more than once and those blocks were immediately marked for promotion to the SSD. This was my first experience with the Fusion Drive actively moving data between drives.

A full span random write test is a bit unfair for a consumer SSD, much less a hybrid SSD/HDD setup with roughly an 1:8 ratio of LBAs. To get an idea of how good Fusion Drive is at dealing with random IO I constrained the random write test to the first 8GB of LBAs.

The resulting performance was quite different. For the first pass, average performance was roughly 7 - 9MB/s, with most of the IO hitting the SSD and a smaller portion hitting the hard drive. After the 3 minute test, I waited while the Fusion Drive moved data around, then repeated it. For the second run, total performance jumped up to 21.9MB/s with more of the IO being moved to the SSD although the hard drive was still seeing writes.


In the shot to the left, most random writes are hitting the SSD but some are still going to the HDD, after some moving of data and remapping of LBAs nearly all random writes go to the SSD and performance is much higher

On the third attempt, nearly all random writes went to the SSD with performance peaking at 98MB/s and dropping to a minimum of 35MB/s as the SSD got more fragmented. This told me that Apple seems to dynamically map LBAs to the SSD based on frequency of access, a very pro-active approach to ensuring high performance. Ultimately this is a big difference between standard SSD caches and what Fusion Drive appears to be doing. Most SSD caches seem to work based on frequency of read access, whereas Fusion Drive appears to (at least partially) take into account what LBAs are frequently targeted for writes and mapping those to the SSD.

Note that subsequent random write tests produced very different results. As I filled up the Fusion Drive with more data and applications (~80% full of real data and applications), I never saw random write performance reach these levels again. After each run I'd see short periods where data would move around, but random IO hit the Fusion Drive in around an 7:1 ratio of HDD to SSD accesses. Given the capacity difference between the drives, this ratio makes a lot of sense. If you have a workload that is composed of a lot of random writes that span all available space, Fusion Drive isn't for you. Given that most such workloads are confined to the enterprise space, that shouldn't really be a concern here.

Meet Fusion Drive Management Granularity
POST A COMMENT

128 Comments

View All Comments

  • qzyxya - Saturday, February 16, 2013 - link

    Is there a way to get this for windows? I'd love to have this. Like buy a 128gb ssd and use it for caching with my 3tb samsung 7200.14 hard drive Reply
  • navss - Friday, April 26, 2013 - link

    Great read, personally I like the thought of getting the Mini with the 256GB SSD + adding another 2-3TB HDD for relatively cheap and using that terminal command to set up the Fusion Drive.

    Also Anand, if you're going to be taking screenshots of programs on the Mac: Cmd+Shift+4+(hover over the program you want a screenshot of) then hit the spacebar, you'll get much nicer screenshots.
    Reply
  • Mortenling - Wednesday, May 15, 2013 - link

    When (not if) the fusion drive breaks down it is almost impossible to replace it in the new iMac's. But will the SSD part of the fusion drive still work if its only the normal HD part there is broken ?
    I'm not sure if i should go for the fusion drive or the 256 SSD in a new iMac. I need to fill it up with music applications and i'm not sure if there is space enough in the 256 SSD but I'm sure it will last longer. I don't think you can create a fusion drive with an external HD but is it possible to create some sort of RAID with an external SSD to give me a total 512 SSD HD. At the moment I cant afford the internal 512 SSD but that I think would be the best solution. I need some advice so please help me out here :-)
    Reply
  • thecartman - Thursday, May 16, 2013 - link

    Do you think it is worth upgrading the harddrive to a fusion drive when i use an iMac 27" for homework, browsing and image editing with editing? Reply
  • austoonz - Tuesday, May 28, 2013 - link

    I've been running a Crucial M4 240GB SSD in my 2007 Macbook Pro for years loving the SSD speed. Then in 2011 I purchased a top-of-the-line 27" iMac with only the 1TB HDD with plans to purchase a ThunderBolt SSD to boot from. However, ThunderBolt SSD's still haven't hit a remotely reasonable pricepoint, so I've been running a 120GB SSD in a FW800 case for a year or so now, and even that was SO MUCH FASTER than using the internal HDD, it seems even adding on FW latency it was still massively faster for everyday use, but I got annoying with using symlinks and folders just being a little strange in Finder...

    So I finally got round to changing things... the 128GB boot SSD on the iMac has been moved into the MBP, and the 240GB SSD (from 2008...) was installed inside the iMac and I setup a Fusion Drive with that and the 1TB.

    I'm definitely impressed... storage tiering for the consumer that actually works, and works very, very well. This is exactly what I'm after out of a consumer product, excellent performance for 90%+ of my usage, but still with the capacity for my music and iPhoto libraries, most of which are never seen or accessed.

    Thanks Anand for doing this review though - I really like reading reviews like this showing real-life usage rather than simply benchmarks.
    Reply
  • 9comp - Thursday, May 30, 2013 - link

    Hey I didn't understand the write method.

    When you write 6GB to the array, the first 4gb store on the ssd drive and the left 2gb to sata

    or

    little files 1mg-3.99gb are automatically store to the ssd and bigger files like HD movies (over than 4gb) are automatically store on the sata?!

    Please explain...
    Thanks
    Hagy
    Reply
  • ajcarr - Tuesday, September 17, 2013 - link

    I took my mid-2010 15" Core i7 MacBook Pro and replaced the optical drive with a 750 GB WD Scorpio Black (using an OWC DataDoubler), and the existing HDD with a 256 GB OCZ Vertex Plus R2 (no meed for anything faster: the machine only has SATA 2), and issued the command line incantations needed to create a fusion drive. The performance gain was incredible: in particular, Microsloth Word launched at about the same speed as on my mid-2012 13" MacBook Air. Repeated the operation with a friend's Core i5 MacBook Pro of the same vintage, but with a Seagate HDD this time, still using the OCZ (it was cheap, and 'good enough'), and again there was a huge performance boost. Basically, in both cases, the CPU is more than adequate for anything routine, three years after manufacture, but the fusion drive upgrades have given us perhaps *another* three years of life for our machines. I fully expect to receive flak for using OCZ drives, but after a year, neither of us has seen problems (possibly because I used slow, commodity OCZ devices that were mature). Reply
  • p4madeus - Thursday, September 25, 2014 - link

    I rolled my own Fusion drive in my 2012 2.3ghz quad i7 Mini as well, it only had a 1tb 5400rpm HDD stock in it. I had recently just outright replaced the stock 750gb 7200rpm HD in my 2012 MacBook Pro with a 1tb Samsung EVO (I'll keep the optical drive, for now) so I had this better 7200rpm drive laying around. So I got the kit for the Mini and replaced the stock 1tb 5400rpm drive with the 750gb 7200rpm drive from my MBP and added a 480gb Crucial M550, end result is a 1.22TB fusion drive with a good 16/25 SSD/HDD ratio...it screams...not quite as much as the straight 1tb SSD in my MBP, but is night and day compared to the stock 5400rpm 1tb HDD. Reply

Log in

Don't have an account? Sign up now