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)
posted @ 2024-12-09 11:35  LoftyAmbition  阅读(205)  评论(0)    收藏  举报