Management Granularity

Much of Apple’s marketing on Fusion Drive talks about moving data at the file and application level, but in reality data can be moved between the SSD and HDD portions in 128KB blocks.

Ars actually confirmed this a while ago, but I wanted to see for myself. Using fs_usage I got to see the inner workings of Apple's Fusion Drive. Data is moved between drives in 128KB blocks, likely determined by frequency of use of those blocks. Since client workloads tend to be fairly sequential (or pseudo-random at worst) in nature, it's a safe bet that if you're accessing a single LBA within a 128KB block that you're actually going to be accessing more LBAs in the same space. The migration process seems to happen mostly during idle periods, although I have seen some movement between drives during light IO.

What’s very interesting is just how quickly the migration is triggered after a transfer occurs. As soon as file copy/creation, application launch or other IO activity completes, there’s immediate back and forth between the SSD and HDD. As you fill up the Fusion Drive, the amount of data moved between the SSD and HDD shrinks considerably. Over time I suspect this is what should happen. Infrequently accessed data should settle on the hard drive and what really matters will stay on the SSD. Apple being less aggressive about evicting data from the SSD as the Fusion Drive fills up makes sense.

The migration process itself is pretty simple with data being marked for promotion/demotion, it being physically copied to the new storage device and only then is it moved. In the event of a power failure during migration there shouldn't be any data loss caused by the Fusion Drive, it looks like only after two copies of the 128KB block are in place is the source block removed. Apple told me as much last year, but it's good to see it for myself.

By moving data in 128KB blocks between the HDD and SSD, Apple enjoys the side benefit of partially defragmenting the SSD with all writes to it. Even though the Fusion Drive will prefer the SSD for all incoming writes (which can include smaller than 128KB, potentially random/pseudo-random writes), any migration from the HDD to the SSD happens as large block sequential writes, which will trigger a garbage collection/block recycling routine in cases of a heavily fragmented drive. Performance of the SSD can definitely degrade over time, but this helps keep it higher than it would otherwise given that the SSD is almost always running at full capacity and the recipient of all sorts of unrelated writes. As I mentioned earlier, I would’ve preferred a controller with more consistent IO latency or for Apple to set aside even more of the PM830’s NAND as spare area. I suspect cost was the deciding factor in sticking with the standard amount of overprovisioning.

Fusion Drive: Under the Hood The Application Experience
Comments Locked

127 Comments

View All Comments

  • guidryp - Friday, January 18, 2013 - link

    These claims about the effort in setting up SSD/HD combo are getting quite silly.

    There is essentially ZERO time difference into setting up SSD/HD partitioned combo vs Fusion. Your payback would be on Day 1.

    The only effort is simply deciding which partition to load new material on. That decision takes what? Microseconds.

    It is as simple as install OS/Apps on SSD, Media HD. Vs Install OS/Apps/Media on Fusion. The effort is essentially the same.

    But that simple manual partition will perform better, create less system thrashing and less wear on all your drives.
  • Zink - Friday, January 18, 2013 - link

    But then you end up with a SSD filled up with no longer relevant data and you need to figure out how to free up space again. A combo drive takes care of that for you and keeps the SSD filled to the brim with most of the data that gets used. You can download any games, start any big video editing project, and know that you are getting 50%-100% of the benefit of the SSD without worrying about managing segregated data. With a segregated setup you end up playing games from the HDD or editing video files that are on the HDD and sometimes see 0% of the benefit of the SSD. Fusion seems like the future.
  • KitsuneKnight - Friday, January 18, 2013 - link

    If you can divide your data up as OS, Apps, and Media, and OS + Apps fits on the SSD, then sure, it's not too bad.

    Unfortunately, my Steam library is approximately 250 GBs... That alone would fill up most SSDs out there. And that's not even counting all my non-Steam games, which would help push most any SSD towards being totally full. If I'd bought too many recent games, it'd likely be quite a bit larger than that (AAA games seem to be ranging from 10-30 GBs these days).

    Unless you sprung for a 500 GB SSD (which aren't exactly cheap, even today), you'd be having quite a pickle on your hands. Likely having to move most of the library manually to the HDD (which is a bit of a pain with Steam). Which means it's suddenly much more complicated than OS/Apps on SSD, and Media on the HDD. Especially since SSDs massively improve the load time of large games (unlike the impact it has on media).

    And then there's the other examples I've already given: the artist I know that works on absurdly massive PSDs, and has many terabytes of them (what's the point of a SSD if it doesn't benefit your primary usage of a computer?), as well as my situation with VMs on my non-gaming machine (which actually has a SSD + HDD setup right now). A lot of people could probably do the divide you're talking about, but likely even more people could fit all their data in either a 128 or 256 GB SSD.
  • name99 - Friday, January 18, 2013 - link

    Then WTF are you complaining about?
    You can still buy an HD only mac mini and add your own USB3 SSD as boot disk.
    Or you can buy a fusion mac mini and split the two drives apart.

    It's not enough that things can be done your way, you ALSO want everyone else, who wants a simple solution, to have to suffer?
  • Mr Perfect - Friday, January 18, 2013 - link

    Intel SRT is useful for everyone, there's no reason to look down on it. Could I sit there and manually move files back and forth between the SSD and HD? Sure. But why? Seriously, I have better things to do with my time then move around the program of the week between storage mediums. Last week I was using Metro 2033, this week is World of Tanks. Next week I might finish one of those run throughs of D:HR or Portal 2 that I left hanging. SRT takes care of all of that. This is 2013, an enthusiast class workstation should damn well be able to handle something as simple as caching, and it can. Enterprise class servers have been doing it for some time, so why isn't it good enough for a gameing rig?

    My one complaint with RST is the cache size limit. Why would Intel even impose a limit?
  • EnzoFX - Saturday, January 19, 2013 - link

    You're framing it in your own way so that only your solution works. Fail. Unnecessary stressing of the SSD? The better argument for most people would be putting that SSD to good use. Not trying to NOT use it.

    It further isn't simply about putting the files where they go, and then be done with. Files are changed, updated, and if you're on multiple drives, copied back and forth. Some people don't want to deal with that. Actually, no one should want to do deal with that. There are only barriers with every person having their own thresholds to good solutions. Is it that hard to understand?
  • lyeoh - Saturday, January 19, 2013 - link

    Do you manually control the data in the 1st, 2nd level cache in your CPU too? There are plenty of decent caching algorithms created by very smart people. If the algorithms were that bad your CPU would be running very slow.

    There should be no need for you to WASTE TIME moving crap around from drive to drive. The OS can know how often you use stuff, and whether the accesses are sequential, random, slow.

    If Windows 8's Storage Spaces was more like Fusion Drive out of the box (or better even), us geeks would be more impressed by Windows 8.
  • Feldur - Monday, June 29, 2015 - link

    Having designed and built both computers and operating systems, I qualify as not naive. I'm interested in your assertion, therefore, that because I prefer letting the Fusion drive do the work that I must be lazy. You're making a judgement about how I should spend my time - that it's the best investment of my time to shuffle files about (non-trivial if I want the level of granularity a Fusion drive can offer, too) versus developing software or playing with my dog. It's interesting that you think you know me that well, regardless of the fact you're dead wrong.

    How do you reconcile that?
  • StormyParis - Friday, January 18, 2013 - link

    The device is technically nice, however the price is wayyy too expensiveat around $450 for 128GB+2TB:

    Apple's 128GB SSD+ 2TB HDD "Fusions drive" is about $450 ($400 as an upgrade)

    A regular 256 GB SSD is $170
    A regular 3TB HD is $150.
    regular equivalent for Apple's price: 256 SSD+ 2x3TB HDD = $470

    You can get twice the SSD storage, and 3 times the HDD storage, for about the Apple price. This will take up more physical space, but also offer you way more storage space, both on the SSD side (plenty of space for your OS, apps, and live data files) and HDD space (3TB + 3TB backup, or 6TB JBOD for your archives and media)
  • jeffkibuule - Friday, January 18, 2013 - link

    Hence the DIY route.

Log in

Don't have an account? Sign up now