当前位置: 首页 > 工具软件 > Filebench > 使用案例 >

Filebench的安装与使用

锺离玮
2023-12-01

 

https://blog.csdn.net/microsoft2014/article/details/60145433

一 下载和安装
建议下载filebench-1.5-alpha3.tar.gz,下载地址:
https://sourceforge.net/projects/filebench/files/1.5-alpha3/filebench-1.5-alpha3.tar.gz/download
笔者在Cent OS 6.7he centos7.6 下测试通过。
安装
$sudo tar -zxf filebench-1.5-alpha3.tar.gz -C /usr/local
$yum install gcc
$yum install flex bison
解压后需要安装gcc、lex和yacc(linux下是用flex和bison来分别代替lex和yacc的),因为后续安装需要,不然会出问题。
$cd /usr/local/filebench-1.5-alpha3
$./configure
$make
$sudo make install
二、Filebench的命令

1、进入到workloads自带的工作负载文件
cd /usr/local/share/filebench/workloads
 2、运行默认的工作负载文件测试
    filebench -f webserver.f
    filebench -f fileserver.f
3、也可以copy自带的负载文件进行修改
cp fileserver.f expserver.f
可以修改的参数在 Filebench参数解读 中可以看到,一般就修改dir, nfiles, filesize, nthreads等主要参数,根据情况,有些文件需要在后面加入run 60。然后就可以开始测试了。
4、编写自定义 .f 文件
如果里面的满足不了需求,也可以编写自己的 .f 文件来进行测试 :WML(workload model language)
三、Filebench参数解读
file_num:文件个数
meandirwidth:每个目录下创建文件的个数
filesize:测试文件的大小
nthreads:创建的线程数
iosize: 指定读写的iosize
meanappendsize:平均追加大小
runtime:运行时间
非交互式:Non-interactively(/usr/local/share/filebench/workloads目录下有各种模型,都可以使用)
If you wish to run Filebench in non-interactive mode, you can use -f option. However, you need to add 'run <time>' to the end of the workload personality file. I prefer to create a copy of original workload file for that:
root@host# cp /usr/local/share/filebench/workloads/fileserver.f /tmp/fileserver-noninteractive.f
root@host# vim /tmp/fileserver-noninteractive.f (add 'run 60' to the end of this file)
root@host# filebench -f /tmp/fileserver-noninteractive.f

After that you will see traditional Filebench output.

文档提到的2个注意点:
1. filebench默认开启地址空间randomization (后面有解释,什么是address space randomization)。如果测试多进程的负载,为了稳定操作可以选择关闭该选项。方法是:echo 0 > /proc/sys/kernel/randomize_va_space
2. 如果想增加filebench的共享内存,有2个方法
   a. 用root用户执行。(su)
   b. echo 268435456 > /proc/sys/kernel/randomize_va_space (增加到256MB)
运行
你可以选择导入别人已经定制好的负载类型( 如fileserver)。也可以自己使用workload model language定制特定的负载。下面介绍的是文档演示的导入已经定制好的fileserver负载(模拟)。
1. 进入filebench
2. load fileserver (filebench导入对应的~.f文件,代码自带,也可以从这个地址下载http://sourceforge.net/apps/mediawiki/filebench/index.php?title=Pre-defined_personalities)
3. set $dir=/mnt (测试mnt目录)
4. run 60 (运行60秒,运行完毕后打印统计信息)
非交互式运行
执行一条命令即可完成测试,无需要像前面一步一步的设置各个参数。注意在配置文件的末尾添加 'run <time>'

四、写workload
我们可以自己写workload文件,语法格式可参考:https://github.com/filebench/filebench/wiki/Workload-model-language
# cat createfiles.f
...
// 下面是用户变量定义
set $dir=/home/yangguanjun3/mike/tst1
set $nfiles=50000
set $meandirwidth=100
set $meanfilesize=16k
set $iosize=1m
set $nthreads=16
// 设置退出模式,支持[ timeout | alldone | firstdone ]
set mode quit firstdone
// fileset:定义一组测试中用的files
// name=bigfileset:必须指定 - fileset的名称,后面flowop中用到
// path=$dir:必须指定 - 创建测试文件的目录
// size=$meanfilesize:可选,关键字也可以为filesize,默认为1KB - 测试文件的size
// entries=$nfiles:可选,默认位1024 - fileset中的file个数
// dirwidth=$meandirwidth:可选,默认为0 - 每个目录中创建的file个数
define fileset name=bigfileset,path=$dir,size=$meanfilesize,entries=$nfiles,dirwidth=$meandirwidth
// process:定义处理过程
// name=filecreate:必须指定 - 处理过程的名称
// instances=1:可选,默认为1 - 处理过程的进程数
define process name=filecreate,instances=1
{
// thread:process中的一个thread
// name=filecreatethread:必须指定 - 处理线程的名称
// memsize=10m:必须指定 - 线程启动后初始化为0的内存大小,用于read/write flowop
// instances=$nthreads:可选,默认为1 - 创建的线程数
thread name=filecreatethread,memsize=10m,instances=$nthreads
{
// flowop:定义处理流程中的每一步
// createfile/writewholefile/closefile:flowop的关键字,每个代表不同的操作
// name=$name:flowop的名称
// filesetname=bigfileset:指定op操作的fileset
// fd=1:指定file descriptor的值,在应用允许文件被多次open的场景中有用
// iosize=$iosize:指定读写的iosize
flowop createfile name=createfile1,filesetname=bigfileset,fd=1
flowop writewholefile name=writefile1,fd=1,iosize=$iosize
flowop closefile name=closefile1,fd=1
}
}
echo "Createfiles Version 3.0 personality successfully loaded”
// 开始运行filebench测试
// 格式:run [<runtime>],<runtime>不指定的话,默认为60s
run 60
五、Filebench结果解读
1、webserver.f 执行结果
openfile1   21557ops  180ops/s   0.0mb/s   2.2ms/op  4022us/op-cpu [0ms - 165ms]
10624: 144.911: IO Summary: 668111 ops, 5563.535 ops/s, (1795/180 r/w),  29.2mb/s,    382us cpu/op,  26.0ms latency
openfile1操作:21557总操作 180每秒操作 0.0mb每秒带宽 2.2每操作时延 [0ms - 165ms]最长最短时延最后一行为汇总。

flowop name - 支持的flowop有很多
所有threads的ops
所有threads的ops / run time
所有threads的READ/WRITE带宽
所有threads的每个op的平均latency
测试中op的最小和最大latency

IO Summary:
149970 ops :所有flowop的总和
9372.298 ops/s :所有flowop的总和 / run time
0/3124 rd/wr :所有flowop中READ/WRITE的ops / run time
48.8mb/s : 所有flowop的IO带宽
1.643ms/op :所有flowop的每个op的平均latency

2、fileserver.f 执行结果

本文转自同学的书面总结,已获得同意~

参考:

https://www.jianshu.com/p/4fcd6b8a4236

https://blog.csdn.net/microsoft2014/article/details/60145433

 

 类似资料: