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