Filebench
文章目录
什么是Filebench
Filebench是一块文件系统的测试工具,可以模拟服务器的一些操作来测试文件系统的性能
如:copyfiles createfiles randomread randomwrite等
测试指标
1.文件总大小相同 看操作带宽速度
如单个文件大小16k 文件数50000
对比单个文件大小1m 文件数800
总大小 800m
2.文件总数量相同 看响应iops时间
如单个文件大小16k 文件数800
对比单个文件大小1m 文件数800
安装Filebench
使用git获取源码
git clone https://github.com/Workeryuan/filebench.git
安装libtoool
yum install -y libtool
安装automake
yum install -y automake
安装yacc
yum install -y byacc
安装flex
yum install -y flex
生成autotool脚本、编译和安装
cd filebench
libtoolize
aclocal
autoheader
automake --add-missing
autoconf
./configure
make install
Filebench测试
自定义测试负载
define fileset name="testF",entries=10000,filesize=16k,prealloc,path="/tmp"
define process name="readerP",instances=2 {
thread name="readerT",instances=3 {
flowop openfile name="openOP",filesetname="testF"
flowop readwholefile name="readOP",filesetname="testF"
flowop closefile name="closeOP"
}
}
run 60
参数解释
define fileset
define fileset
修改文件仿真参数:
name
name=“testF”
文件名称:testF
entries
entries=10000
文件数量10000
filesize
filesize=16k
文件大小16k
prealloc
prealloc
预创建
path
path=“/tmp”
文件路径/tmp
dirwidth
dirwidth =100
文件深度100级
define proces
define proces
定义仿真进程
name
name=“readerP”
进程名称 readerP
instances
instances=2
进程数2
thread name
thread name=“readerT”
线程名readerT
instances
instances=3
线程数3
flowop openfile
flowop openfile
操作打开文件
name
name=“openOP”
任务名称openOP
filesetname
filesetname=“testF”
操作的文件testF
flowop
flowop readwholefile
读取文件
name
name=“readOP”
任务名称readOP
filesetname
filesetname=“testF”
操作的文件testF
flowop closefile
flowop closefile
关闭文件
name
name=“closeOP”
任务名称closeOP
run
run 60
运行时间60s
使用filebench中提供的负载
可以直接使用filebench中提供的负载,并修改相应的工作目录,文件大小等信息.
Filebench带有几个预定义的微观和宏工作负载,工作负载位于workloads/目录中
但不建议直接使用来自workloads/或/ usr / local / share / filebench / workloads /目录的工作负载文件。 主要原因是这些工作负载的大小不正确(例如,按照数据集大小)到特定系统。 例如,webserver工作负载的初始数据集大小仅略大于16MiB,这通常不是您想要测试包含多个千兆字节RAM系统的大小
故我们将这些提供的workload拷贝一份,并修改其以适应我们的测试
模拟webserver测试
先拷贝一份原生的配置文件,配置目录在下载的filebench源码下的workloads中
cp workloads/webserver.f ~/mywebserver.f
cd ~/
修改mywebserver.f 文件配置,以适应我们的测试
一般修改dir, nfiles, filesize, nthreads等主要参数
set $dir=/mnt/ext4 /* 表示我们的工作目录是/mnt/ext4 */
set $nfiles=10000 /* 表示我们测10000个文件 */
set $meandirwidth=20 /* 目录深度 */
set $filesize=cvar(type=cvar-gamma,parameters=mean:16384;gamma:1.5)
set $nthreads=100 /* 100个线程 */
set $iosize=1m
set $meanappendsize=16k
参数说明
dir
dir
操作的目录
nfiles
nfiles
操作的文件数
meandirwidth
meandirwidth
目录的深度
filesize
filesize
文件的大小
nthreads
nthreads
线程数量
iosize
iosize
操作的io大小(带宽)
meanappendsize
meanappendsize
对文件操作每次操作的大小(平均追加大小)
修改后执行
filebench -f mywebserver.f (需要再上面配置文件末尾加上运行时间(e.g. run 60))
createfile测试
拷贝配置文件
cp /home/wind/testsoft/filebench/workloads/mycreatefiles.f mycreatefiles.f
修改文件配置
set $dir=/mnt/mm /* 表示我们的工作目录是/mnt/mm */
set $nfiles=1000000 /* 表示我们测1000000个文件 */
set $meandirwidth=100 /* 目录深度 */
set $filesize=cvar(type=cvar-gamma,parameters=mean:16384;gamma:1.5)
set $nthreads=100 /* 100个线程 */
set $iosize=1m
set $meanappendsize=16k
常用模拟测试配置
对比测试
对比相同文件大小
iosizeo = 1m
1M带宽
nfiles = 800
filesize = 1m
800个文件文件,1M的文件 2.3ms 总执行大小 800M
执行了800次文件操作 响应时间2.3ms 总操作1.8s 平均执行带宽796mb
nfiles = 50000
filesize = 16k
50000个文件,16k的文件 1.4ms 总执行大小 800M
执行了50000次文件操作 响应时间1.4ms 总操作50s 平均执行带宽156.2mb
对比看平均执行速度,速度越快性能越好
iosize对数据的影响
修改iosize为2m
发现当带宽大于写入文件大小时的两者数据差别不大
对比相同文件数量
修改nfiles = 50000(对比相同文件数量)
16k文件大小的情况iops响应时间1.2ms
可以测试相同文件大小的指标 看操作带宽
可以测试相同文件数量的指标 看响应iops时间
基本存储大文件的性能好些
测试结果
第一列 显示关闭文件次数 写入文件次数 创建文件次数
第二列 显示操作次数
第三列 显示每秒操作次数
第四列 表示每秒带宽
第五列表示 平均每次操作响应时间
第六七列显示 最快响应时间和最慢响应时间
测试时发现有文件没数据
这是因为这个是压力测试工具,存在写入失败也是正常情况
指标选择
每秒操作次数
平均每次操作响应时间
版权归原作者 三千院喵 所有, 如有侵权,请联系我们删除。