苹果Fusion Drive混合磁盘方案深度解析

时间:2013-01-23来源:网络

用128KB的文件块在HDD和SSD之间移动数据,苹果可以在写入SSD的时候进行部分碎片整理。尽管Fusion Drive 的所有写入首选目的地都是SSD(可以包括小于128KB的文件块,随机和伪随机写入),任何从HDD到SSD的迁移却都是大块顺序写入的,如果驱动器中有大量碎片,这就会触发垃圾块回收过程。SSD的性能肯定会随着时间的推移降低,但是这个过程有助于保持它的性能,因为SSD几乎一直都是在充满的状况下运行的,而且它会接收各种不相关的写入。我前面提到过,我希望苹果把更多的PM830 NAND空间预留为备用区。我怀疑苹果没有预留更大的备用区是出于成本方面的考虑。

应用体验

在现实使用中,Fusion Drive能给我们带来怎样的体验呢?简单说来,它的效果出乎意料的好。我之前使用过的SSD缓存方案全部都更像是HDD而不是SSD,不过苹果公司的Fusion Drive体验则是几乎处于HDD和SSD的正中间。

它在安装几乎所有程序时,都是先用SSD,因此Fusion Drive感觉真的像SSD。不仅是在安装应用程序的时候,复制任何东西时,一般也是先去SSD。似乎到了4GB之后,它才开始用HDD。不过稍加努力,你可以让Fusion Drive仅在1 到 2GB之后就开始写入到HDD。我用Iometer创建了一个顺序测试文件,监测Fusion Drive什么时候停止将文件写入到SSD,在这时停止这个进程,重新命名这个文件,并再次开始创建文件。结果如下图:

苹果iMac混合磁盘方案分析

可以看到,如果你的速度够快,你可以在低于2GB的时候就让HDD接管写操作。我不知道这是不是SSD上的可用空间量,但很有可能就是这样,因为显示121GB的SSD又不充分使用它实在说不通。

在大多数时候,当你不那么积极地写入SSD时,Fusion Drive可以保持至少4GB的SSD可用空间。需要注意的是:当你第一次使用它时,Fusion Drive大部分都是空的,你写入的几乎任何东西,无论大小,都会直接进入SSD。然而,当容量承受一定压力时,苹果就会改变方法:让任何文件最多写入4GB到SSD,其余部分则放到HDD上。

通过安装苹果的OS X开发者工具以及Xcode本身,我证实了这一点。后者接近于4GB大,但默认状况下,它的很大部分都到了SSD上。

应用程序生成的数据也是如此。我用Xcode创建Adium,一个682MB的项目,整个编译过程都发生在SSD ——机械硬盘一直都没有活动。我试图创建一个更大的项目,近2GB的Firefox。这时出现了短暂的HDD活动,但绝大多数活动都是在SSD上。

我复制了一个很大的视频文件(>10GB)到这台iMac上,现在我把它复制到一个新的位置上,并密切注意Fusion Drive的动向。最初的2GB是从SSD传输到SSD,接下来的2GB是从HDD读取,写入SSD。大约4GB被复制之后,源驱动器和目标驱动器都变成了HDD。在我看来,正确的做法应该是默认情况下把所有的大文件都放入HDD ,除非它们被频繁访问。苹果的做法似乎是一个合理的妥协,但它把文件块放入SSD的方式比我以为的更加积极。

我重复了这个测试,用另一个我从来没有访问过的视频文件,得到的结果完全不同。整个文件都存在HDD 上。我又重复一次这个测试,用我访问了好几次的iPhoto图库,令我惊讶的是,这个iPhoto图库的大部分都在HDD上,但也有一些少许读取来自SSD。但在这两种情况下,复制的目标驱动器当然都是SSD。

我Anandtech文件夹的大小超过32GB,含有文字、照片、演示文稿、基准测试结果,以及我做过的几乎所有评测。虽然这个文件夹非常重要,但它其中大部分都没有经常被访问。我在复制这个文件夹时,发现几乎全在HDD上。38GB的“我的文档”文件夹也是如此,这个文件夹中的大部分也是未读过的。

另一方面,应用程序几乎总是放在SSD上。

之前我经常手动把操作系统和应用程序放在SSD,大的媒体文件放在HDD上,Fusion Drive把这个过程自动化了,而且效果还相当不错。我手动整理资料和Fusion Drive自动化之间唯一的区别就是,我把“我的文档”和Anandtech文件夹默认放在SSD。这样做不只存在性能方面的考虑,也是为了可靠性,因为硬盘比SSD更容易出毛病。

Fusion Drive的性能

对Fusion Drive进行基准测试有点困难,因为它总是写入到SSD。如果你不把Fusion Drive填满,你写入的大量数据可能全部会到SSD上。如果你确实填满了它,但测试的数据集4GB,那你测量的仍然是SSD性能。

我想出了一个相对简单的用例,可以涵盖两个驱动器。现在我的Fusion Drive已经填充了70%,这意味着SSD的容量快要到顶了(除了其4GB的缓冲)。我把含有703张照片的iPhoto图库导出为TIFF格式的照片。生成的文件相当大,当达到297张照片时,4GB的SSD写入缓冲区已经满了,所有后续导出的照片都到了HDD 。我给这个过程计时,然后把它跟iMac上的一个HDD分区做对比,也跟通过USB 3.0连接的一个三星PM830 SSD对比。结果有点偏向于纯HDD 配置,因为这个写操作基本上是顺序的:

苹果iMac混合磁盘方案分析

上图准确地总结了我的Fusion Drive 体验:它差不多处于HDD 和SSD的正中间。在这个测试中,速度提升不是很大,但这主要是因为我们使用了相对低的队列深度顺序传输。对于比较随机的工作负载,Fusion Drive和HDD差距将拉大。可惜的是,我无法找到好的应用程序用例来生成4GB +的伪随机数据,使其可重复性高到可以进行基准比较的程度。

如果我一直对Fusion Drive进行非常大的顺序写操作(一个文件就高达260GB),最后它会傻掉,不再迁移数据到SSD了,除非你重新启动机器。我怀疑这个bug不是由正常的自动测试触发的,但它确实提供了一个有趣的状况,我可以利用它来开展测试。

启动我频繁使用的iMac预装应用程序,它们仍在SSD上,但一些后来安装的程序却不是这样。特别是Photoshop CS6,它部分在SSD上,部分在HDD上。对于工作负载太大,SSD无法单独处理时的Fusion Drive 伪随机读取性能,这是一个很好的基准测试。我测试Photoshop在Fusion Drive上的启动时间,跟在纯HDD 分区上,以及通过USB 3.0连接的PM830上的情况相比较。比较结果再次反映了我的体验:

1 2 3

关键词: Fusion Drive 苹果 混合磁盘

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版