没有合适的资源?快使用搜索试试~ 我知道了~
首页SSD深入浅出之SSD测试
SSD深入浅出之SSD测试
5星 · 超过95%的资源 需积分: 40 140 下载量 85 浏览量
更新于2023-03-16
评论 9
收藏 5.38MB PDF 举报
SSD深入浅出之SSD测试相关资源 本章将介绍常用的SSD测试软件,研发过程中的测试流程,常用仪器设备,以及测试方法等。
资源详情
资源评论
资源推荐
第7章 SSD测试
pc-shop.xiaoe-tech.com/apprToXjJCE2967/imgtext_details
本章将介绍常用的SSD测试软件,研发过程中的测试流程,常用仪器设备,以及测试方法等。
7.1 主流SSD测试软件介绍
7.1.1 SSD性能测试第一神器——FIO
对于SSD性能测试来说,最好的工具莫过于FIO了。
图7-1中所示的这个可爱的小伙子名字叫Jens Axboe,他是丹麦哥本哈根大学计算机系没毕业的
学生,他还有一个有名的同乡叫Linus,没想到老乡后来也成了他的领导。Jens今年(2018
年)41岁,16岁开始就接触Linux,后来也成了Linux开发者,现在是Linux Kernel大拿了,负责
块设备层的维护。这个块设备层就是跟我们SSD关系最紧密的层级,联系了上层文件系统和下
层设备驱动程序。他开发了不少有用的程序,比如Linux IO Scheduler里面的Deadline、CFQ
Scheduler,还有著名的王牌测试工具FIO。Jens曾经在Fusion-IO、Oracle等公司工作,现在
Facebook,阿呆听说在硅谷Facebook给码农的薪水是最高的。
图7-1 FIO作者Jens
FIO是Jens开发的一个开源测试工具,功能非常强大,本节就只介绍其中一些基本功能:线程、
队列深度、Offset、同步异步、DirectIO、BIO。
1/37
使用FIO之前,首先要有一些SSD性能测试方面的基础知识。
线程指的是同时有多少个读或写任务在并行执行,一般来说,CPU里面的一个核心同一时间只
能运行一个线程。如果只有一个核心,要想运行多线程,只能使用时间切片,每个线程跑一段
时间片,所有线程轮流使用这个核心。Linux使用Jiffies来代表一秒钟被划分成了多少个时间
片,一般来说Jiffies是1000或100,所以时间片就是1毫秒或10毫秒。
一般电脑发送一个读写命令到SSD只需要几微秒,但是SSD要花几百微秒甚至几毫秒才能执行
完这个命令。如果发一个读写命令,然后线程一直休眠,等待结果回来才唤醒处理结果,这叫
作同步模式。可以想象,同步模式是很浪费SSD性能的,因为SSD里面有很多并行单元,比如
一般企业级SSD内部有8~16个数据通道,每个通道内部有4~16个并行逻辑单元
(LUN,Plane),所以同一时间可以执行32~256个读写命令。同步模式就意味着,只有其中
一个并行单元在工作,暴殄天物。
为了提高并行性,大部分情况下SSD读写采用的是异步模式。就是用几微秒发送命令,发完线
程不会傻傻地在那里等,而是继续发后面的命令。如果前面的命令执行完了,SSD通知会通过
中断或者轮询等方式告诉CPU,由CPU来调用该命令的回调函数来处理结果。这样的好处
是,SSD里面几十上百个并行单元都能分到活干,效率暴增。
不过,在异步模式下,CPU不能一直无限地发命令到SSD。比如SSD执行读写如果发生了卡
顿,那有可能系统会一直不停地发命令,几千个,甚至几万个,这样一方面SSD扛不住,另一
方面这么多命令会很占内存,系统也要挂掉了。这样,就带来一个参数叫作队列深度。举个例
子,队列深度64就是说,系统发的命令都发到一个大小为64的队列,如果填满了就不能再发。
等前面的读写命令执行完了,队列里面空出位置来,才能继续填命令。
一个SSD或者文件有大小,测试读写的时候设置Offset就可以从某个偏移地址开始测试。比如从
offset=4G的偏移地址开始。
Linux读写的时候,内核维护了缓存,数据先写到缓存,然后再后台写到SSD。读的时候也优先
读缓存里的数据。这样速度可以加快,但是一旦掉电,缓存里的数据就没了。所以有一种模式
叫作DirectIO,跳过缓存,直接读写SSD。
Linux读写SSD等块设备使用的是BIO(Block-IO),这是个数据结构,包含了数据块的逻辑地
址LBA,数据大小和内存地址等。
1.FIO初体验
一般Linux系统是自带FIO的,如果没有或者版本太老,要自己从https://github.com/axboe/fio下
载最新版本源代码编译安装。进入代码主目录,输入下列命令就编译安装好了。
帮助文档用下面命令查看:
先来看一个简单的例子:
2/37
每一项的意思都可以从fio帮助文档查到,这里的参数解释如下:
fio:软件名称。
-rw=randwrite:读写模式,randwrite是随机写测试,还有顺序读read,顺序写write,随
机读randread,混合读写等。
-ioengine=libaio:libaio指的是异步模式,如果是同步就要用sync。
-direct=1:是否使用directIO。
-thread:使用pthread_create创建线程,另一种是fork创建进程。进程的开销比线程要
大,一般都采用thread测试。
–numjobs=1:每个job是1个线程,这里用了几,后面每个用-name指定的任务就开几个线
程测试。所以最终线程数=任务数×numjobs。
-iodepth=64:队列深度64。
-filename=/dev/sdb4:数据写到/dev/sdb4这个盘(块设备)。这里可以是一个文件名,
也可以是分区或者SSD。
-size=10G:每个线程写入数据量是10GB。
-name=job1:一个任务的名字,名字随便起,重复了也没关系。这个例子指定了job1和
job2,建立了两个任务,共享-name=job1之前的参数。-name之后的就是这个任务独有的
参数。
-offset=0MB:从偏移地址0MB开始写。
-bs=4k:每一个BIO命令包含的数据大小是4KB。一般4kB IOPS测试,就是在这里设置。
--output TestResult.log:日志输出到TestResult.log。
2.FIO结果解析
我们来看一个FIO测试随机读的结果。命令如下,两个任务并行测试,队列深度64,异步模式,
每个任务测试数据1GB,每个数据块4KB。所以,这个命令是在测试两个线程、队列深度64下
的4kB随机读IOPS。
3/37
FIO会为每个Job打印统计信息。最后面是合计的数值。我们一般看重的是总的性能和延迟。
首先看的是最后总的带宽,aggrb=784568KB/s,算成4KB就是196k IOPS。
再来看看延迟(Latency)。Slat是发命令时间,slat(usec):
min=6,max=79,avg=9.05,stdev=2.04说明最短时间6微秒,最长79微秒,平均9微秒,标准
差2.04。clat是命令执行时间,lat就是总的延迟。看得出来,读的平均延迟在571微秒左右。
clat percentiles(usec)给出了延迟的统计分布。比如90.00th=[684]说明90%的读命令延迟都在
684微秒以内。
3.用FIO做数据校验
用FIO可以检验写入数据是否出错。用-verify=str来选择校验算法,有md5、crc16、crc32、
crc32c、crc32c-intel、crc64、crc7、sha256、sha512、sha1等。为了校验,需要用do_verify
参数。如果是写,那么do_verify=1就意味着写完再读校验,这种会很占内存,因为FIO会把每个
数据块的校验数据保存在内存里。do_verify=0时只写校验数据,不做读校验。
4/37
读的时候如果do_verify=1,那么读出来的数据都会做校验值检查;如果do_verify=0,则只读数
据,不做检查。
另外,verify=meta时,fio会在数据块内写入时间戳、逻辑地址等,此时还能用verify_pattern指
定写入数据pattern。
4.FIO其他功能
FIO功能非常强大,可以通过man来查看每一个功能,也有网页版帮助文
档https://linux.die.net/man/1/fio。
5.FIO配置文件
前面的例子都是用命令行来测试,其实也可以用配置文件把这些参数写进去。比如新建FIO配置
文件test.log内容如下:
保存后,只需要fio test.log就能执行测试任务了,是不是很方便?
7.1.2 AS SSD Benchmark
AS SSD Benchmark是一款来自德国的SSD专用测试软件,可以测试连续读写、4K对齐、4KB
随机读写和响应时间的表现,并给出一个综合评分。它有两种模式可选,即MB/s与IOPS,如图
7-2所示。
5/37
剩余36页未读,继续阅读
futureguy
- 粉丝: 6
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 27页智慧街道信息化建设综合解决方案.pptx
- 计算机二级Ms-Office选择题汇总.doc
- 单链表的插入和删除实验报告 (2).docx
- 单链表的插入和删除实验报告.pdf
- 物联网智能终端项目设备管理方案.pdf
- 如何打造品牌的模式.doc
- 样式控制与页面布局.pdf
- 武汉理工Java实验报告(二).docx
- 2021线上新品消费趋势报告.pdf
- 第3章 Matlab中的矩阵及其运算.docx
- 基于Web的人力资源管理系统的必要性和可行性.doc
- 基于一阶倒立摆的matlab仿真实验.doc
- 速运公司物流管理模式研究教材
- 大数据与管理.pptx
- 单片机课程设计之步进电机.doc
- 大数据与数据挖掘.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论5