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