蘋果Fusion Drive混合磁盤方案深度解析
用128KB的文件塊在HDD和SSD之間移動數(shù)據(jù),蘋果可以在寫入SSD的時候進行部分碎片整理。盡管Fusion Drive 的所有寫入首選目的地都是SSD(可以包括小于128KB的文件塊,隨機和偽隨機寫入),任何從HDD到SSD的遷移卻都是大塊順序寫入的,如果驅動器中有大量碎片,這就會觸發(fā)垃圾塊回收過程。SSD的性能肯定會隨著時間的推移降低,但是這個過程有助于保持它的性能,因為SSD幾乎一直都是在充滿的狀況下運行的,而且它會接收各種不相關的寫入。我前面提到過,我希望蘋果把更多的PM830 NAND空間預留為備用區(qū)。我懷疑蘋果沒有預留更大的備用區(qū)是出于成本方面的考慮。
應用體驗
在現(xiàn)實使用中,Fusion Drive能給我們帶來怎樣的體驗呢?簡單說來,它的效果出乎意料的好。我之前使用過的SSD緩存方案全部都更像是HDD而不是SSD,不過蘋果公司的Fusion Drive體驗則是幾乎處于HDD和SSD的正中間。
它在安裝幾乎所有程序時,都是先用SSD,因此Fusion Drive感覺真的像SSD。不僅是在安裝應用程序的時候,復制任何東西時,一般也是先去SSD。似乎到了4GB之后,它才開始用HDD。不過稍加努力,你可以讓Fusion Drive僅在1 到 2GB之后就開始寫入到HDD。我用Iometer創(chuàng)建了一個順序測試文件,監(jiān)測Fusion Drive什么時候停止將文件寫入到SSD,在這時停止這個進程,重新命名這個文件,并再次開始創(chuàng)建文件。結果如下圖:
可以看到,如果你的速度夠快,你可以在低于2GB的時候就讓HDD接管寫操作。我不知道這是不是SSD上的可用空間量,但很有可能就是這樣,因為顯示121GB的SSD又不充分使用它實在說不通。
在大多數(shù)時候,當你不那么積極地寫入SSD時,F(xiàn)usion Drive可以保持至少4GB的SSD可用空間。需要注意的是:當你第一次使用它時,F(xiàn)usion Drive大部分都是空的,你寫入的幾乎任何東西,無論大小,都會直接進入SSD。然而,當容量承受一定壓力時,蘋果就會改變方法:讓任何文件最多寫入4GB到SSD,其余部分則放到HDD上。
通過安裝蘋果的OS X開發(fā)者工具以及Xcode本身,我證實了這一點。后者接近于4GB大,但默認狀況下,它的很大部分都到了SSD上。
應用程序生成的數(shù)據(jù)也是如此。我用Xcode創(chuàng)建Adium,一個682MB的項目,整個編譯過程都發(fā)生在SSD ——機械硬盤一直都沒有活動。我試圖創(chuàng)建一個更大的項目,近2GB的Firefox。這時出現(xiàn)了短暫的HDD活動,但絕大多數(shù)活動都是在SSD上。
我復制了一個很大的視頻文件(>10GB)到這臺iMac上,現(xiàn)在我把它復制到一個新的位置上,并密切注意Fusion Drive的動向。最初的2GB是從SSD傳輸?shù)絊SD,接下來的2GB是從HDD讀取,寫入SSD。大約4GB被復制之后,源驅動器和目標驅動器都變成了HDD。在我看來,正確的做法應該是默認情況下把所有的大文件都放入HDD ,除非它們被頻繁訪問。蘋果的做法似乎是一個合理的妥協(xié),但它把文件塊放入SSD的方式比我以為的更加積極。
我重復了這個測試,用另一個我從來沒有訪問過的視頻文件,得到的結果完全不同。整個文件都存在HDD 上。我又重復一次這個測試,用我訪問了好幾次的iPhoto圖庫,令我驚訝的是,這個iPhoto圖庫的大部分都在HDD上,但也有一些少許讀取來自SSD。但在這兩種情況下,復制的目標驅動器當然都是SSD。
我Anandtech文件夾的大小超過32GB,含有文字、照片、演示文稿、基準測試結果,以及我做過的幾乎所有評測。雖然這個文件夾非常重要,但它其中大部分都沒有經(jīng)常被訪問。我在復制這個文件夾時,發(fā)現(xiàn)幾乎全在HDD上。38GB的“我的文檔”文件夾也是如此,這個文件夾中的大部分也是未讀過的。
另一方面,應用程序幾乎總是放在SSD上。
之前我經(jīng)常手動把操作系統(tǒng)和應用程序放在SSD,大的媒體文件放在HDD上,F(xiàn)usion Drive把這個過程自動化了,而且效果還相當不錯。我手動整理資料和Fusion Drive自動化之間唯一的區(qū)別就是,我把“我的文檔”和Anandtech文件夾默認放在SSD。這樣做不只存在性能方面的考慮,也是為了可靠性,因為硬盤比SSD更容易出毛病。
Fusion Drive的性能
對Fusion Drive進行基準測試有點困難,因為它總是寫入到SSD。如果你不把Fusion Drive填滿,你寫入的大量數(shù)據(jù)可能全部會到SSD上。如果你確實填滿了它,但測試的數(shù)據(jù)集4GB,那你測量的仍然是SSD性能。
我想出了一個相對簡單的用例,可以涵蓋兩個驅動器?,F(xiàn)在我的Fusion Drive已經(jīng)填充了70%,這意味著SSD的容量快要到頂了(除了其4GB的緩沖)。我把含有703張照片的iPhoto圖庫導出為TIFF格式的照片。生成的文件相當大,當達到297張照片時,4GB的SSD寫入緩沖區(qū)已經(jīng)滿了,所有后續(xù)導出的照片都到了HDD 。我給這個過程計時,然后把它跟iMac上的一個HDD分區(qū)做對比,也跟通過USB 3.0連接的一個三星PM830 SSD對比。結果有點偏向于純HDD 配置,因為這個寫操作基本上是順序的:
上圖準確地總結了我的Fusion Drive 體驗:它差不多處于HDD 和SSD的正中間。在這個測試中,速度提升不是很大,但這主要是因為我們使用了相對低的隊列深度順序傳輸。對于比較隨機的工作負載,F(xiàn)usion Drive和HDD差距將拉大??上У氖?,我無法找到好的應用程序用例來生成4GB +的偽隨機數(shù)據(jù),使其可重復性高到可以進行基準比較的程度。
如果我一直對Fusion Drive進行非常大的順序寫操作(一個文件就高達260GB),最后它會傻掉,不再遷移數(shù)據(jù)到SSD了,除非你重新啟動機器。我懷疑這個bug不是由正常的自動測試觸發(fā)的,但它確實提供了一個有趣的狀況,我可以利用它來開展測試。
啟動我頻繁使用的iMac預裝應用程序,它們仍在SSD上,但一些后來安裝的程序卻不是這樣。特別是Photoshop CS6,它部分在SSD上,部分在HDD上。對于工作負載太大,SSD無法單獨處理時的Fusion Drive 偽隨機讀取性能,這是一個很好的基準測試。我測試Photoshop在Fusion Drive上的啟動時間,跟在純HDD 分區(qū)上,以及通過USB 3.0連接的PM830上的情況相比較。比較結果再次反映了我的體驗:
評論