作为一般消费者,在京东上会看到各种M.2接口的固态硬盘往往会无所适从,不知道选择什么好。尤其是有的SSD写得支持SATA协议,有的是支持NvME,到底选择哪种好呢?
NVMe作为新出现的技术,它当然比SATA的SSD硬盘要快,延迟要小。尤其现在SATA接口无疑构成了SSD速度的瓶颈。
今天我们就从技术的层面来了解一下为什么NVMe比SATA快,快多少。并对一般消费者如何选择做一个方向性的指导。
技术分析
我们来看一下他们的对比:
走SATA协议的M.2 SSD会被连接到南桥的SATA port上,在其上走传统的AHCI协议栈(SCSI的一个子集),漫长而延迟很高。AHCI只有1个命令队列,队列深度32,如果发生大量小文件操作,就会发生拥堵。
走NVMe的SSD,直接走PCIe通道,协议栈很浅。而NVMe可以有65535个队列,每个队列都可以深达65536个命令。NVMe也充分使用了MSI的2048个中断向量优势,延迟大大减小,尤其大量小文件时速度更是飞快。
从操作系统的协议栈本身来看:
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的接口,就无从选择了。
我的评论
最新评论