1.下载安装 fio(安装在linux上)
下载fio压缩包地址:http://brick.keruel.dk/snaps/fio-2.2.10.tar.gz
安装步骤:
1. yum 安装依赖包
yum install libaio-devel fio
2.下载fio-2.2.10.tar.gz
wget http://brick.keruel.dk/snaps/fio-2.2.10.tar.gz
3.解压
tar zxvf fio-2.2.10.tar.gz
4.进入fio-2.2.10
cd fio-2.2.10
5.依次输入
./config ; make ; make install
2.fio优点
① 支持十几种引擎,可以自定义
②自带做图工具,调用gnuplot做图
③支持几乎所有的存储描述参数
④大量对CPU,内存,进程/线程,文件,IO特性的配置
⑤压缩,trace回放
3.example
1)随机读
命令:
fio -filename=/dev/vda1 -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=rand_100read_4k
filename=/dev/vda1
direct=1,使用directIO,跳过缓存,直接读写SSD
iodepth 1,队列深度为1
thread 线程数量
rw=randread,测试随机读的io
ioengine=psync,指定io引擎使用psync
bs=4k,单次的io块文件大小为4k
size=1000G,每个线程读写的数据量为1000G
numjobs=50,每个job开50个线程
runtime=180,测试时间为180s
group_reporting,关于显示结果的,汇总每个进程信息
name=rand100read_4k,一个任务的名字
bw:平均带宽
cpu:利用率
Depths:io队列
Submit:单个io提交要提交的io数
Complete:Like the above submit number, but for completions instead.
Issued:The number of read/write requests issued, and how many of them were short.
Latency:io延迟的分布
2)随机写
命令:
fio -filename=tmpfs -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=4k -size=2G -numjobs=20 -runtime=120 -group_reporting -name=rand_100write_4k
运行结果:
3)顺序读:
命令:
fio -filename=/dev/vda1 -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=4k -size=100G -numjobs=50 -runtime=120 -group_reporting -name=sqe_100read_4k
运行结果:
4)顺序写:
命令:
fio -filename=tmpfs -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=4k -size=2G -numjobs=20 -runtime=60 -group_reporting -name=sqe_100write_4k
运行结果:
4.随机读写与顺序读写的区别:
随机读写和顺序读写四存储器的两种输入输出方式,随机读写的速度快,但是占用空间多,而顺序读写的速度慢,但是占用的空间少,数据处理复杂
随机读写:每一段数据有地址码,可以任意跳到某个地址读取该段数据
顺序读写:数据以一定的长度连续存储,中间没有地址码,只能顺序读取
1.下载与安装(iozone on CentOS 7X64)
①下载: wget http://www.iozone.org/src/current/iozone3_434.tar
②解压:tar -xvf iozone3_434.tar
③安装:
cd ../src
cd current/
less makefile
make linux-AMD64
./fileop -h
./pit_server -h
./iozone -h
2.iozone(文件系统的读写性能测试工具)
iozone:是一个文件系统的benchmark工具,可以测试不同的操作系统中文件系统的读写性能
注:设置的测试文件的大小一定要大过你的内存(最佳为内存的2倍),不然linux会对你读写的内存进行缓存,会使数值非常不真实
3.example
注: 所有的命令都应该在current目录下执行
命令: ./iozone –a –g 1G –i0 –i1 –Rb ioperf.xls
该命令的含义是测量最大1G的文件的read, write, re-read, re-write性能。其中0=write/rewrite,1=read/re-read
相关参数:
-R产生excel格式的输出(仅显示在屏幕上,不会产生excel文件)
-b 产生excel格式的文件
-g 最大测试文件大小 for auto mode
-t 并发数
-s 测试文件的大小,支持-k -m -g
-q 块大小 for auto mode
-i的取值说明:
0=write/rewrite
1=read/re-read
2=random-read/write
3=Read-backwards
4=Re-write-record
5=stride-read
6=fwrite/re-fwrite
7=fread/Re-fread
8=random mix
9=pwrite/Re-pwrite
10=pread/Re-pread
11=pwritev/Re-pwritev
12=preadv/Re-preadv
命令: ./iozone -a -n 512m -g 4g -i 0 -i 1 -i 5 -f /mnt/iozone -Rb ./iozone.xls
注:进行全面测试.最小测试文件为512M直到测试到4G.测试read,write,和Strided Read.测试的地方在mnt下。生成Excel的文件.
运行结果:
在Execl文件中的这段表,它说明了这个表单是关于write的测试结果,左侧一列是测试文件大小(Kbytes),
最上边一行是记录大小,中间数据是测试的传输速度。举例说明,比如表中的“171980”,意思是测试文件大小为
524288M,以记录大小为32K来进行传输,它的传输速度为171980 Kbytes/s