Since Apple released their Fusion Drive, there have been a lot blogs focused on how to make a DIY (Do it Yourself) Fusion Drive for non-Fusion-Drive-equipped macs, but very few blogs showing a Fusion Drive’s performance in action.
Apple’s description of Fusion Drive really makes it sound fantastic: having frequently accessed files automatically stored on the SSD while infrequently used files are kept on the HDD. As Apple describes Fusion Drive, “…That’s because frequently used items are kept at the ready on speedy flash storage, while infrequently accessed items go to the hard drive. The file transfers take place in the background, so you won’t even notice.” The other half of the performance benefit is that Fusion Drives maintain a 4GB buffer space on the SSD. This means files written to the Fusion Drive are written to the SSD first and then migrated to the HDD when the drive is idle.
This automated file management really piqued my interest and there has been talk of the automated file transfer not working. I wanted to put it to the test personally and see this file transfer in action.
The two test computers
A 13″ late 2011 MacBook Pro (MacBookPro8,1), which had a 60GB OWC Electra 6G SSD installed in the main bay and a Toshiba 750GB 7200RPM hard drive installed in the optical bay via the OWC Data Doubler. A Fusion Drive was created between these two drives by following the steps provided in our earlier blog post OS X 10.8.3 Now Offers Fusion Drive Possibilities For Non-Fusion Drive Equipped Macs.
I also tested with a late 2012 Mac mini with a factory-configured Fusion Drive. In the lower bay of the Mac mini was an Apple SSD SM128E, which is a 6G SSD. The upper bay of the Mac mini had a 5400RPM Apple HTS541010A9E662 hard drive.
The testing procedures
I wanted to perform a test that was not overly complicated.
I took a 102.9MB MPEG 4 video file and copied it to the Fusion Drive. This copy occurred while only the OS and applications were installed, taking up about 15-20GB total space. This was to make sure the file was copied to the SSD. I then took a disk read benchmark of the video file using AJA System Test, with the video frame size settings at 1920×1080 10-bit (NOT 10-bit RGB).
We are able to clearly see speeds over 120MB/s, which is the average speed of 7200RPM Hard Drives. We know that we are working on the SSD because of these speeds.
The next stage of my testing was to use DiskTester, which is part of Diglloyd Tools, to fill the Fusion Drive until the SSD was completely full. I used a free demo of iStat Menus 4 to watch for the writes to transition from the SSD to the HDD. Even though Disk Utility only shows a single Fusion volume, iStat Menus shows the individual drives and their read/writes.
Once this transition occurred I duplicated the video file using the Finder ‘duplicate’ command, not by transferring the file again from my external. This duplicate file had the same name as the original with “HDD” added at the end of it. Once this duplication had completed I stopped DiskTester’s fill. Having copied the video file, I now had two copies of the file: one on the SSD and an identical file located on the HDD to provide me another baseline for benchmarking. I was able to see a clear difference in speed versus the earlier AJA benchmark.
Now that I had a baseline for SSD and HDD performance, the next task was to get the Fusion Drive to demote the video file from the SSD to the HDD. Fusion Drives maintain a 4GB buffer space on the SSD, so I used DiskTester’s ‘fill volume’ command to fill up the SSD until I saw the HDD take over on the writes. Once DiskTester was stopped, iStat Menu would show the 4GB buffer being rebuilt by having files written to the HDD from the SSD. Once the 4GB buffer was rebuilt, I would perform the AJA benchmark on the SSD video file to see whether it was still on the SSD or if it had been moved to the HDD. I repeated this step until I saw the SSD video file give HDD-level performance in AJA System Test.
I performed this test a total of three times. It is important to remember that the MacBook Pro has a 60GB SSD while the Mac mini has a 128GB SSD. The MacBook Pro Fusion Drive demoted the SSD file once the total space used was 100GB in the first test, 120GB in the second test, and 115GB in the third test. The Mac mini demoted the file at 250GB in the first test, a puzzling 138GB in the second test, and 264GB in the third test.
Once the file had been demoted, I attempted to get the file to be promoted back to the SSD. Apple says that frequently accessed files are kept on the SSD while infrequently used files are kept on the HDD. My plan to get my video file to be promoted back onto the SSD was to simply loop the video file, which would be constantly reading the file from the HDD. For the first round of testing I looped the video file in QuickTime for 20 hours. I then stopped the video file and let the computer sit idle for an hour with sleep disabled, but no promotion occurred. I then put the computer to sleep for two hours, then woke it and let it sit idle for another hour, but still no promotion had occurred. Lastly, I shut the computer off for an hour then rebooted it and left it idle for an hour. Still no promotion!
On the second round of testing I began by deleting the DiskTester fill folders from the Fusion Drive. This reduced the total used space on the Fusion Drive down to 15-20GB. I again looped the video file for 20 hours and performed the same three tests of idleness, sleep, and shutdown to instigate the file to be promoted to the Fusion drive. No luck!
On the third round of testing I deleted the DiskTester fill folders to make sure the SSD had plenty of free space. I looped the same video file both in VLC Player and QuickTime for about 60 hours. I once again performed the same 3 tests of idleness, sleep, and shutdown. Still no promotion! AJA was producing the same 60-80MB/s benchmarks.
Conclusion:
Sadly, on both the DIY Fusion Drive of the MacBook Pro and the factory original Fusion Drive of the Mac mini I could not get my video file to be promoted back onto the SSD! My overall experience with Fusion Drive was good. While I was using both computers they performed exactly as if they were booted from a standalone SSD. I firmly agree that Fusion Drive offers some great features for average users, however prosumers and professionals should stick with independent SSDs and HDDs for maximum performance and flexibility.
Fusion Drive is nothing different from Hot File Adaptive Clustering. More than 20MB file will be ignored.
From AnandTech’s excellent article, “With Fusion Drive enabled, Apple creates a 4GB write buffer on the NAND itself. Any writes that come in to the array hit this 4GB buffer first, which acts as sort of a write cache. Any additional writes cause the buffer to spill over to the hard disk.” http://www.anandtech.com/show/6406/understanding-apples-fusion-drive
It was suggested by Cavenewt on 9/27 (in response to T Whitmer post from 9/14) that a Preference Pane option to adjust cache-size would be a Nice-To-Have option…does anyone know if it is possible to increase the size of the default 4GB write buffer on a Fusion Drive from terminal?
In my initial research on this, I found no way of adjusting the cache size. We will be releasing an awesome new software called Transwarp that will be a great solution to this issue. You can read more details about it here
How do the hybrid drives you sell compare to the fusion drive? Also, have you considered a startup comparison between the hybrid drives, the OWC SSDs and the stock hard drives? I’m considering a hybrid drive for my 2011 MacBook Pro, but don’t know how much speed increase I should expect. Just a thought.
Hybrid Drives are a nice middle ground between HDDs and SSDs, however the performance is still limited. Most Hybrid drives only have 4gb-8gb of flash storage.
The concept of Hybrid drives is very similar to a Fusion drive however there are differences. Fusion drives will give overall better performance because of the larger SSD storage space. Both Hybrid and Fusion drives are reported to promote commonly used files to the SSD storage, however as this blog shows we could not prove this to be the case.
Have you tried installing an app to the HD and then launching and quitting the app 10 times to see if it gets moved to the SSD?
That is something that I wanted to do, however AJA System Test is unable to accurately test Application files.
How about approaching it the other way? Locate which files (preferences, applications, application support, data) are located on the SSD and which are located on the HD. By making these two lists you will have the result of the Apple algorithm which chooses which files to promote. Then you should gain insight into how it is choosing to do that.
Fusion drive apparently operates at the block level and not individual file level. CoreStorage is a full layer under the HFS+ filesystem.
How long in minutes/what bit rate is the video file? If the file covers 10 minutes of video, then looping the video means you touch an individual 128Kb block once every 10 minutes and you’ve done so in linear order, perhaps the underlying heuristic behind block promotion is combining those two facts and it does not rise to the level of “frequent access”.
The video file is 3 minutes and 42 seconds long with a data rate of 3.87Mbps. I wanted a smaller video file for the very reason you mention, a smaller file should be accessed more frequently then a longer video clip.
It depends on what the OS uses as the criterion for “frequent” use, which I have not seen published anywhere. It may be that the OS uses file “opens”/”close” actions, not bytes read. The video loop would exercise reading, but would not do repeated open/close. If I were doing the OS, i would use open counts, instead of bytes read in last N ticks.
This is certainly a valid point. The OS could well base it off of the open/close count rather then the access time.
I wonder if the looping might also have been a problem because it isn’t a separate “open” of the file. It also may be that the loop didn’t count as “reading” the file over and over because the data was just stored in RAM as it looped over and over. Perhaps there is a test you could devise that would test opening and closing a file a hundred times or something like that, although the RAM caching might come into play there as well. Using a script to “open “, wait a select length of time for it to read all of the data, and then “kill ” over and over might work, although it doesn’t get around the RAM caching issue. I guess alternating between two files that are slightly larger than 50% of the RAM would help reduce RAM caching, but with 4 GB and 8 GB, respectively, it adds a bit of time to the test if you want the file to be read tens or hundreds of times.
It seems the easiest stopgap measure for Apple would be to just release a System Preferences pane that allows a used to SSD-whitelist and SSD-blacklist select files. The user would be able to select files that they require the SSD to store on the flash drive as well as files that they require are NOT stored on the flash drive (i.e., that they want stored on the HDD). While this wouldn’t directly affect any problems with promotion and demotion, it would allow users to have many of the benefits of the two-drive system with a seamless Apple interface. Some users already manage their SSD and HDD manually and move various parts of their Home folder to the SSD; however, this is an intermediate-level task and involves messing around with symlinks (I know the entire Home folder can be moved, but that doesn’t provide the same benefits of say, splitting your Caches to the SSD and your huge Video library to the HDD).
In addition to whitelisting/blacklisting, it seems to me an obvious idea is to make the size of the cache an option too (i.e. 8gb, 16gb in addition to 4gb).
How do you explain the original jolly jinx tests that clearly show file promotion DOES occur? Those tests are extremely easy to replicate, and I’ve confirmed files on my system are promoted.
Possible explanations for your results:
1. The speed at which the video was read. An app playing back a video file obviously won’t read it from the HD at max speeds, only at playback speed. Possibly fusion only promotes files that it determines could benefit from being faster to read.
2. The video file was read once and kept in RAM. I don’t see any mention of flushing the memory cache in your article.
3. It’s been speculated that Fusion actually works at byte level, not file level. So it may be that the first part of your video file is on the SSD, and the rest is on the HDD.
In short, maybe Fusion is smarter than you are expecting it to be. And jolly jinx’s tests seem to be much more rigid and control for more variables, so until someone can show me how his tests showing file promotion might be flawed, I’m going to continue to trust them and say Fusion works as advertised.
When I first began looking in to doing this blog I took a close look at Jolly Jinx’s tests. I did try to replicate his test in which he proves promotion occurs, however on both computers his tests failed to run. That is not to discount his work, he was testing on 10.8.2, while my testing was performed on 10.8.4.
To address your points:
This thought crossed my mind and is completely understandable as a cause of not seeing any promotion occur if Fusion’s management is that smart.
I was able to see a steady read stream coming from the drive during the loop playback. So the file was consistently being accessed and read from the drive.
I do agree that Fusion does not work at the file level. During one of the demotions of the file, AJA showed HDD speeds for the first quarter of the video file and SSD speeds for the remainder.
I had the same thought on the speed of access. If you’re just playing a video on a loop, the HDD would easily be able to keep up with that, and keeping that data on the SSD would just be a waste. That said, since Fusion operates at the block level, you can still keep the file header itself on the SSD to allow for quick reads of the contents of ~/Movies.
Now, if it’s a video file you regularly load “in entirety,” like for editing or something like that, then it may become beneficial for the system to move it to the SSD, at least until next week when you start a new project and it demotes the now “unused” data to make room for the stuff you’re actively working with.
Can you get it to re-promote text files and that sort of thing? If so, then it seems logical to think it has a more comprehensive view of “access” than simple frequency, which is good.
You make a great point. The reason I stuck with video files is because of their size and ability to benchmark with AJA System Test. I experimented with text files and zip files of folders, however AJA was not able to provide benchmarks that appeared to be accurate.
Looping might be the problem. Running that movie over and over again might not trip OS X’s counter.
It’s like the supermarket express lane’s 15 item limit. Ten bars of Ivory soap is one item not ten. Ten loops of the same movie might be one use not ten.
That thought did cross my mind when I first began the testing. The file was being continually read from the drive though. The promotion and demotion are suppose to be on the block level not the file level as well. I was able to see block level demotion on the file.
One thing I do not see in any testing review is the statement from Apple that the system knows the difference between a system read of a file and the users. Could it be that your looping was determined to be a system call?
This was an interesting writeup.
I don’t remember Apple indicating promotiion would occur. Frequently used files might stay on the SSD and not be moved to the Hard Drive. This would still satisfy Apple claim that frequently used files are kept on the SSD. I have created the Fusion drive on a 2009 Mac Pro and love the results. Makes the machine feel new.
They do actually state it here: http://support.apple.com/kb/HT5446?viewlocale=en_US&locale=en_US
“Presented as a single volume on your Mac, Fusion Drive automatically and dynamically moves frequently used files to Flash storage for quicker access, while infrequently used items move to the hard disk.”
Thanks for the Reply.
Yes the statement seems to indicate the source is Hard Drive to Flash, but note the words Hard Drive do not appear in the statement. Not sure if this was intentional or what, but it makes the statement vague.