2020-08-08 mdtest - 元数据能力测试工具
mdtest说明
mdtest是一款针对服务器元数据处理能力的基准测试工具,可以用来模拟对文件或目录的open/stat/close操作,然后返回报告。
下载链接 https://sourceforge.net/projects/mdtest/
安装
-
安装依赖包
安装openmpi,使用yum安装即可
yum install openmpi openmpi-devel -y -
下载mdtest压缩包
mkdir -p <path_to_mdtest>/mdtest #创建用于存放mdtest的目录
cd mdtest
上传mdtest压缩包到该目录
tar -xvf mdtest-1.9.3.tgz #解压压缩包
-
环境变量配置
在/root/.bashrc中添加openmpi的执行路径,为了方便后面也可以添加mdtest的路径到环境变量中
export PATH="$PATH:/usr/lib64/openmpi/bin/"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/openmpi/lib/"
export PATH=$PATH:<path_to_mdtest>/mdtest #添加上一步中创建的mdtest的路径
使环境变量生效
source /root/.bashrc
-
修改MakeFile文件
步骤2中,解压mdtest压缩包之后
修改MakeFile文件
vim MakeFile
在这里插入图片描述mdtest: mdtest.c
mpicc -Wall -D (LARGE_FILE) $(MDTEST_FLAGS) -g -o mdtest mdtest.c -lm
注:第二行的缩进,需要使用Tab来进行,不能使用空格 -
编译
make
完成之后,在该目录下,就有多出来可执行的mdtest文件,且支持mpirun调用
命令
mdtest -h
-b: 目录树的分支参数
-B: 不同的阶段没有隔离 (create/stat/remove)
-c: 共同创建: task 0 完成所有的创建和删除工作
-C: 只创建文件或目录,不作删除;
-d: 指出测试运行的目录(若不指定,则默认当前目录)
-D: 只对目录操作进行测试(不包括文件)
-e: 从每个文件读出的文件大小
-E: 只读取文件
-f: 首先运行的任务号;
-F: 只创建文件,没有目录
-h: 输出帮助信息
-i: 测试迭代循环次数
-I: 每个树节点包含的项目
-l: 最后运行的任务号
-L: 只在目录树的“叶子”层创建文件/目录;
-n: 每个任务需要在每棵树中create/stat/remove的文件/目录数
-N: 遍历时指定和相邻任务的跨度
-p: 每次迭代之间延时(以秒计算)
-r: 删除文件/目录
-R: 随机遍历文件/目录
-s: 每次测试的任务数的跨度
-S: 共享文件访问(只针对文件操作)
-t: 记录特定目录的时间开销
-T: 只统计文件、目录;
-u: 为每个任务指定工作目录
-v: 详细说明(每个实例的选择加一)
-w: 写到每个文件的字节数bytes
-y: 再写执行完后同步文件到磁盘(同步写)
-z: 目录树的深度
笔记:
- -N通过将跨步设置为“每个节点的任务”来允许“读取邻居”方法。 不要将它与-B一起使用,因为它会创建竞争条件。
- -d允许格式为’-d fullpath1 @ fullpath2 @ fullpath3’的多个路径
- -B允许每个任务自行计时。 汇总结果反映了这一变化。
- -n和-I不能一起使用。 -I指定每个树节点创建的文件/目录的数量,而-n指定整个树上创建的文件/目录的总数。 使用-n时,整数除法用于确定每个树节点的文件/目录数。 (例如,如果-n为10且有4个树节点(z = 1和b = 3),则每个树节点将有2个文件/目录。)
- -R和-T可以分开使用。 -R仅表示如果要对文件/目录进行统计,那么它们将被随机统计。
常用命令:
mdtest -z 2 -b 3 -I 10 -d /mnt/test
目录树深度为2,每个节点分支为3,每个节点包含10个文件,测试目录为/mnt/test
总节点为1+3+9=13个,每个节点包含10个文件,总文件数为130
mdtest -z 3 -b 4 -I 10 -d /mnt/test
目录树深度为3,每个节点分支为4,每个节点包含10个文件,测试目录为/mnt/test
总节点为1+4+16+64=85个,每个节点包含10个文件,总文件数为850
mdtest -n 10000 -i 3 -d /mnt/test
测试10000个文件,测试3次,测试目录为/mnt/test
添加-F,-C,-E,-D等命令,单独测试某些功能
可以使用mpirun调用mdtest命令,进行多线程多客户端运行
增加并行的运行节点
[root@host1 ~]# vim /etc/openmpi-x86_64/openmpi-default-hostfile
添加
host2 slots=1
host3 slots=1
特别注意加slots 这个是配置权重的,如果不配置,第一条有默认权重,就无法在数目小时进行均衡操作
检查是否配置成功,np为操作线程数
[root@lab8105 ~]# mpirun --allow-run-as-root -np 2 hostname
host2
host3
如果想单机执行多进程,可以用-host指定主机
[root@lab8105 ~]# mpirun -host host2 --allow-run-as-root -np 2 mdtest -I 10 -z 3 -b 2 -d /mnt/test/
输出结果
Directory creation 目录的创建
Directory stat 目录创建统计
Directory removal 目录的删除
File creation 文件的创建
File stat 文件的统计
File read 文件的读取
File removal 文件的删除
Tree creation 目录树的创建
Tree removal 目录树的删除
注:Max(最大)Min(最小)Mean(平均),其中Std Dev表示标准差,时间单位是IOPS。所有的创建,统计,读取,删除,都是一个性能