测试背景
在"FPGA实现高带宽NVMe SSD读写"帖子中介绍了项目背景及系统架构、FPGA实现NVMe读写的大致实现方法。项目中需要将图像传感器产生的高速数据流实时稳定的持续存储,即不仅要求较高的存储带宽,还同时需要该存储带宽保持始终稳定、持续。
在项目做系统设计的时候,随手在网上搜到的NVMe SSD的读写速度的测试都是这样的:
这些信息使得我们在做系统设计的时候,信心满满的,认为只要做好NVMe的读写控制器后,买来硬盘,装上就万事大吉了。
偶然的一次好奇,我们用另外的一个测速软件HD Tune Pro进行了测试,于是乎,发现了这样的测速结果:
SSD持续读写的速度发生下降,绝大多数SSD在某个容量后,其速度发生断崖式下降。以Teclast 240GB SSD为例,在写入数据达到约36GB时速度开始大幅度降低,大容量读写时最低写入速度甚至低于50MB/s。
这个结果不仅让我们惊得一身冷汗,原来,传说中的高速是有时间限制的!但是一个更大的问题又随之而来的产生了:这些测速软件的底层操作原理及过程是什么?万一HD Tune Pro得出的数据再不可靠呢?项目验收的时候,再发现有问题,就不是钱和时间的问题了。会连累与项目相关的多方单位,而且把自己好不容易积累的专业信用一次丢个精光,就没前途了。越想越不靠谱,看来一个专业的项目,确实涉及到方方面面的东西,连测试工具都不能采用普通的方法。要撸起袖子自己干了,做个专业的NVMe SSD测速!
测试平台
测试平台使用上一个帖子中介绍的ZCU106+FMC扩展子板系统,该平台基于PCIe 3.0协议,使用ARM裸机结合FPGA实现NVMe SSD的读写功能。
待测NVMe SSD 选用了几款具有代表性的高性能SSD,其中有一款神秘嘉宾,待后面详细介绍:
三星980 500GB
三星PM981 256GB
三星SM961 256GB (960 pro联想品牌机用)
三星980 PRO 1TB
忆芯科技1TB SSD (StarBlaze S1200CMT1)
忆芯科技2TB SSD (StarBlaze S1200ITT2)
三星的SSD是我们很多人在装机时首选的SSD品牌之一。在待测的三星品牌的SSD中,三星980、980 PRO和PM981选用的闪存芯片是低成本的TLC颗粒(数据引自京东旗舰店),三星SM961选用的是MLC颗粒。因为TLC颗粒的每个cell可以写入3个二进制位,MLC颗粒的每个cell可以写入2个二进制位,所以TLC的结构比MLC复杂,速度比MLC慢,寿命比MLC短。高速缓存方面,三星980去掉了缓存;三星980 PRO选用的是1GB缓存芯片;三星PM981和SM961缓存芯片大小都为512MB。对于三星980 PRO,它最高支持PCIe 4.0接口,可以进一步提高SSD的读写性能。
本次测试的神秘嘉宾就是忆芯的2TB SSD(StarBlaze S1200ITT2)。忆芯科技基于国产主控芯片和颗粒,并自主研发的高性能低功耗NVMe SSD主控已量产出货,固件解决方案也已交付行业客户,推出的高性能NVMe固态硬盘已通过Intel、AMD、飞腾、兆芯、龙芯、海光、申威、鲲鹏等各大平台和麒麟、统信等操作系统兼容性认证。此次测试不仅是和国外的厂商进行对比,也是对国内公司的一种支持。而后的测试结果,反而给了我们展示了另外一种惊艳,忆芯的性能完全颠覆了我们对国产SSD的认识,具体数据,且看后文。
基于SSD结构和容量的考虑,我们认为三星980 PRO是目前市场上能找到的性能最好的NVMe SSD,它的读写性能应该是所有待测SSD中最好的,其次应该是三星980和三星SM961,三星PM981,国产忆芯科技的两款SSD因为之前没用过,市场上的测评不多,对其性能,我们也是很期待。
这些测试盘的照片依次如下:
测试方法、项目
硬盘相关的读写方式,总体上分为三种:顺序读写、随机读写和4K读写。顺序读写即连续读写,可以理解为有序的读取和写入数据。在读写的过程中会遵循先后顺序进行工作。随机读写则不遵循先后顺序进行数据的读写,即数据是随机分布在硬盘的某个或某些扇区中,没有连续性。4K读写,顾名思义为读写4KB大小的数据,由于大多数硬盘的物理扇区大小都是4KB,所以硬盘读写数据的最小单位为4KB。4K读写就是依据4K对齐的原则进行的随机读写,写入的数据可以完全占用使用的扇区。
对比这三种读写方式,顺序读写的特点是读写时间短、读写数据大且集中、具备连续性,随机读写的特点是读写数据小、具有分散性,4K读写除了具备随机读写的特性,由于是基于4K对齐进行读写,可以完全占用硬盘中所使用的扇区,提高访问速度,4K读写性能的强弱直接影响到大量小文件读写时的效率。后两者读写方式更多地应用于小容量文件数据。
针对项目中大容量持续读写的要求,选用顺序读写的方式测试不同SSD的读写特性。
测试中,采用两种测试方法:
一次读写一定总量的数据而得到的总平均速度,这个数据总量从5GB开始,最高到500GB,每次得到的测试速度,都是从0扇区开始写入/读出,一直到本次测试的数据总量停止后,读写期间的平均速度。
在顺序读写测试中使用大区块测试(如200GB)时,测试区会跨越高速区及低速区(如果有),得到的速度为平均读速度,不利于准确评估SSD的性能,在实际使用中,也无法按照平均速度安排数据吞吐,因为按照平均速度分配的任务,在高速区SSD硬盘“吃不饱”,低速区,会出现丢数据的情况。
因此,除平均速度的测试,还采用了适合的区块大小(5GB~50GB之间,视硬盘的具体测试情况而定),分区测试的方法。具体是在SSD中选取相应位置及大小的分区(即逻辑扇区)进行读写测试,来比较不同逻辑扇区(且把这个扇区对应物理扇区)的读写速度。
在所有测试中,均采用了三次测试,取平均值的方法。
SSD测试结果
准确性测试
分别向SSD写入10GB和20GB的数据,随后按照写入的顺序读取这些数据,并和写入的数据作对比。发现读出和写入的数据一致,可以证明顺序读写的功能是正常执行的,数据上没有出现错误。
准确性测试通过后,便可以进行单盘顺序读写的测试。读写的大小在10GB~400GB之间,具体大小会依据每个SSD的容量和测速结果进行调整。比如三星 PM981 SSD,因为到读写50GB时速度偏低,所以会将该类型的SSD的读写大小调整至10GB~50GB之间。
数据读出性能
首先看市场上的性能旗舰三星980 PRO的表现,其读出速度基本稳定在2.6GB/s-2.7GB/s之间,于其他测试盘相比,除了表现最差的三星PM981,所有的盘与其他的盘并没有很明显的差别。而且仅从数据读出的速度看,三星980 PRO难以被称之为旗舰,相比同门的980,速度上甚至还不如。国产忆芯的两款SSD,在读出性能上略逊于三星的主流产品,基本上在同一水平线上。几款产品中,三星PM981的性能与其他产品相比明显差了一块。开始的前70-100GB的读出速度与其他产品持平,但是超过了100GB后,数据读出的速度遽然陡降,跌到了2GB/s-2.2GB/s的水平。其中虚线的速度三星PM981在一开始测试中的结果,实线是在以后几次测试中的结果。(对于这个差异,我们在后文中讨论。)是从日常办公的角度,三星PM981的这种读出性能也是可以接受的。毕竟在办公使用中,很少出现超过100GB的大数据读出。从性价比角度,不为用不到的性能或功能付费,确实是一种合理的选择,只要其价格对应比较低就可以了。
数据写入性能
这个性能相对于SSD数据读出速度来说,要重要一些,也是可以区分不同档次SSD的重要依据。在很多工业应用中,需要及时、迅速的响应并存储生成的数据,但是在数据的读出中,可以略慢些也不影响应用。
还是先看性能旗舰三星980 PRO的表现,三星980 PRO在100GB以内时,写入速度稳定在2.5GB/s,但大于100GB时,速度开始降低,写入200GB的速度为2.1 GB/s,300GB的速度为1.95 GB/s, 500GB的速度为1.86GB/s,再后面的容量就没去测试了。
三星SM961的写入速度稳定性让人感叹,总容量256GB的盘,从10GB开始测试,为1.5GB/s,20GB,50GB,100GB,直到200GB,快接近满盘了,写入速度始终稳定在1.5GB/s。其写入速度虽然比三星980 PRO低,但是其优秀的稳定性可以适用于一些工业应用中。
容量为500GB的三星980 SSD更像是适用于商业及办公中,在开始的10GB及20GB测试中,其写入速度为2.4GB/s本可以和三星980 PRO持平,但是从30GB开始,SSD的写入速度就开始下降,50GB的写入速度为1.9GB/s,70GB的写入速度为1.7GB/s,100GB的写入速度为1.5GB/s,大于250GB时,速度已经跌至1GB/s以下,一直到400GB,总平均速度就跌到了477MB/s。按理来说,三星980 SSD的性能应该是仅次于三星980 PRO的,但是在写入20GB之后,速度就开始往下降了。在写入不到SSD总容量10%的数据时就已经掉速,那么在实际的应用上就更不方便迅速地存储大容量数据,那测速软件测出相对较高的速度,对使用者角度来说将会起到误导的效果。
三星PM981 SSD在一开始的测试写入10GB大小时就已经低于1.5GB/s,到50GB时已经跌至500MB/s以下。连续测试几次后,发现即使是10GB的写入速度和读出速度和一开始的结果比,都有所下降,甚至从0地址开始,只写入5GB大小的数据时,速度都跌至531MB/s,写入10 GB的数据速度就跌至405MB/s,随着数据量增大,写入速度进一步下跌至366MB/s(20GB),353MB/s(30GB),344MB/s(50GB),数据量进一步增大后,速度基本稳定在330 MB/s。故,用灰色的虚线表示三星PM981一开始速度测试的结果,灰色实线表示该盘在后续的反复测试中的,比较稳定的速度。三星PM981 SSD使用的是TLC闪存颗粒,按照相关资料说,这种颗粒的寿命有限,而且速度会随着次数的增加而下滑,但是就经过了几次测试,5GB数据的写入速度就只有最初测试数据的一半还不到,这是不是有点太………………。不管怎样,如果他够便宜,确实也是一种选择。
三星PM981 SSD给人一种虚幻的感觉,一开始测试的速度是还可以的。如果拿着这个自己测试过的盘交给客户,客户一测试,就只有我们给出的测试结果的一半,客户一定觉得是我们在蒙骗他们,而我们却满心欢喜的认为完成了指标任务。我想,我会被这种情况弄得断了路,但自己都不知道是怎么败的。从科学的角度,一种东西的速度标成应该是以测试出来的最低速为准,而不该是按照某一次测出的最大值。SSD性能和运动比赛不一样的,比赛是看某一次的最高速度而称之为记录,但是应用产品中的性能,应该是按照最低速来衡量的。
经分析,三星PM981选用的TLC闪存颗粒,是导致该SSD在多次测试后速度大幅度降低的关键因素之一。前面也提到,TLC颗粒的每个cell可以写入3个二进制位,这种颗粒要比每个cell可以写入2个二进制位的MLC和只能写一个二进制位的SLC的结构更复杂,但存储的位数越多,需要的电位精度就越高,充电就更困难,检验失败还需要重新充电,写入就变得很慢;读取时也需要更高的精度,因此也会稍慢一些。所以TLC的性能和成本都是最低的,寿命也是最短的。大多数U盘都是采用TLC芯片颗粒。
国产忆芯的写入速度
两款SSD,写入的速度虽然普遍低于三星980 PRO,但是以稳定性而言,忆芯1T的SSD在280GB以内都能达到稳定的写入速度,直到写入280GB时才有大幅降速的现象,但是同样写入280GB数据,忆芯耗时大大小于三星,2T的SSD更是持续稳定在2.2GB/s,甚至读写1.8TB大小的数据时,也能保持稳定。对比市场上的性能旗舰三星980 PRO,写入200GB的速度为2.1 GB/s,300GB的速度为1.95 GB/s,500GB的速度为1.86GB/s。可见忆芯S1200ITT2的写入速度有多强悍!!!
忆芯SSD拥有国内自研的主控芯片和闪存颗粒,而且能够保持相对稳定的速度,实属不易。2T的SSD表面更是有一块厚的散热板,所以我认为温度同样是SSD能保证写入速度稳定的关键因素之一。
在测试之初,本着支持国产的想法。但是最后的测试结果却是让忆芯用自己的实力展示了国产品牌的桀骜。忆芯的产品完全不需要以国产的原因予以照顾,直接硬实力!很明显,忆芯的这款产品才是真正的专业领域性能之王,是名不见经传的扫地僧,一旦出手,惊艳世人。
关于忆芯SSD更多的详细情况及销售,请直接联系北京忆芯科技有限公司——冯经理:
邮箱:hero.feng@starblaze-tech.com
电话:18683435252
分区读写测试
源起
在分析几款SSD读出和写入速度的表现时,可以看到三星980和忆芯1TB的盘出现了较大幅度的跌落,在400GB处写入速度都不到500MB/s。三星980是从20GB的时候开始下降一步步降到较低的值,而忆芯1TB SSD则是280GB后,一下子出现了一个很大幅度(>1GB/s)的速度跌落。三星980 PRO和980类似,只是每次速度跌落的幅度很小,在500GB处仍能保持1.86GB/s以上的写入速度。(三星PM981 SSD算是稳定的低,< 500MB/s)三星SM961是稳定的保持在一个可以接受的,较高的速度上(1.5GB/s)。忆芯2TB则是恐怖的稳定在了2.2GB/s。
我们试图理解SSD中出现的速度跌落现象,把它归结为盘中使用高速缓存的结果。当一次连续写入的文件过大时,高速缓存耗光,速度就开始跌落了。如果按照这个设想的话,在向SSD中的不同位置一次写入同样大小的文件,速度就是一样的。随手验证了一下,发现似乎不是这样的,在SSD中的不同开始位置的扇区写入同样大小的文件,速度会不一样!!!
于是,似乎就有了进行分区测试的必要了,即对硬盘的不同起始位置写入/读出同样大小的数据,测试速度。
测试
鉴于前面测试的结果,
三星PM981,以5GB为块大小进行分区读写,
三星SM961,以5GB为块大小进行分区读写,
三星980 SSD,以20GB为块大小进行分区读写,
三星980 PRO和忆芯科技的两款SSD,因为他们的容量大且上一个测试中的表现较好,则以100GB为块大小进行分区读写。
几款SSD的读出速度如图所示,他们的性能稳定且相近,读出速度介于2.7GB/s到2.8GB/s之间。在这几款产品中,旗舰三星980 PRO表现的反而不够好,在300-600GB区间反而只有2.67GB/s的读出速度。在写入测试表现不佳的三星SM961,其数据读出速度可以达到测试中的最大值2.8GB/s,可见该盘在需要频繁写入较大的数据,但是需要读出较多数据的应用中是一个不错的选择(如果该盘价格较低的话)。
三款在总平均写入速度中表现稳定的忆芯2T,三星PM981分区测试的写入速度与前面总速度的测试结果一致,两个测试结果相互得到验证。
三星PM981的表现似乎符合关于缓存的猜测,在每次写入5GB的数据量下,在不同的起始位置,其写入速度均为530-540MB/s之间,速度稳定,与前面的测试中的第一个数据相对应。该盘的表现,就只能是这样了,比较弱。
分区写入数据的测试,证实了在某些盘中,在硬盘中写入数据的位置是影响其写入性能的主要因素。原来对SSD读写架构猜测不太对,或者是,在SSD读写中,如果有缓存的话,也是较小的,对大数据量的写入速度影响不大。
三星980 SSD在前60GB的两个区间有较高的2.4GB/s写入速度,在60-80GB区间,写入速度下降至1GB/s,在80-100GB、200-220GB和300-320GB三个区间,写入速度略提高至1.2GB/s,但始终远低于2.4GB/s。
三星980 PRO在前200GB区间,写入速度稳定在2.5GB/s。在之后的区间,200-300GB、300-400GB区间和500-600GB区间的写入100GB的速度仅为1.7-1.8GB/s,但是在700-800GB区间,写入速度反弹至和开始区间一本一样的速度,为2.4GB/s。
与三星的SSD不同,忆芯科技1TB表现的比较稳,高速区间很稳定且明显,速度降下后,没有出现反弹的情况。在300-400GB、500-600GB和700-800GB三个分区区间的写入速度低于1GB/s。
很明显,在不同的分区写入数据,某些型号的盘会出现写入速度的下降,甚至波动。为何分区写入速度会产生这个结果,我们还没有找到明确的答案,欢迎各位读者分享自己的见解。
结语
因为对市面常用硬盘测速软件后台的不甚了解及对测速结果的担心,我们使用FPGA,使用逻辑扇区的方法对几款NVMe SSD进行了总平均及分区测速。测试结果显示,某些型号的SSD在较大数据量写入的情况下,会出现较严重的掉速。以5GB或10GB大小写入不同的逻辑扇区,在某些型号中,也会出现速度较大的波动。本次的SSD测速的一个惊喜是发现了一块在性能上超越三星980 PRO的国产NVMe SSD,忆芯2TB,其高速度之稳定,已经远远超过了市售性能旗舰产品,可谓国货之光。
声明
在本文的结尾,我们做如下声明:本次的测试仅仅是作为与该领域感兴趣的朋友交流之用。我们仅对某款型号的某块盘,基于FPGA平台,用自己的测试程序做了统一的、无差别的测试而得到了结果。我们仅对我们的方法及所用的盘负责,保证不出现虚假或是伪造的结果。但不是对市场上所有的该型号或类似的产品性能做出推断或推论。本文的数据发布出来,仅供大家参考。
本文的内容是学校实验室项目中系列工作的一部分。后续还将推出基于NVMe的RAID0的实现介绍。为了方便成为一个系列,就是用最初的这个账号发文,请大家知晓。文章来源:https://www.toymoban.com/news/detail-457113.html
如果需要讨论,联系方式如下:
北京市可线下,地址:北京市海淀区中关村南大街5号北京理工大学。
非京可联系:Tel:13810602873(微信同号)
E-mail:liuzhenyu@bit.edu.cn文章来源地址https://www.toymoban.com/news/detail-457113.html
到了这里,关于你所不知道的NVMe SSD固态硬盘读写速度及国货的惊喜--基于FPGA的速度测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!