下载地址:http://sourceforge.net/projects/mdtest/
在论文:<Metadata Performance Optimization in Distributed File System> 中, 海量并行存储系统Cappella的性能分析就用到了mdtest测试工具.
绘制表格如下:
使用方法: mdtest [-b #] [-B] [-c] [-C] [-d testdir] [-D] [-f first] [-F] [-h]
[-i iterations] [-I #] [-l last] [-L] [-n #] [-N #] [-p seconds]
[-r] [-R[#]] [-s #] [-S] [-t] [-T] [-u] [-v] [-V #] [-w #] [-y]
[-z #]
-b: 目录树的分支参数 ;
-B: 不同的阶段没有隔离 (create/stat/remove);
-c: 共同创建: task 0 完成所有的创建和删除工作;
-C: 只创建文件或目录,不作删除;
-d: 指出测试运行的目录(若不指定,则默认当前目录);
-D: 只对目录操作进行测试(不包括文件);
-f: 首先运行的任务号;
-F: 只创建文件,没有目录;
-h: 输出帮助信息;
-i: 测试迭代循环次数;
-I: 每个树节点包含的项目;
-l: 最后运行的任务号;
-L: 只在目录树的“叶子”层创建文件/目录;
-n: 每个任务需要再每棵树中create/stat/remove的文件/目录数;
-N: 遍历时指定和相邻任务的跨度;
-p: 每次迭代之间延时(以秒计算);
-r: 删除文件/目录
-R: 随机遍历文件/目录 ;
-s: 每次测试的任务数的跨度
-S: 共享文件访问(只针对文件操作);
-t: 记录特定目录的时间开销
-T: only stat files/dirs;
-u: 为每个任务指定工作目录;
-v: verbosity (each instance of option increments by one)
-V: verbosity value
-w: 写到每个文件的字节数;
-y: 再写执行完后同步文件到磁盘;
-z: 目录树的深度;
注意事项:
* -N 允许"read-your-neighbor" 方法
* -d 可以指定多个测试路径,'-d fullpath1@fullpath2@fullpath3'
* -B 允许每个任务对自己进行计时;
* -n and -I 不能同时使用,因为指定了每个树节点的文件/目录数量,而-I指定的是整棵树的文件/目录数量。
* -R and -T 能够同时使用。-R仅仅说明如果文件/目录被遍历则,则它们是被随机遍历的。
应用举例:
在这个例子中目录树的深度为1(z=2,),每个节点的分支为3(b=3)
可以用如下命令来实现上述例子:
mdtest -z 2 -b 3 -I 10 -C -i 3 //
测试结束之后会在终端输出类似如下结果:
SUMMARY: (of 3 iterations)
Operation Max Min Mean Std Dev
--------- --- --- ---- -------
Directory creation: 1870.549 900.197 1328.337 287.486
Directory stat : 256277.875 144661.102 225529.410 30421.063
Directory removal : 266.235 170.675 218.820 29.863
File creation : 888.288 398.944 617.266 152.324
File stat : 250191.822 221520.964 231919.579 9853.955
File removal : 2080.262 527.109 1177.666 580.771
Tree creation : 2624.508 2145.385 2549.133 135.936
Tree removal : 29.414 4.421 11.377 9.407
其中Std Dev表示标准差
并行处理:关于MPI我也不是很懂,只知道这个工具支持MPI。如果测试环境有部署MPI,可以使用MPI来协调多个客户端向服务器发起测试请求。
例如:
mpiexec -n 2 ./mdtest -z 4 -b 5 -I 5 -i 3 -u -d /mnt/ceph/test1@/mnt/ceph/test2
这个测试用例就表示调用两个节点来共同完成两个测试任务,并在执行这条命令节点返回的测试结果