大神教你玩转 SSD 系列二:基准测试环境和项目
《大神教你玩转 SSD 系列二:基准测试环境和项目》要点: 如何评估固态存储设备的性能,并根据业务需求挑选出合适的SSD产品?在上一篇中,介绍了 SSD 基准测试应该关注哪些指标,这里我们继续关注基准测试环境和具体测试项目. 前言本系列将分为以下 4 个主题进行介绍. 一、SSD基准测试应该关注哪些指标 二、基准测试环境(工具/磁盘要求等) 三、针对磁盘的具体测试项目 四、数据处理 本篇主要介绍第二、三点——基准测试环境和具体测试项目,在后面的文章推送中会继续将把本系列的其他各主题分享给大家. 基准测试环境1.1 测试环境
1.2 工具
测试工具选择有很多,比如fio,iometer,iozone,sysbench 等,但之所以选 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 磁盘要求
已经踩过的坑:
1.4 脚本测试中没有使用 jobfile 的形式,而是直接使用了命令行,其实这两种没有什么本质区别,依据个人喜好.
介绍一下测试中可能会用到的参数 –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,则以此为准. (编辑:ASP站长网) |