设为首页 - 加入收藏 华夏网 (http://www.hxwgxz.com)- 云主机,资讯,互联网,人工智能,云计算,大数据,区块链,VR,站长网!
热搜: 2019 google 中国 2020
当前位置: 主页 > 电商 > 正文

大神教你玩转 SSD 系列二:基准测试环境和项目

发布时间:2021-01-14 20:49 所属栏目:[电商] 来源:网络整理
导读:《大神教你玩转 SSD 系列二:基准测试环境和项目》要点: 本文介绍了大神教你玩转 SSD 系列二:基准测试环境和项目,希望对您有用。如果有疑问,可以联系我们。 如何评估固态存储设备的性能,并根据业务需求挑选出合适的SSD产品?在上一篇中,介绍了 SSD 基准测

《大神教你玩转 SSD 系列二:基准测试环境和项目》要点:
本文介绍了大神教你玩转 SSD 系列二:基准测试环境和项目,希望对您有用。如果有疑问,可以联系我们。

如何评估固态存储设备的性能,并根据业务需求挑选出合适的SSD产品?在上一篇中,介绍了 SSD 基准测试应该关注哪些指标,这里我们继续关注基准测试环境和具体测试项目.

前言

本系列将分为以下 4 个主题进行介绍.

一、SSD基准测试应该关注哪些指标

二、基准测试环境(工具/磁盘要求等)

三、针对磁盘的具体测试项目

四、数据处理

本篇主要介绍第二、三点——基准测试环境和具体测试项目,在后面的文章推送中会继续将把本系列的其他各主题分享给大家.

基准测试环境

1.1 测试环境

  • SanDisk CloudSpeed 800G * 4 RAID 5
  • Micron 5100 ECO 960G * 4 RAID 5
  • E5 2630 V2 *1
  • 96GB DDR3 ECC

1.2 工具

  • fio – 跨平台的 io 压力生成工具.功能强大,支持众多引擎和系统调优参数,数据采集,自带gnuplot画图脚本.
  • iometer – io 压力生成器,带GUI界面,数据采集功能强大,功能和参数并不如 fio 多,多用于 Windows 平台(本次未采用).
  • hdparm – linux下的磁盘工具,可以查看磁盘信息,用来进行安全擦除,设置 ATA 参数,设置HPA等
  • smartctl – linux下查看smart信息的工具.
  • python,perl,php,go,shell,awk,c,cxx …… 随便一个语言都行,用于处理fio生成的大量数据.
  • excel – 没错,就是excel,用来处理数据作图.当然只是为了便于展示,实际自动化测试流程可以用任何语言直接处理数据生成图表.

测试工具选择有很多,比如fio,iometer,iozone,sysbench 等,但之所以选 fio,有以下原因:

  1. 虽然上述工具基本都能胜任,但fio在linux下应用比较多,有比较深厚的群众基础,文档和邮件组也相对完善,尤其是邮件组,好多遇到的问题都搜到了作者的回复,让我甚是感动.
  2. fio更“专业”一些,iometer 相对可选择的参数少许多,应用平台也以windows为主,iozone 粗略看了一下,功能差不多,但国内用的较少,限于时间和经历没有深入研究
  3. sysbench更适合一些特定场景的测试,比如OLTP,基准测试 fio的功能足够且专一.

fio 可以使用一系列的进程或者线程,来完成用户指定的一系列io操作,典型的使用方式是写一个 JobFile,来模拟特定的 io 压力.

fio是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎,包括:sync,mmap,libaio,posixaio,SG v3,splice,null,network,syslet,guasi,solarisaio 等等.

对于单qd,可以直接用 sync,对于多qd,libaio + 深qd 或者 深qd+多进程(numjobs).

1.3 磁盘要求

  • 新盘或者做过完整的安全擦除
  • 对于曾经设置过 HPA (Host protected Area,ATA8-ACS SET MAX ADDRESS),清除HPA
  • 不应该使用raid,除非想测试raid下的性能 但其实这些都不是硬性要求.首先磁盘用用就变成脏盘了,第二,很少有人设置HPA,第三,多数SATA磁盘最终都会挂在RAID卡上用.所以以上三点都是测试单个盘的要求,最终,还是建议怎么用就怎么测.

已经踩过的坑:

  • fio 版本不要使用 2.0.13,一开始直接通过包管理安装了 fio 2.0.13,使用中各种 CPU 100%,数据飙高,还出了 core,于是被迫 cmm 大法编译安装了新版.
  • 安装新版 fio 可能需要安装 zlib-dev libaio-dev,如果你在没安装前就编译了,需要重新编译.

1.4 脚本

测试中没有使用 jobfile 的形式,而是直接使用了命令行,其实这两种没有什么本质区别,依据个人喜好.

/usr/local/bin/fio –filename={FIO_TEST_FILE}

–direct=1

–ioengine=libaio

–group_reporting

–lockmem=512M

–time_based

–userspace_reap

–randrepeat=0

–norandommap

–refill_buffers

–rw=randrw –ramp_time=10

–log_avg_msec={LOG_AVG_MSEC}

–name={TEST_SUBJECT}

–write_lat_log={TEST_SUBJECT}

–write_iops_log={TEST_SUBJECT}

–disable_lat=1

–disable_slat=1

–bs=4k

–size={TEST_FILE_SIZE}

–runtime={RUN_TIME}

–rwmixread={READ_PERCENTAGE}

–iodepth={QUEUE_DEPTH}

–numjobs={JOB_NUMS}

介绍一下测试中可能会用到的参数

–filename 指定fio的测试文件路径.可以是文件或设备(设备需要root权限)

–direct=1 绕过缓存

–ioengine=libaio 使用libaio,linux原生异步io引擎,更多引擎参考fio man

–group_reporting 将所有的进程汇总,而不是对于每一个job 单独给出测试结果

–lockmem=512M 将内存限制在 512M,然而实际测试中发现似乎没什么用,有待考察

–time_based 即使文件读写完毕依旧继续进行测试,直到指定的时间结束

–rwmixread 读写比例,0为全读,100为全写,中间为混合读写

–userspace_reap 提高异步IO收割的速度.

这是霸爷的解释 (?http://blog.yufeng.info/archives/2104?),未做深入研究,但从测试来看,似乎影响不大

–randrepeat=0 指定每次运行产生的随即数据不可重复

官方解释 Seed the random number generator in a predictable way so results are repeatable across runs. Default: true.

–norandommap 不覆盖所有的 block

一般来说,在进行4k 读写时,由于随机数的不确定性,可能有些块自始至终都没有被写到,有些块却被写了好多次.但对于测试来说 是否完全覆盖到文件并没有什么关系,而且测试时间相对足够长的时候,这些统计都可以略过.

–ramp_time=xxx(seconds)

指定在 xxx 秒之后开始进行日志记录和统计(预热),非稳态测试这里指定了10秒,用于让主控和颗粒“进入状态”

–name 指定测试的名称,代号

–write_latency_log=latency_log前缀 记录延迟日志

–write_bw_log 记录带宽(吞吐量)日志

–write_iops_log 记录 iops 日志

–bs=4k 4K测试

–size=XXXG 指定测试文件大小,如不指定,写满为止 或者全盘(例如/dev/sdX /dev/memdiskX)

–runtime=1200 执行1200秒,或者执行完整个测试,以先达到的为准.如果指定了 –time_based,则以此为准.

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

网友评论
推荐文章