预估mdtest写入文件数


title: 预估mdtest写入文件数

前言

大家都知道mdtest工具一般是用来测试文件系统处理元数据性能的,测试本地文件系统或分布式文件系统都可以。

我们一般在开始测试之前都会设想测试模型,比如:

  1. 每个文件的大小是多少?4K还是512K或者其他?
  2. 目录的层次是多少?每个目录下放多少个文件?

上面这些都可以通过mdtest工具参数去指定,mdtest提供了下面几个相关参数:

  • -b: 指定非叶子节点的分支个数
  • -z: 指定从根到叶子节点的深度
  • -I: 每个节点下的文件或目录数
  • -np:并发的线程数

但是我们指定完上面的参数之后,并不知道这些参数一共会创建多少个文件、多少个目录。比如下面的命令:

$ mpirun -host ceph01 --allow-run-as-root -np 8 mdtest -I 5000  -b 3 -z 10 -d /mnt/cephfs -C -F

通常只有执行完这条测试命令之后,我们才能知道它创建了多少文件和多少目录。但是我们通常需要预先知道每条测试命令能创建多少文件和目录。

脚本

下面的脚本可以根据mdtest相关的参数,帮我们预测命令最后可以创建的文件数和目录数:

# coding: utf-8
import sys
import argparse

__author__ = 'ypdai'    

parser = argparse.ArgumentParser()
parser.add_argument("-b", required=True, type=int, dest="branch", default=1,
                    help="branching factor of hierarchical directory structure")
parser.add_argument("-z", required=True, type=int, dest="zone", default=1,
                    help="depth of hierarchical directory structure")
parser.add_argument("-I", required=True, type=int, dest="item", default=10, help="number of items per tree node")
parser.add_argument("--np", required=True, type=int, dest="number", default=1, help=u"number of concurrent threads")

args = parser.parse_args()

n = 0
m = 1


def calc(branch, zone):
    global n, m
    if zone <= 0:
        return
    n = n + branch ** m
    m += 1
    return calc(branch, zone - 1)


calc(args.branch, args.zone)

ds = n + 2
fs = (ds - 1) * args.item

fs = fs * args.number if args.number >= 1 else fs

print("dirs: %s" % ds)
print("files: %s" % fs)

使用示例

就拿我们上给的mdtest命令做测试:

$ python .\caclmdtest.py -b 3 -z 10 -I 5000 --np 8
dirs: 88574
files: 3542920000

这样就可以知道,这组mdtest参数最后创建了3542920000个文件和88574个目录。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 10,050评论 0 5
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 11,041评论 0 9
  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 9,513评论 0 5
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 11,338评论 0 10
  • 曾经很喜欢一个人,本来还算有分寸的人,到了喜欢的人面前,变得很粘人,会不安,会焦躁,最后,终于弄丢了那个自...
    胸无点墨的少女阅读 1,153评论 0 0

友情链接更多精彩内容