测试目的
测试文件系统性能测试主要测试:读性能 写性能
文章目录
测试工具
IOZONE
什么是IOZONE
iozone是文件系统的测试工具
比dd更强大
是一个第三方的应用软件
IOZONE与dd测试的区别
dd除了测试文件读写还会对块进行测试
iozone是对文件的测试
IOZONE测试内容
read:读
write:写
re-read:重读
re-write:重写
read backwards 反向读 从最后往回读
read strided 跳跃读 从前面往后面读
fread 文件读
fwrite文件写
random read随机读
pread 预读
aio_read 异步读
aio_write 异步写
测试注意事项
测试读取的文件大小一定要大于内存(最好是大于内存2倍)
安装IOZONE
使用wget下载iozone
wget http://www.iozone.org/src/current/iozone3_487.tar
安装
# tar -xvf iozone3_487.tar
# cd iozone3_487/src/current
(# getconf LONG_BIT 查看本机是32或64位)
# make linux-AMD64(直接执行make 有帮助选项)
IOZONE测试模式
自动模式
块大小从4k到16M,测试文件大小从64k到623M
iozone -a
-a会将全部模式都测试一遍
显示结果:
第一个是块大小,第二个测试了多少块
第三个是之后是速度
关键指标
reclen测试多少块文件
write 顺序写速度
read 顺序读速度
输出测试结果
iozone -Rab output.xls
重点看第一个多进程Children子进程速度
Parent父进程速度
测试文件大小配置
测试的文件大小为内存的两倍
比如内存1g测试文件大小为2g
iozone -Ra -g 2g
指定测试内容
-Ra是输出到屏幕上 -Rb输出到文件
-g 测试大小为2g -i 0 测试写 -i 1是测试读
iozone -Ra -g 2g -i 0 -i 1
NFS的测试
测试网络中的情况 加上-c 这样才测试时会自动执行close()函数,防止文件操作符达到系统上限
iozone -Rac
测试案例
-a自动测试 -n 最小大小512m -g 最大大小4g -i 测试 写 0 测试 读 1 测试跳读 5 -f 测试文件/mnt/iozone -Rb 输出到文件./iozone/xls
./iozone -a -n 512m -g 4g -i 0 -i 1 -i 5 -f /mnt/iozone -Rb ./iozone.xls
对gluster的测试
写文件测试
iozone -i 0 -s 8G -r 128k -+n -f /mnt/mm/iozonetest -w -Recb /tmp/log.xls |tee -a /mnt/mm/iozone.log
读文件测试
每次读之前需要清除内存:
echo 3 >/proc/sys/vm/drop_caches
iozone -i 1 -s 4G -r 128k -+n -f /mnt/mm/iozonetest -w -Recb /tmp/log.xls |tee -a /mnt/mm/iozone.log
参数说明
-i 0写模式 1读模式
-s 8G测试文件大小8G
-r 文件快大小128k
-w 写完文件不擅长
-Recb 产生execl格式的输出日志,包括flushing时间,将产生二进制的execl的日志文件名,测试包括文件的关闭时间
-+n:不测试重读重写
-f 指定测试文件名
|tee -a /mnt/mm/iozone.log测试结果追加到iozone.log
后面
tee -a读取标准输入的数据
常用参数说明
-a 全面自动模式
-i N 用来选择测试项
可以使用-i 0 -i 1 -i 2
0=write/rewrite
1=read/re-read
2=random-read/write:必须测试的文件需要从在
3=read-backward
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 预写入与9的差别:linux用函数的方式进行读写 用文件结构方式写入
12=preadv/Re-preadv
-r block size 指定一次写入/读出的块大小
-s file size 指定测试文件的大小
-f filename 指定测试文件的名字,完成后会自动删除(这个文件必须指定你要测试的那个硬盘中)
-F file1 file2… 指定多线程下测试的文件名
如果-f设置了名字,多线程会自动生成文件名
批量测试项:
-g -n 指定测试文件大小范围
最大测试文件为4G,可以这样写 -g 4G
最小测试文件为4M -n 4M
-y -q 指定测试块的大小范围
-w 测试的填写的输出文件不删除
输出:
下面是几个日志记录的参数.好像要输出成图象进行分析,需要指定-a的测试才能输出
-R 产生Excel到标准输出
-b 指定输出到指定文件上. 比如 -Rb ttt.xls
测试的定义
Write 写入性能
Write的性能通常会比Re-write的性能低
Re-write: 测试向一个已存在的文件写入的性能
当一个已存在的文件被写入时,所需工作量较少,因为此时元数据已经存在
Read读取性能
Re-read 测试读一个最近读过的文件的性能
Re-Read性能会高些,因为操作系统通常会缓存最近读过的文件数据
Random Read: 测试读一个文件中的随机偏移量的性能
Random Write: 测试写一个文件中的随机偏移量的性能
Random Mix: 测试读写一个文件中的随机偏移量的性能
Backwards Read: 测试使用倒序读一个文件的性能
Record Rewrite: 测试写与覆盖写一个文件中的特定块的性能
Strided Read: 测试跳跃读一个文件的性能
Fwrite: 测试调用库函数fwrite()来写文件的性能
Frewrite:测试调用库函数fwrite()来写文件的性能
Fread:测试调用库函数fread()来读文件的性能
Freread: 这个测试与上面的fread 类似
Mmap:许多操作系统支持mmap()的使用来映射一个文件到用户地址空间
mmap是采用内存映射的方式进行测试