1

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

 2 years ago
source link: https://zhuanlan.zhihu.com/p/40497397
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

2021 新知答主

作为一般消费者,在京东上会看到各种M.2接口的固态硬盘往往会无所适从,不知道选择什么好。尤其是有的SSD写得支持SATA协议,有的是支持NvME,到底选择哪种好呢?

NVMe作为新出现的技术,它当然比SATA的SSD硬盘要快,延迟要小。尤其现在SATA接口无疑构成了SSD速度的瓶颈,详情见:

今天我们就从技术的层面来了解一下为什么NVMe比SATA快,快多少。并对一般消费者如何选择做一个方向性的指导。

技术分析

我们来看一下他们的对比:

v2-6175274b5121a25a857d7c7e51021d06_720w.jpg

走SATA协议的M.2 SSD会被连接到南桥的SATA port上,在其上走传统的AHCI协议栈(SCSI的一个子集),漫长而延迟很高。AHCI只有1个命令队列,队列深度32,如果发生大量小文件操作,就会发生拥堵。

走NVMe的SSD,直接走PCIe通道,协议栈很浅。而NVMe可以有65535个队列,每个队列都可以深达65536个命令。NVMe也充分使用了MSI的2048个中断向量优势,延迟大大减小,尤其大量小文件时速度更是飞快。

从操作系统的协议栈本身来看:

v2-73f611523d0e3b2015a557e6a95bf1c4_720w.jpg

AHCI还是基于传统的块传输。而NVMe使用了一种叫做“Doorbell”的机制来充分利用了极长的队列,大大减小了延迟。

数据

我们来一起看一下具体的数据。首先来看NVMe如何减小了协议栈本身的时间消耗,我们用blktrace工具来分析一组传输在应用程序层、操作系统层、驱动层和硬件层消耗的时间和占比,来了解AHCI和NVMe协议的性能区别:

硬盘HDD作为一个参考基准,它的时延是非常大的,达到14ms,而AHCI为125us,NVMe为111us。我们从图中可以看出,NVMe相对AHCI,协议栈及之下所占用的时间比重明显减小,应用程序层面等待的时间占比很高,这是因为SSD物理硬盘速度不够快,导致应用空转。NVMe也为将来Optane硬盘这种低延迟介质的速度提高留下了广阔的空间。

在实际使用情况如何呢?我们以MySQL数据库来说:

1)是一个SATA SSD硬盘,杂草丛生的绿色表面大量时间在等待。

2)是四个SATA SSD组成了RAID,等待时间减小了不少。

3)是一个NVMe的硬盘,几乎看不到绿色了,几乎不再等待。

4)是RAM disk,绿色完全没有了,用户态占比很高。

从上面的分析,我们可以看出NVMe相对SATA协议,在软件和硬件上做了巨大优化,大大减小了协议栈的无谓消耗(overhead),提高了响应度。

结语

对性能十分敏感的服务器市场已经越来越多的使用NVMe了:

那么对于一般消费者呢?当然是尽量选择NVMe了,尤其是SATA的M.2价格相对并不便宜,存在仅仅是为了适用于老的主板。

有些主板做了特殊处理,BIOS根据插入的M.2硬盘不同,可以走PCH的SATA通道或者走PCIe通道支持NVMe,这时一定要买NVMe的SSD。这么做BIOS需要修改不少,有些主板厂商或主板厂商的BIOS承包商为了简单和一些安全考虑,出厂时限定了支持哪种,这时就需要阅读主板说明书,别买错了,就只能退货了。当然老的主板只支持SATA的接口,就无从选择了。

其他闪存相关文章:

硬盘相关文章:

欢迎大家关注本专栏和用微信扫描下方二维码加入微信公众号"UEFIBlog",在那里有最新的文章。同时欢迎大家给本专栏和公众号投稿!

用微信扫描二维码加入UEFIBlog公众号

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK