NVMe比SATA接口的SSD究竟快在哪裡?

NVMe比SATA接口的SSD究竟快在哪裡?

作為一般消費者,在京東上會看到各種M.2接口的固態硬盤往往會無所適從,不知道選擇什麼好。尤其是有的SSD寫得支持SATA協議,有的是支持NvME,到底選擇哪種好呢?

NVMe作為新出現的技術,它當然比SATA的SSD硬盤要快,延遲要小。尤其現在SATA接口無疑構成了SSD速度的瓶頸,今天我們就從技術的層面來了解一下為什麼NVMe比SATA快,快多少。並對一般消費者如何選擇做一個方向性的指導。

技術分析

我們來看一下他們的對比:

NVMe比SATA接口的SSD究竟快在哪裡?

走SATA協議的M.2 SSD會被連接到南橋的SATA port上,在其上走傳統的AHCI協議棧(SCSI的一個子集),漫長而延遲很高。AHCI只有1個命令隊列,隊列深度32,如果發生大量小文件操作,就會發生擁堵。

走NVMe的SSD,直接走PCIe通道,協議棧很淺。而NVMe可以有65535個隊列,每個隊列都可以深達65536個命令。NVMe也充分使用了MSI的2048箇中斷向量優勢,延遲大大減小,尤其大量小文件時速度更是飛快。

從操作系統的協議棧本身來看:

NVMe比SATA接口的SSD究竟快在哪裡?

AHCI還是基於傳統的塊傳輸。而NVMe使用了一種叫做“Doorbell”的機制來充分利用了極長的隊列,大大減小了延遲。

數據

我們來一起看一下具體的數據。首先來看NVMe如何減小了協議棧本身的時間消耗,我們用blktrace工具來分析一組傳輸在應用程序層、操作系統層、驅動層和硬件層消耗的時間和佔比,來了解AHCI和NVMe協議的性能區別:

NVMe比SATA接口的SSD究竟快在哪裡?

硬盤HDD作為一個參考基準,它的時延是非常大的,達到14ms,而AHCI為125us,NVMe為111us。我們從圖中可以看出,NVMe相對AHCI,協議棧及之下所佔用的時間比重明顯減小,應用程序層面等待的時間佔比很高,這是因為SSD物理硬盤速度不夠快,導致應用空轉。NVMe也為將來Optane硬盤這種低延遲介質的速度提高留下了廣闊的空間。

在實際使用情況如何呢?我們以MySQL數據庫來說:

NVMe比SATA接口的SSD究竟快在哪裡?

1)是一個SATA SSD硬盤,雜草叢生的綠色表面大量時間在等待。

2)是四個SATA SSD組成了RAID,等待時間減小了不少。

3)是一個NVMe的硬盤,幾乎看不到綠色了,幾乎不再等待。

4)是RAM disk,綠色完全沒有了,用戶態佔比很高。

從上面的分析,我們可以看出NVMe相對SATA協議,在軟件和硬件上做了巨大優化,大大減小了協議棧的無謂消耗(overhead),提高了響應度。

結語

對性能十分敏感的服務器市場已經越來越多的使用NVMe了:

NVMe比SATA接口的SSD究竟快在哪裡?

那麼對於一般消費者呢?當然是儘量選擇NVMe了,尤其是SATA的M.2價格相對並不便宜,存在僅僅是為了適用於老的主板。

有些主板做了特殊處理,BIOS根據插入的M.2硬盤不同,可以走PCH的SATA通道或者走PCIe通道支持NVMe,這時一定要買NVMe的SSD。這麼做BIOS需要修改不少,有些主板廠商或主板廠商的BIOS承包商為了簡單和一些安全考慮,出廠時限定了支持哪種,這時就需要閱讀主板說明書,別買錯了,就只能退貨了。當然老的主板只支持SATA的接口,就無從選擇了。


分享到:


相關文章: