服务器存储IO性能测试实践
对服务器进行io测试是服务器性能评价和采购考评的种要考察因素,也是性能诊断过程中种要的依据,fio工具是一款简单却功能强大的io性能检测工具,以下方式介绍io性能检测工具fio的安装使用方法和使用案例。
安装
进入官网下载安装包:
http://freshmeat.net/projects/fio/
上传服务器解压:
[root@localhost ~]# tar -zxvf fio-2.0.7.tar.gz
下载依赖包:
[root@ localhost fio-2.0.7]# yum install libaio-devel
安装工具:
[root@huron fio-2.0.7]# make & make install
测试命令案例
fio -filename=/home/tempfile -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=4K -size=1G -numjobs=1 -runtime=30 -group_reporting -name=mytest
▷ 参数解析
-filename=/home/tempfile:创建一个专门用于测试的临时文件在需要测试io性能的路径下面,这样用以避免对设备路径直接读取导致的用户或系统数据被破坏的场景;
-direct=1:透过linux系统内存cache对硬盘设备进行直接的io读写,可以避免cache造成的io性能虚高的不真实情况;
-iodepth 1:设定io队列深度为1 默认;
-rw=randwrite:随机写测试,比通常的顺序读写更有意义,通常程序和数据库处理高并发的客户请求的write进程产生的写大部分为随机写;
-ioengine=psync:控制引擎类型,fio支持多大十多种引擎类型;
-bs=4K:单块写的快大小设定为4K,通常4k为linux的最小io单位,此值设定越小越能体现随机读写的io能力;
-size=1G:设定测试文件的大小,注意不要超过空闲空间大小,在有cache的机械式存储上,可以设置超过cache的大小数倍,这样可以测试存储的全盘性能;
-numjobs=5:设定测试读写操作的进程个数;
-runtime=10:设定测试时间;
-group_reporting -name=mytest:设定报告模式和报告名称。
服务器实际测试结果
以上测试结果会随着参数调整的不同而有差异,总体上可以大致反应各种存储设备间的io性能和特性,概括起来可以有以下几点:
■ 机械硬盘在单块使用时,通常会有巨大的iops短板,已经无法满足正常的并发类业务需求;
■ 机械整列同闪存整列的吞吐量相差不多,但是iops上可见数量级上的差距;
■ 通常高高iops的设备,需要较多的线程数量或较深的io队列才能够完全体现出来;
■ 拥有固态闪存作为缓冲的盘组通常需要输入较大的测试文件,这样尽可能模拟全盘操作,从而削弱cache对测试结果造成的影响;
■ 应用和数据库在遇到io瓶颈时,要考虑写进程的并发线程数量,对是否能完全发挥存储设备的io性能至关重要。
其他影响因素
(1) 不同的raid级别
(2)是否使用LVM等类似技术在存储之上外加逻辑处理层导致的额外开销