首页 > 其他分享 >fsmark测试工具的使用

fsmark测试工具的使用

时间:2024-12-09 11:44:27浏览次数:4  
标签:tmp 文件 fs number mark fsmark 测试 使用 测试工具

Usage: fs_mark
        -h <print usage and exit>
        -k <keep files after each iteration>
        -F <run until FS full>
        -S Sync Method (0:No Sync, 1:fsyncBeforeClose, 2:sync/1_fsync, 3:PostReverseFsync, 4:syncPostReverseFsync, 5:PostFsync, 6:syncPostFsync)
        [-D number (of subdirectories)]
        [-N number (of files in each subdirectory in Round Robin mode)]
        [-d dir1 ... -d dirN]
        [-l log_file_name]
        [-l log_file_name]
        [-L number (of iterations)]
        [-n number (of files per iteration)]
        [-p number (of total bytes file names)]
        [-r number (of random bytes in file names)]
        [-s byte_count (size in bytes of each file)]
        [-t number (of total threads)]
        [-w number (of bytes per write() syscall)]

设计策略

  1. 关键参数优先:优先考虑对性能、稳定性等关键特性影响较大的参数。比如,线程数(-t)、每个目录文件数量(-N)、同步方法(-S)等。
  2. 边界测试与常见值结合:每个参数选择常见值与极限值的组合,以保证覆盖边界情况。
  3. 参数互斥和相关性:某些参数组合可能会相互排斥或者互相影响,因此要特别注意组合时的相关性。
  4. 分层抽样:按照不同的功能层次(如容量、性能、稳定性)选择代表性组合,避免在每个测试用例中都测试所有参数。
  5. 常见业务场景组合:根据实际应用中的典型场景设计测试,如文件系统的负载、性能瓶颈、并发访问、日志记录等。
  6. 性能瓶颈模拟:模拟一些可能导致系统性能下降的场景,如高负载、高并发等,测试系统的极限。

典型场景和组合设计

将根据几个典型的业务场景(如基础功能测试、并发压力测试、大文件处理、系统稳定性、日志记录等)来设计合理的测试组合。

1. 基础功能测试(最小配置)

这是基础功能验证的关键场景,确保系统能够在最低的配置下运行。

  • fs_mark -S X -D 2 -N 10 -n 10 -d /tmp/dir1 -L 1 -s 1024 -t 1 -w 512

解释:

  • 只使用最基本的设置,检查系统能否正确创建文件。

  • 最少的子目录和文件数量,1线程,最小文件大小(1k),最小的write调用大小(512字节)。

  • 验证每一种同步方法,确保每种方法均生效(X为0~6)

2. 容量测试(大规模文件生成)

当系统需要处理大量数据时,这类场景非常常见。此场景关注大规模文件生成和目录创建对性能的影响。

  • fs_mark -S X -D 1000 -N 5000 -n 5000 -d /tmp/dir2 -L 20 -s 102400 -t 20 -w 1024
  • fs_mark -S X -D 2000 -N 10000 -n 10000 -d /tmp/dir2 -L 20 -s 1048576 -t 40 -w 4096
  • fs_mark -S X -D 10000 -N 20000 -n 10000 -d /tmp/dir2 -L 20 -s 4096 -t 40 -w 512

解释:

  • 选择较大数量的子目录(D)和文件(N),并增加迭代次数(L)。
  • 文件大小适中(100k和1M),多线程同时进行文件生成,模拟大规模文件系统负载。
  • 验证每一种同步方法,确保每种方法均生效(X为0~6)

3. 并发性能测试(多线程并发写入)

模拟多个线程并发执行文件创建和写入的情况,测试系统的并发性能和吞吐量。

  • fs_mark -S X -D 100 -N 100 -n 500 -d /tmp/dir1 -L 5 -s 8192 -t 64 -w 1024
  • fs_mark -S X -D 200 -N 1000 -n 5000 -d /tmp/dir1 -L 5 -s 1048576 -t 64 -w 4096

解释:

  • 多线程(最大支持64个线程)并发创建文件,文件大小适中。
  • 提升子目录和每个目录中的文件数量,测试并发处理大文件的能力。
  • 验证每一种同步方法,确保每种方法均生效(X为0~6)

4. 系统稳定性和极限测试(长时间大负载)

模拟长时间高负载运行,确保系统能够在极限情况下保持稳定。

  • fs_mark -S X -D 50 -N 5000 -n 5000 -d /tmp/dir3 -L 100 -s 1048576 -t 32 -w 4096 -F
  • fs_mark -S X -D 100 -N 10000 -n 10000 -d /tmp/dir3 -L 100 -s 104857600 -t 64 -w 8192

解释:

  • 使用高负载的设置,涉及大量的文件和目录、多个线程(32或64个)。
  • 通过增加-F选项,测试文件系统的极限,确保系统能够持续高负载运行。
  • 验证每一种同步方法,确保每种方法均生效(X为0~6)

5. 文件系统满负荷测试

测试当文件系统被填满时,系统的行为和稳定性。这对于验证文件系统的边界条件和恢复能力非常重要。

  • fs_mark -S X -D 50 -N 500 -n 500 -d /tmp/dir4 -L 10 -s 102400 -t 20 -w 2048 -F

解释:

  • 通过设置-F,模拟文件系统被填满的情况。
  • 多线程并发写入多个子目录,检查系统在文件系统达到上限时的表现。
  • 验证每一种同步方法,确保每种方法均生效(X为0~6)

6. 日志记录和监控(包括日志文件)

确保在大规模文件操作过程中,系统能够正确地记录日志,并且日志文件不会导致性能瓶颈。

  • fs_mark -S X -D 100 -N 100 -n 1000 -d /tmp/dir1 -l /tmp/fsmark.log -L 10 -s 10240 -t 5 -w 1024
  • fs_mark -S X -D 500 -N 1000 -n 10000 -d /tmp/dir2 -l /tmp/fsmark.log -L 20 -s 102400 -t 10 -w 2048

解释:

  • 启用日志文件记录,确保在大量文件操作时能够正确记录日志。
  • 测试多线程写入和不同文件大小对日志记录性能的影响。
  • 验证每一种同步方法,确保每种方法均生效(X为0~6)

标签:tmp,文件,fs,number,mark,fsmark,测试,使用,测试工具
From: https://www.cnblogs.com/honghu0420/p/18594542

相关文章

  • GIT的基础介绍一些使用方法
    Git超实用总结 *廖雪峰Git介绍 *Git使用规范 *常用Git命令清单Git远程操作详解Git工作流程Git分支管理策略git客户端TortoiseGit如果不习惯使用命令行可以安装git客户端但是建议还是用命令行方式来操作git,这个我网上找的,我从来不用。TortoiseGit介绍日常使用Gi......
  • 使用 Nim 实现简单的图像边缘检测
    Nim是一种高效、表现力丰富的编程语言,支持多种编程范式,尤其在性能和开发效率上表现优异。利用Nim的丰富库支持和高效编译特性,可以轻松处理图像相关的任务。下面,我们将使用Nim实现一个简单的图像边缘检测程序。实现代码以下代码使用Sobel算子来检测灰度图像的边缘:nim更多......
  • 使用 Clojure 实现简单的图像边缘检测
    Clojure是一门函数式编程语言,运行于JVM平台,适合处理复杂数据和并发任务。在图像处理领域,Clojure的丰富库支持和简洁的语法能够有效实现基本图像处理任务。本文将使用Clojure实现基于Sobel算子的简单边缘检测。实现代码以下代码使用clojure.java.io和clojure.core.mat......
  • 使用 Crystal 语言实现图像反转处理
    什么是Crystal语言?Crystal是一种静态类型的编程语言,它的设计目标是提供高性能和良好的可读性。Crystal语言在语法上非常接近Ruby,但它通过编译生成高效的机器代码。Crystal的类型系统在编译时进行检查,这使得它在运行时提供接近C语言的性能,同时保持类似Ruby的简洁性。Cr......
  • 【2024寒假全新】渗透测试工具大全(超详细),收藏这一篇就够了!
     黑客/网安大礼包:......
  • 使用Redis和OpenAI进行高效的RAG实现:解析Nike的10k财务文档
    引言在现代信息密集型的世界中,从大量文本数据中提取有意义的信息变得尤为重要。特别是当涉及到财务报告等复杂文档时,这一需求尤为突出。本篇文章将介绍如何使用Redis作为向量数据库,以及OpenAI的LLM(大语言模型)进行RAG(检索增强生成)操作,解析Nike的10k财务文档。主要内容环境......
  • 使用SELECT…INTO OUTFILE导出文本文件
    ​MySQL数据库导出数据时,允许使用包含导出定义的SELECT语句进行数据的导出操作。该文件被创建到服务器主机上,因此必须拥有文件写入权限(FILE权限)才能使用此语法。“SELECT...INTOOUTFILE'filename'”形式的SELECT语句可以把被选择的行写入一个文件中,并且filename不能是一个已经存......
  • umijs中简单使用umi-request
    在umi.js4中使用umi-request进行网络请求,查看官网后还是没明白,便自己摸索一遍,如下把简单使用的过程记录下来,以便共享给其他需要的小伙伴做参考,如有不对的地方,烦请指出。第一步:安装umi-requestnpminstall--saveumi-request第二步:简单封装使用在自定义路径为src/utils/http.......
  • 使用std算法库:使用find算法来处理基础类型与类对象
    在C++的std库中,提供了不少基础的算法工具库,比如最基本的查找,排序等,基本上都是封装了性能极高的查找和排序算法,基本上不需要自己再去琢磨和手写各种计算机算法了,比如快排什么的,直接使用即可。不过这些算法库基本用法挺简单,在基础用法的基础上,还是有一些厉害一点的用法。基......
  • 前端使用大模型DeepSeek
    1.官方地址:https://www.deepseek.com/ 2.开放平台的api文档:https://api-docs.deepseek.com/zh-cn/需要自行找到对应的API  3.前端使用deepseek生成(1)生成json格式的方法exportconstfast_gpt=async(userText)=>{try{constresult=awaitaxios.post......