作為一般消費(fèi)者,在京東上會看到各種M.2接口的固態(tài)硬盤往往會無所適從,不知道選擇什么好。尤其是有的SSD寫得支持SATA協(xié)議,有的是支持NvME,到底選擇哪種好呢?
NVMe作為新出現(xiàn)的技術(shù),它當(dāng)然比SATA的SSD硬盤要快,延遲要小。尤其現(xiàn)在SATA接口無疑構(gòu)成了SSD速度的瓶頸,今天我們就從技術(shù)的層面來了解一下為什么NVMe比SATA快,快多少。并對一般消費(fèi)者如何選擇做一個方向性的指導(dǎo)。
我們來看一下他們的對比:
走SATA協(xié)議的M.2 SSD會被連接到南橋的SATA port上,在其上走傳統(tǒng)的AHCI協(xié)議棧(SCSI的一個子集),漫長而延遲很高。AHCI只有1個命令隊列,隊列深度32,如果發(fā)生大量小文件操作,就會發(fā)生擁堵。
走NVMe的SSD,直接走PCIe通道,協(xié)議棧很淺。而NVMe可以有65535個隊列,每個隊列都可以深達(dá)65536個命令。NVMe也充分使用了MSI的2048個中斷向量優(yōu)勢,延遲大大減小,尤其大量小文件時速度更是飛快。
從操作系統(tǒng)的協(xié)議棧本身來看:
AHCI還是基于傳統(tǒng)的塊傳輸。而NVMe使用了一種叫做“Doorbell”的機(jī)制來充分利用了極長的隊列,大大減小了延遲。
我們來一起看一下具體的數(shù)據(jù)。首先來看NVMe如何減小了協(xié)議棧本身的時間消耗,我們用blktrace工具來分析一組傳輸在應(yīng)用程序?qū)?、操作系統(tǒng)層、驅(qū)動層和硬件層消耗的時間和占比,來了解AHCI和NVMe協(xié)議的性能區(qū)別:
硬盤HDD作為一個參考基準(zhǔn),它的時延是非常大的,達(dá)到14ms,而AHCI為125us,NVMe為111us。我們從圖中可以看出,NVMe相對AHCI,協(xié)議棧及之下所占用的時間比重明顯減小,應(yīng)用程序?qū)用娴却臅r間占比很高,這是因為SSD物理硬盤速度不夠快,導(dǎo)致應(yīng)用空轉(zhuǎn)。NVMe也為將來Optane硬盤這種低延遲介質(zhì)的速度提高留下了廣闊的空間。
在實際使用情況如何呢?我們以MySQL數(shù)據(jù)庫來說:
1)是一個SATA SSD硬盤,雜草叢生的綠色表面大量時間在等待。
2)是四個SATA SSD組成了RAID,等待時間減小了不少。
3)是一個NVMe的硬盤,幾乎看不到綠色了,幾乎不再等待。
4)是RAM disk,綠色完全沒有了,用戶態(tài)占比很高。
從上面的分析,我們可以看出NVMe相對SATA協(xié)議,在軟件和硬件上做了巨大優(yōu)化,大大減小了協(xié)議棧的無謂消耗(overhead),提高了響應(yīng)度。
對性能十分敏感的服務(wù)器市場已經(jīng)越來越多的使用NVMe了:
那么對于一般消費(fèi)者呢?當(dāng)然是盡量選擇NVMe了,尤其是SATA的M.2價格相對并不便宜,存在僅僅是為了適用于老的主板。
有些主板做了特殊處理,BIOS根據(jù)插入的M.2硬盤不同,可以走PCH的SATA通道或者走PCIe通道支持NVMe,這時一定要買NVMe的SSD。這么做BIOS需要修改不少,有些主板廠商或主板廠商的BIOS承包商為了簡單和一些安全考慮,出廠時限定了支持哪種,這時就需要閱讀主板說明書,別買錯了,就只能退貨了。當(dāng)然老的主板只支持SATA的接口,就無從選擇了。