麦金塔的 SSD 性能和 OS X 中的 TRIM

SSD 的性价比这两年一直在提升,想在 Macbook Pro 上使用的 SSD 的用户也越来越多了。但买前做功课的人们大概都清楚,目前只有 Windows 7 支持 TRIM 命令,在 PC 上安装 Intel RST 9.6 后所带来的性能提升许多人应有体会。

苹果从未明示 Mac OS X 能否支持 TRIM 命令,而通过最近的系统更新,用户可以在 OS X 的系统配置中查看本机的 SSD 是否支持 TRIM,此举也引来人们的许多遐想……无论如何,理论上,操作系统支持 TRIM 显然比不支持的好,但似乎,苹果历来总有自家的「独门绝活」,还是看看 Bit-Tech 的评测是怎么说的吧。

TRIM 和 SSD 的性能

过去一年来,我们对 SSD 技术的认识进展神速。在理论上,固态硬盘相对传统硬盘是彻底的改进。在获取数据的时候,不再需要等待马达驱动的盘片旋转到位:它可以瞬间从一堆记忆体中抓取数据。硬盘工作时发出的噪音、声响和振动不复存在,寻道产生的顿挫感也消失不见,取而代之的是平顺、安静的持续数据传输。

从理论上说。如果你读过我们之前的文章:「为何 SSD 需要 TRIM」,你会知道 SSD 删除数据的方式可能导致严重的后果:确切地说,性能持续而且巨大的下降。

我们曾这么解释:固态硬盘由微小的单元组成。想象一下,一个全新的SSD,有一块干净的,容量为 20 KB 大小的单元。现在,驱动器向这个单元以最大的写入速度写入 2 个 10KB 的文件。如果接着你又删除了其中的一个 10KB 文件,那么 SSD 只会简单地将这个「删去」的 10 KB 文件标注为可以写入的区域。这和硬盘的工作原理非常相似,和硬盘一样,它不会真正删除的已经废止的物理数据。

当新数据到来时,硬盘可以立即写入那 10KB 的空间,而 SSD 和硬盘不同,当 SSD 准备向这 10KB 的「空白」区域重新写入数据时,为了维持原有的 10KB 数据,它必须先将这些数据读入缓存或控制器,接着将这 20KB 空间清除干净,然后再回写全部的有效数据,包括新旧数据。虽然重写数据对硬盘驱动器的性能影响不大,但这种「读取-修改-写入」的过程会严重的影响 SSD 的性能,特别是与全新的 SSD 相比时,而这也是重度使用过的 SSD 性能下降的主要原因。

(由于控制器的工作方式,SSD 会遭致巨大的性能下降)

讽刺的是,对于这种理论上所有单元都具备相同读写速度的设备,SSD 还会受到碎片的影响,而这种连锁反应会弄脏 NAND 闪存。当大量的单元被垃圾数据填满,意味着在写入文件时,该驱动器需要执行更多的「读取-修改-写入」循环,导致进一步的性能下降。碎片过多的驱动器还会被迫将文件放到更多的单元里,当读取数据时,驱动器不得不访问所有零散的单元,因而降低了整体的读取速度。

这标志着显著的性能下降。我们测试了一系列全新的,以及对应的经过重度使用的 SSD。通过一次拷贝 100GB 的混合文件(系统文件、游戏安装、MP3 和大容量视频)到 SSD,之后再删除这些文件,重复该过程 10 次来模拟重度使用后的情况。总计向 SSD 写入 1TB 的数据。

然后,我们开始对比性能,结果令人吃惊。不同的驱动器的性能变化各有不同,写入速度的最高降幅达到了 72%。随机写入速度受到影响的特别严重 — 以 Corsair P128 为例,4KB 文件的写入速度从刚开始的 66MB/秒 降到了只剩 23MB/秒。

当然也有解决的办法,可以通过使用 TRIM 命令。该命令能够重组写入数据,并在系统执行文件删除的动作后彻底擦除垃圾数据(由删除命令、清空回收站或格式化硬盘的动作触发 )。这意味着当驱动器再次向该单元写入数据时,等待它的是干干净净的 NAND 空间。这保证了最佳的写入性能,但它需要操作系统和 SSD 固件的双重支持。Windows 7 已内置 TRIM 支持,从我们的测试中看,当启动该命令后,性能出现了巨大的差别。在 4KB 随机写入测试中,P128 在支持 TRIM 的固件下 4KB 文件的写入速度提升至 51.7 MB/秒。

但是所有这一切测试均在 PC 上以 Windows 7 完成,目前微软的操作系统中只有 Windows 7 支持 TRIM。当我们完成了 Windows 平台的测试后,便立即想知道 Mac OS X 上 SSD 的性能如何。

在 OS X 上测试 SSD 的性能

2008 年 Macbook Air 发布之时,苹果为其提供了可选配的 SSD 驱动器,现在你也可以在新款 Macbook Pro 上定制 SSD 了。但 OSX 是否支持 TRIM,苹果没有明说。我们咨询了苹果的英国公关团队,但被告知他们不受理此类的技术事宜。在许多论坛中,这类讨论盛行,例如,苹果什么时候将加入 TRIM 支持,或者 OS X 是否真的需要它。而苹果在近期的系统升级中针对搭载 SSD 的麦金塔,在系统配置软件里增加了「TRIM 支持」的提示栏,在这个新功能的推波助澜下,人们对此的猜测更加热烈起来。

于是我们决定自己测试 OS X 的 SSD 性能,以了解麦金塔平台上的 SSD 是否会遭受 Windows 那样的性能降低。首先,要决定采用那一种麦金塔:虽然可以使用标准的 PC 部件打造一台「黑金塔」,而且这么做并不困难,但是苹果不认可这种行为,重要是,这样的机器比搭载了 SSD 的麦金塔还要稀少,因此,无法保证测试结果的可靠性。苹果只支持某些特定的硬件配置,我们觉得应该尊重他们。

虽然苹果的英国公关团队无法回答关于 TRIM 的问题,但是他们很高兴能发来一台带有 SSD 的 Macbook Air 供我们测试。苹果公司出售两种型号的 Macbook Air,其中一种标配 128GB SSD。其他的配置是 2.13GHz 的酷睿 2 处理器、2GB 内存以及一块 Geforce 9400M 图形处理器。

据 OS X 系统配置界面显示(见下图),这台 Air 搭载的 SSD 的型号是 Apple SM128。实际上,它是经过更名的三星 MMDOE28GXMSP(技术规格见此)。这是一款 SATA 3Gbps 设备,三星标称其具有 90MB/秒的持续读取速度和 70MB/秒的写入速度。说明书中并未提到其是否支持 TRIM。而系统配置则显示,这块 SSD 不支持 TRIM。

由于在先前所有的 SSD 测试中,我们使用的都是 Windows 7 上的测试软件,因此本次测试也需要找到 OS X 上的相应软件。我们关注的是驱动器持续写入、持续读取、随机写入和随机读取的性能,以及读写时的存取时间(Access Time)。首先,坏消息是:我们没有办法找到能够测试新近发布麦金塔的磁盘存取时间的软件,如果你知道,请告诉我们。(虽然有 OS X 版的 IOMeter,但只适用于 PowerPC 版的麦金塔)

但当开始测试读写速度时,我们倒是发现了一些 OS X 上的测试软件。我们很快放弃了 Xbench,因为它自从 2006 年以来就没有再升过级,而且在麦金塔用户中的口碑极差。接下来是 AJA sytem test,这是一个用于测试视频捕捉卡的软件,但用来测试磁盘却挺方便 — 虽然它没什么毛病,但我们发现另外还有两个软件更好: Quickbench 和 Disktester。

Quickbench 很像我们在 Windows 下使用的 ATTO 磁盘测试,可以根据不同尺寸文件的测试结果列出不同的速度。这很重要,因为驱动器在不同的文件尺寸下的性能差异显著,比如 4KB 文件和 1MB 文件之差。Quickbench 也可以进行多次相同测试,然后取平均值,而且,它的用户界面简单友好,是用来测试的最佳选择。

我们也试过了 Disktester。除了图形用户界面外,它还有一个命令行界面,但我们发现它更适合用来测试驱动器的可靠性而非性能。

我们收到的 Macbook Air 已接受过数次评测,因此首先要将它回复到「干净」的状态。虽然我们在 Windows 下测试步骤固定如此 — 使用 HDDerase 先进行低级格式化 — 但是现在得找到在 OS X 下这么做的办法。事实上 OS X 安装软件允许用户加载一个叫做 Disk Utility 的软件,可以用来对磁盘进行分区和格式化 — 其中的一个选项是格式化并清空所有的数据。

(一台搭载 128GB SSD 的 Macbook Air 需要花费 1378 英镑)

据苹果的说法,「清空全部数据...会将空白区域的所有二进制数据转化为 0,这种状态可称作数字式的空白。」好的,那下一步呢?嗯,该轮到我们出场了。

准备就绪,我们开始安装 OS X 10.6 并将系统升至最新版本。接着,我们将整个磁盘加入 Spotlight(系统级搜索)的排除列表,因此索引不会干扰到测试结果。最后,我们关闭了所有能关闭的节能选项,磁盘便不会被置入休眠状态。

然后,我们使用 Quickbench 标准测试中的「5 循环」模式,测试三次,每次开始前重启机器。下方的结果是多次测试的平均值。Quickbench 读取和写入文件的范围涵盖 4KB 至 1024KB。我们测试通常选用 4KB、64KB 和 1024KB,因此这次测试也选用这三个结果,还加上了 Quickbench 生成的「标准平均值」。

当我们对这块焕然一新的 SSD 做完测试后,接下来要做的就是给它当头一棒了。如同我们在 Windows 上的 SSD 测试,我们将一块 USB 移动硬盘上的 112GB 文件拷入 Air 里的 SSD,包括了系统文件、游戏安装和媒体文件。接着,我们删除这些文件,然后再复制一遍,重复 10 次这样的过程,这样我们就往 SSD 上写入了超过 1TB 的数据,在这之后,再次进行 Quickbench 测试,从而比较其在 Mac OS X 中的性能下降。

为进行比较,还加入了 Bit-Tech 用于播客的 Macbook Pro。这是一台 2008 年的机器,处理器是 2.5GHz 的酷睿 2,硬盘是 5400 转的日立 Travelstar 5K250。

1、Quickbench — 持续读取速度测试结果

Quickbench 类似于我们在 Windows 平台上所使用的 ATTO 工具,用来测试驱动器在不同文件尺寸下的读写能力。先测试 4KB 至 1024KB 的连续读写,再测试同范围的随机读写。

4KB 持续读取速度:

64KB 持续读取速度:

1024KB 持续读取速度:

平均持续读取速度:

2、Quickbench — 持续写入速度测试结果

4KB 持续写入速度:

64KB 持续写入速度:

1024KB 持续写入速度:

平均持续写入速度:

3、Quickbench — 随机读取速度测试结果

4KB 随机读取速度:

64KB 随机读取速度:

1024KB 随机读取速度:

平均随机读取速度:

4、Quickbench — 随机写入速度测试结果

4KB 随机写入速度:

64KB 随机写入速度:

1024KB 随机写入速度:

平均随机写入速度:

结果分析 — OS X 需要 TRIM 吗?

测试结果同我们之前有关 TRIM 的文章中的结论相似:在大多数测试中,干净的 SSD 和使用过的 SSD 之间的性能差距很少。在随机读取测试中几乎无法分辨二者的差距 — 若以随机读取速度视之,新旧驱动器之间则完全没有区别,它们不分胜负。当进行到随机写入测试环节之后,情况有了一些分别:4KB 写入二者相等,但是干净的驱动器在 64KB 写入中快上 1MB/秒,在更大的 1024KB 文件写入中干净的驱动器更快上 9MB/秒。

在持续读取测试中,两者平均传输速度的区别甚至不到 2MB/秒,即便考察持续写入,它们的区别也仅是 2.3MB/秒,这大约是 6% 的程度。

这些差异和我们在 Windows 平台上测试过的 SSD 相比真是小得多。比如,采用 Indilinx 主控的 OCZ Vertex:在没有 TRIM 的情况下,它的 1024KB 文件的持续读取速度惊人的下降了 47%,从 258MB/秒下降到 138MB/秒。它的随机写入速度则从 9.8MB/秒下降到 4.93MB/秒 — 而 Macbook Air 的随机写入速度仍然不变,维持在 5.6MB/秒。

我们非常非常好奇,因为这完全超出了我们的预期。虽然我们知道 SSD 的性能受操作系统的影响 — 毕竟,要用上 TRIM 你得有 Windows 7 — 但 OS X 却不受 SSD 性能下降的影响,这真是让人目瞪口呆难以置信。这到底是怎么回事?

我们曾考虑到是否是测试出现了疏漏,当然这绝对是可能的,但也很难发现错在哪里。虽然我们是刚刚开始使用 Quickbench,但在本文所有的测试中(本文仅发布了一部分,还有许多是预备性的测试),Quickbench 的结果是可靠而且是可重复的。我们在多台麦金塔上使用 Quickbench,正如你所看到的,它完美地记录了硬盘和 SSD 之间的性能差距。

我们也在想是不是驱动的问题,但使用的是正规的苹果产品,因此应该不存在这样的问题。苹果对归零格式化的描述与我们重置 SSD 方法相符,而且之前我们恢复那些用过的 SSD 也是这么做的 — 如果 TRIM 没有参与,恢复前后的性能差异巨大。

接着我们又觉得,也许是 MacBook Air SSD 的特殊设计,使它免于 TRIM 的影响 — 但事实并非如此。这是三星 2008 年的设计,严格说来,它与 Corsair 的 P 系列十有八九是相似的。我们测试过 Corsair P128,它也出现过性能下降的问题。

那么原因也许便出在下两条上。首先,OS X 和 Windows 使用不同的文件系统,是文件系统导致了 SSD 的性能下降 — 本质上,我们是在探讨存有数据的磁盘区域复写的问题。OS X 的 HFS+ 文件系统完全有可能比不使用 TRIM 的 NTFS 系统更适合 SSD 的运作。也可能是因为 OS X 已经支持 TRIM,只不过系统提示错了。

第二,MacBook Air 的 SSD 速度并不快,也许这也影响到了性能表现。据三星称,它的最高读取速度是 90MB/秒,最高写入速度是 70MB/秒,这和现在的 SSD 比起来真是天上地下,而且它在实际应用中的表现更差。但也许这并不奇怪,因为它毕竟是 2008 年的产品 — 这几年固态硬盘技术发展可谓迅猛。来看一下 Vertex:不开 TRIM 的情况下,使用过的 Vertex 1024KB 文件的持续读取速度是 137MB/秒,MacBook Air 是 105MB/秒。打开 TRIM 后,Vertex 在同样的测试中提升到 258MB/秒。在某些测试中,Macbook Air 勉强超过 Macbook Pro 上的 5400 转机械硬盘。

因此,完全有可能是苹果以磁盘性能下降平衡不支持 TRIM 所造成的不良结果。而同样可能的是,三星的控制器没有受到影响,是因为它支持某些手动的 TRIM 操作 — 从而造成了整体速度的下降。

奇怪是,在某些测试中 Air 的 SSD 比 P 系列的 SSD 慢上许多,尽管二者的架构均出自三星 — 在 1024KB 的持续读取测试中,P 系列在 Windows 7 里能达到 227MB/秒的速度,但 Corsair 在 Windows 7 下的随机写入性能(新驱动器 3.8MB/秒,旧驱动器 1.1MB/秒)不及 Air 的 5.6MB/秒。(而新旧硬盘的测试结果均相同,说明测试软件是没有问题的。)

我们有意在本文开篇暗示:我们并不期待 SSD 在一个不支持 TRIM 的操作系统下的性能表现。然而结果恰相反:这个操作系统并未受到 SSD 性能下降的影响。但如果你执意选择苹果提供的 SSD — 特别是这一块,以现代 PC 的标准衡量,你所得到的显然是不及格的性能。但这次评测引发的问题比所能解决的多多了,为此,我们将继续深入调查。

[原文链接;作者:Alex Watson & Harry Butler]