SSD新范式 |数据中心SSD测试 之Windows篇(一)
数据中心/企业级SSD的测试是一个非常庞杂的工程,但许多用户和经销商并没有充分理解这一点。为了让大家对数据中心SSD的测试有更深入的了解,我们准备了本系列的文章。
环境与工具
数据中心SSD通常是用在服务器或者工作站当中的。主要的运行环境(操作系统)是Windows、Windows Server,以及各式Linux系统,如CentOS、Ubuntu,还有国产的OpenEuler、龙蜥、OpenCloudOS等。
Linux是大多数服务器使用的操作系统,Linux系统下最常用的测试软件是FIO。但考虑到Linux的部署、命令行操作还是有一定的操作门槛,这方面的内容我们将来再做展开。
在多数人更为熟悉的Windows系统下,常用于数据中心SSD测试的工具软件是IOmeter。IOmeter不需要安装,压缩包内只有两个文件,直接运行其中的“IOmeter.exe”文件即可。
一些数码大V在消费类SSD中也会使用IOmeter以体现其专业度。这种“专业”会包括两方面:其一,IOmeter的界面比CystalDiskMark、TxBENCH、AS SSD等“快餐”测试软件要复杂得多,会给人营造艰深晦涩的感觉。
其二,IOmeter确实可以提供“快餐”软件所缺乏的数据,典型的成果包括诸如“万秒图”之类的。“万秒”意味着可以给SSD比较重的负荷,说服力也会高很多。而工作负荷的轻重,不仅仅是高低档消费类SSD的区别,也是数据中心SSD与消费类SSD的根本区别。
SSD工作负荷的轻重,主要体现在几个方面:
1、 队列深度
2、 混合读写
3、 持续时间
这几方面的内容我们会在相关的测试项目中逐步展开。同时,我们先通过消费者熟悉的快餐测试软件帮助读者理解测试项目的内涵,并在此基础上逐步过渡到IOmeter,再进阶到FIO的应用。
测试最基本的设置:
数据包大小
略有SSD测试常识的人都知道,需要考察几种性能:顺序读、顺序写、随机读、随机写。
那么,顺序和随机的定义是什么?
先说随机。现代操作系统的内存和文件系统都是页式管理,以4KB为单位。基于磁盘的512Byte扇区概念对SSD而言意义不大。因为NAND Flash的基本存储单元是页,容量一般为2KB或者4KB,这是最小的读写单元。因此,综合操作系统和NAND Flash的特点,4KB的数据块会被看做是最基本、最通用的操作单元,公认用这个容量的数据包当做“随机”读写的代表。
考虑到应用或者SSD的特点,在某些测试中8KB、16KB这样的数据会更有实际意义。譬如Oracle数据库的默认块大小是8KB,也可以被设为2KB~64KB不等。再譬如Solidigm D5-P5316、P5336等大容量SSD使用了64KB或者16KB大小的间接单元(IU,indirection unit),它们可以接受4KB的写入,但使用更大的数据单元会更有效率。使用这些软硬件的用户都会进行针对性的优化,对应的,测试软件在考察随机性能时也应该进行相应的设置。
刚才说的是“随机”读写的尺度与“页”相关,那么,“顺序”读写的尺度就与块相关了。若干NAND Flash的页会组成一个块,典型的是64个页。常见的块容量可能是128KB、256KB、512KB。NAND Flash的擦除是以块为单位的。因此,128KB数据包的读写可以看作是顺序操作的最小单元,1到4个数据块正好填满一个块。也有的测试会使用较大的单元,如IOmeter的预设是256KB,CrystalDiskMark预设了1MB等,这些数据包的容量可能更接近NAND Flash的实际块容量。
以人们熟悉的CrystalDiskMark为例,左侧的色块是SEQ1M、SEQ128K、RND4K,代表的就是顺序读写(1MB数据包)、顺序读写(128KB数据包)、随机读写(4KB数据包)。
综上,设置正确的数据包大小,就是考察SSD的随机或顺序读写的性能。最普适的设置是4KB和128KB,酌情按照需要额外增加特定的数据包大小。
对测试成绩影响最大的设置:
队列深度
要想在SSD测试中获得理想的成绩,最值得留意的重点是设置适宜的队列深度。
对于个人电脑,需要同时访问SSD的应用程序并不多,主要就是前台运行的软件(如游戏、图形图像软件)会断续读写较大的文件,以及后台运行的通讯工具(包括电子邮箱、即时通讯工具)偶尔接收信息,持续时间较长但吞吐量比较小的行为主要是后台上传下载一些文件或者系统更新等。整体而言,消费类SSD的工作队列深度在1~4之间。
服务器面对的情况就不一样,其会同时服务多个用户/租户,其并行操作的规模要大得多,平均到每个SSD的工作队列深度通常在16~64的水平。
常用的测试软件大多可以模拟比较大规模的访问,譬如CystalDiskMark,其4KB随机写测试的默认设置是线程数为1,队列32——ATA协议的最大队列深度就是32。而针对NVMe SSD的预设为线程16、队列32,也就是界面中简写的“Q32T16”。
实际的队列深度就是队列数乘以线程数,Q32T16就是32×16=512,总共可以向SSD发出512队列深度的操作请求。NVMe协议可以接受64K之多的队列,而且还可以优化操作顺序,原则上队列深度越大,平摊下来的指令延迟相对越小,IOPS会越高。因此,在使用CystalDiskMark做测试时,如果忘记选择NVMe模式,那就是使用较小的32队列深度进行随机测试,成绩就会差一些。
深究一下队列和线程
队列深度是我们设置的队列数和线程数的积。理论上来说,对于SSD而言,线程1×队列512,与线程16×队列32,由于乘积相同,其实是等效的。
较多的线程可以充分发挥现代处理器核心数量的优势,有可能带来更优的测试数据,但这并不绝对,这是因为跨处理器内核甚至跨插槽的操作也可能会带来预期以外的结果。相对而言,线程1得到的测试数据更容易复现。因此,在实际的测试当中,我们会建议分别考察1个线程和8/16个线程的结果。
多线程的测试还有更为复杂的设置技巧,譬如让不同线程写入不同的区域,这会带来更可靠的性能。
较大的队列深度有利于获得更高的IOPS,让数据更好看。但对于消费类SSD,深队列的测试数据参考价值不高,大家还是看浅队列(Q1T1)的数据更有参考价值。对于数据中心SSD,一般官方公布的4KB随机读写测试的数据是在256队列深度下的。更大的队列深度,如512,可以体现特别极端的情况,但实际应用中很少发生,因为积压太多请求也意味着累积的延迟非常大,会拖慢整个系统的响应。如果服务器真的会有这么大的负荷,那应该建议配置更多的SSD来分担。
小结
今天,大家对SSD测试的基本参数就算入门了,对常见测试软件提供的预设信息可以做到“知其然,知其所以然”。对于IOmeter,我们只是初步展示其界面,其中有许多的预设项目,经过本节文章,大家也能够有所理解。下一节,我们将详细讲解IOmeter的设置,以及一些稍微高级的测试设计技巧。
关于 Solidigm
Solidigm 是全球领先的创新 NAND 闪存解决方案提供商。Solidigm致力于成就客户,激发数据无限潜能,推动人类发展进步。源自于英特尔出售的NAND和SSD业务,Solidigm公司于 2021 年 12 月正式成立,目前是半导体领导者SK 海力士在美国的独立子公司。Solidigm 总部位于美国加州兰乔科尔多瓦,拥有 2000 多名员工,在全球 20 个地区设有办事机构。如欲了解有关 Solidigm 的更多信息,请访问[https://solidigm.com],或关注微信公众号[SolidigmChina]。"Solidigm"是SK hynix NAND Product Solutions Corp (d/b/a Solidigm) 的商标。
SPI-Flash是什么?使用注意事项及常见问题
一.概念:
SPI:serial peripheral interface
串行接口设备,spi flash 就是通过串行的接口进行操作的flash存储设备
flash按照内部存储结构不同,分为两种:nor flash和nand flash。这里spi flash 属于 nor flash!
spi flash 读写较慢,次数有限制,一般用于不经常更改的存储。
早期Norflash的接口是parallel的形式,即把数据线和地址线并排与IC的管脚连接。但是后来发现不同容量的Norflash不能硬件上兼容(数据线和地址线的数量不一样),并且封装比较大,占用了较大的PCB板位置,所以后来逐渐被SPI(串行接口)Norflash所取代。同时不同容量的SPI Norflash管脚也兼容封装也更小。,至于现在很多人说起NOR flash直接都以SPI flash来代称。
二、SPI FLASH读写介绍
对flash芯片的操作,一般包括对flash芯片的擦除,编程和读取,各大厂商的SPI flash芯片都大同小异,操作命令基本是没什么变化的,当我们拿到一款芯片,要特别注意芯片的容量,操作分区等。
其实,无论是对芯片的擦除,编程还是读取操作,我们大致可以按照以下的套路来:写命令---写地址---写(读)数据。正如以下的时序图一样清晰明了,我们先把片选信号拉低,再依次写指令,地址和数据,就可以对FLASH芯片进行操作。
掌握以上方法,就可以轻松操作SPI flash芯片了,当然,对时序这种底层的操作,还需要不断学习和积累,不论是用FPGA还是MCU,最终都是为了产生时序信号,只要静下来认真理解了它,一切问题就迎刃而解了。
三.注意事项
1.不同的SPI FLASH芯片可能会提供的擦除方式:扇区擦除(4KBytes),半块擦除(32KBytes),块擦除(64KBytes),片擦除。
2.不同的SPI FLASH芯片可能会提供的编程方式(也就是写数据):页编程(256Bytes),扇区编程(4KBytes)。
3.SPI FLASH如果擦除过,在往里面写0xFF这样的数据意义不大,因为它的特性就是擦除后数据就是0xFF。
4.写入flash时,只能把数据(bit)从1该为0。
5.传统的EEPROM的特点就是可以随机访问和修改任何一个字节,可以往每个bit中写入0或1。而写入flash时,只能把数据(bit)从1该为0。但是传统的EEPROM容量因成本的缘故收到限制,绝少有超过有512K的。
6.Nor Flash容量相对小,成本高,基本没坏块,数据线和地址线分开,可以实现随机寻址,读取任何一个字节,擦除任然要按块来擦。NAND FLASH容量大,成本低,坏块经常出现,但可以标记坏块,使软件跳过,数据线和地址线复用,按块擦除按页读取。
四、项目实操中的问题
项目中需要用到SPI flash,在使用这个4MB 的SPI flash中出了三个问题让印象深刻,特记录下来以作提醒
问题1:我们知道SPI flash也分主从模式,一般master都是有MCU等器件担当的,而slave有SPI器件担任,笔者的这个小系统同样如此。
并且MCU是自带有SPI controler,接线方式依然是四线解法,SCK,CS,DO,DI,在看手册的过程因为自己的不注意,看到描述是“user can
decide the SPICS configuration in the master mode,if P_IO_Ctrl[10] set 1, the IOA[12] as GPIO function, if P_IO_Ctrl[10] set 0, the IOA[12] as SPICS hardware function” 我当时没有好好体会这句话的意思,简单的认为我在使用SPI flash之前就k肯定需要把P_IO_Ctrl[10]设置为 0, 其实这是错误的认识。
因为现在是通过MCU对slave SPI器件操作,首先肯定是需要MCU端来选中SPI器件,从master角度来讲,只需要一个GPIO信号线接到slave的CS端,同时输出低电平就相当了选中了这个slave了,之所以如此说法是因为这是从slave角度来说的,相当于MCU现在也作为一个slave,另一个MCU控制这个slave,则这时候SPI 初始化时就需要把 P_IO_Ctrl[10] set 0
问题2:需要一个烧录器向SPI flash中烧写内容,用的是西立特公司的superPro,但烧录步骤错误了,忘记了在编程之前必须要erase,
了解了一下,好像是和nor flash一样的介质,擦除会把所有bit置1,在编程的时候根据需要只可以把相应位置0.
问题3:在使用MCU上一个SPI 控制器接口接SPI flash时,没有交叉连接,即MCU 的DI应该接SPI 的DO,MCU 的DO应该接SPI 的DI。
(21ic整理自网络,编辑:王丽英)
相关问答
flash 的文字怎么弄 擦除 效果?可以用橡皮换掉的.要先CTRL+B将文字打散后进行操作可以用橡皮换掉的.要先CTRL+B将文字打散后进行操作
NAND Flash 和Nor Flash 到底有什么区别?1、存储架构不同NORFlash架构提供足够的地址线来映射整个存储器范围。这提供了随机访问和短读取时间的优势,这使其成为代码执行的理想选择。另一个优点是100%...
flash 擦写一页需要多久?片内flash擦除及写入的时序由芯片内自动控制,当发出擦除或写入指令时,CPU暂时停止工作,外围设备(串行口、ADC、Timer等仍处于活动状态),外围设备产生的中断...
不小心卸载了Adobe Flash Player 怎么处理?-ZOL问答在搜索AdobeFlashplayer9,找到后。退出所有可能正在使用这个程序的操作,比如关闭IE等等,直接删除!!!,重启计算机有用(0)回复SafeVersions我已经删除...
如何彻底清除 flash 缓存?彻底清除flash缓存的方法是通过以下步骤:1.打开浏览器设置:在浏览器的菜单栏中找到设置选项,一般表示为一个齿轮或三个水平线的图标。2.进入高级设置:在设...
NandFlash 和NorFlash的区别?1、存储架构不同NORFlash架构提供足够的地址线来映射整个存储器范围。这提供了随机访问和短读取时间的优势,这使其成为代码执行的理想选择。另一个优点是100%...
ESP8266怎么 擦除flash ?要擦除ESP8266的Flash存储器,可以通过使用ESP8266的编程工具和命令来执行以下步骤:1.连接ESP8266:将ESP8266通过USB连接到计算机,并使用适当的编程工具(例...
flash 画的图形被遮住怎么办?如果Flash画的图形被遮住了,可能是由于多种原因造成的。下面是一些可能的原因以及如何解决它们的方法:1.浏览器缓存问题:如果您最近更新了,但浏览器仍然显示...
为何 flash 橡皮擦工具不能 擦除 基本矩形工具和基本椭圆工具? -...如果觉的我答案有用,请点赞。鼠标点击矩形工具不放,右边便出现椭圆工具,,鼠标移到椭圆工具上松开。
clear flash 什么意思?“clearflash”是清除内存的意思,会删掉安卓手机里的所有安装的软件,恢复出厂模式,谨慎操作。这项操作一般会恢复出厂设置。“clearflash”是清除内存的意...