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


View All Comments

  • lan8 - Friday, January 18, 2013 - link

    Under the "Putting Fusion Drive's Performance into Perspective" heading, in the sentence: "In trying to come up with a use case than spanned both drives I und a relatively simple one." I believe that odd word "und" is probably a typo of the word "found". Reply
  • mschira - Friday, January 18, 2013 - link

    Yea the biggest nuisance is the lack of 256GB SSD option - either standalone or fusioned.
    Very very disappointing, and a bog step back from the older iMacs!
    You think the they improve on their SSD choices, right?

    You can't even get a 512 GB one - which is luxurious, but maybe justifiable.

    768SSD is a pretty insane size and price,

  • thaidrez - Saturday, January 19, 2013 - link

    Thank you Anand for this very timely and thorough review. Like many people who have a 1 or 3 fusion drive on order from Apple, this was very eye opening or confirming. The reality is that when you stress a fusion drive, it's going to show it's colors in comparison to a 100% SSD solution. I agree that 256GB would have been more appropriate for the flash portion of this fusion solution. As far as my solution, if this helps anyone contemplating this choice. I have nearly 700GB of Media (music, photos, etc) currently spread between an external HDD and a 500GB HDD internally mounted and my 240GB SSD from OWC usually has 127GB of free space on it while hosting my OSX (2011 Mini). Looking closely at that 110+/-GB of OS "stuff", 62GB User, 28GB Applications, 6.3GB Private, 6.2GB Library, 5.5GB System, and then it tapers off from there into the MB range with use at 776 and then bin at 6.2. While I won't be able to tell exactly what is going onto the fusion or not... it seems to me that a lot of bigger files like iDevice backups, old emails, big apps I never use like iMovie and most of CS will probably be moved by Core Services over to the HDD leaving a lot of space on the flash side of the fusion disk. I can imagine that a good majority of "stuff in that 110GB of data does not really get used day to day. What about my Media? Do I really want a 2012 iMac that has a HDD in it? No! But I got the 3TB fusion because I would rather take the 900$ dollars and invest into a 1TB SSD Thunderbolt solution to keep my media on. Something I can keep if I sell the iMac or put onto my MBA or MBP. So I will take my 700GB of media, put it onto my external SSD and let my system, email, downloads, and day to day stuff run off the 3TB fusion. I also have a lot of storage that I used to keep on my old mac pro that I can now move off my NAS and put back onto my fusion, knowing I won't touch it but once every few months or so. So I can't see how using a 3TB fusion would be any different than having a 768GB given my configuration and storage plan. In fact, I see the fusion with a 1TB external SSD as a superior solution. Good luck to all Reply
  • Richard Fairbanks - Saturday, January 19, 2013 - link

    Thanks, Anand, for yet another timely article!

    I do almost all my work in code (i.e. text) with few graphics. I want to ensure reliability in case of disk failure.

    Thus I am considering getting a 2012 Mac mini, opening it up, and adding a 256GB Samsung 840 Pro, in addition to the default 1TB HDD. (The 256GB capacity would allow me a 25+% spare area.) This is my ideal configuration for many reasons.

    If I partition the HDD to match the 256GB SSD (leaving ~750MB for random, non-critical data), is it possible to create a RAID 1 array between the SSD and the 256GB HDD partition? (Full backups are made daily.)

    In theory, this would allow all the array reads to come from the SSD for fastest response, and still maintain a mirrored HDD that could be booted from should the SSD fail. (If only the HDD partition could be a ZEVO ZFS format! ;-) )

    Thoughts? Thanks!!
  • NCM - Saturday, January 19, 2013 - link

    Richard asks: "If I partition the HDD to match the 256GB SSD (leaving ~750MB for random, non-critical data), is it possible to create a RAID 1 array between the SSD and the 256GB HDD partition?"

    That's an interesting question. I think the problem would be that there is no "master" disk in a RAID 1 array. Each slice is treated equally. You're hoping that read/write activity would be first served by the faster SSD, with the HD slice catching up in the background on its own time. I don't know that there's any evidence it would work like that, or, putting it another way, that anyone has written a RAID controller to make it happen that way.

    It would be interesting to try it out.

    We have some Mac Pro towers that I've set up SSD boot/application drives, but we rely on conventional Time Machine backups to an internal HD rather than a RAID mirror.
  • name99 - Saturday, January 19, 2013 - link

    It is possible to create a RAID 1 in the way you are thinking using AppleRAID.
    What you want to do is simple enough that you can do it in DIsk Utility using the GUI.
    If you really insist on going hardcore, hit Terminal and look at diskutil.
    And you can boot off such an AppleRAID system.

    HOWEVER I suspect you will be very unhappy with the results. A system like that can deliver snappy reads (because they'll mostly come from the SSD) but writes will be gated by the HD, and the system will frequently feel an HD system.

    It is ALSO possible that you won't even get the read speeds you imagine.
    When I used AppleRAID in this way (mirroring two HDs) a few years ago, it seemed to me that reads were also slower, and my assumption was that the system, assuming you cared primarily about data correctness (that's why you were mirroring rather than striping), performed both reads and compared the results before passing them up to the file system. Which suggests that your reads will ALSO be gated by the HD performance.

    I'm also not sure what problem you believe you are solving with this. SSD failures are simply not that common. You can protect against them using Time Machine. If you REALLY are scared, you can have Time Machine alternate between two (or more) different backup drives.

    It seems like a huge amount of pain to solve a problem that barely exists and that can be protected against much better in other ways.
  • name99 - Saturday, January 19, 2013 - link

    To add to what I said, the AppleRAID mirroring stuff DOES work in terms of reliability, in that if one disk dies, you can just pop it out, replace it, and have the other disk copy to it. But, as I said, you pay a substantial hit in performance for this privilege. Reply
  • cjb110 - Saturday, January 19, 2013 - link

    Gaming would have been an interesting 'use' case for the Fusion. When your playing you obviously want the fast access of SSD, but unless its your favourite game, it might not get used much and moved to the HDD.

    Also Games being much larger 'applications' would quickly fill the SSD if the Fusion just had a simple 'If App = On SSD" rule.
  • klaudyuxxx - Saturday, January 19, 2013 - link

    They reinvented the wheel. 128 GB flash + 1-3TB HDD fused into a single volume?! AKA HYBRID SAMSUNG HARD DRIVES Reply
  • NCM - Saturday, January 19, 2013 - link

    You really haven't bothered to read the article, have you? Or perhaps it's a reading comprehension issue. Reply

Log in

Don't have an account? Sign up now