#基准测试 #磁盘 #操作系统 #文件存在 #命令行界面 #单元测试

应用程序 simple-disk-benchmark

一个简单的磁盘基准测试工具

10 个版本

0.1.9 2024年6月15日
0.1.8 2024年6月15日
0.1.4 2024年3月19日
0.1.3 2023年8月2日
0.1.1 2023年7月31日

#132文件系统

MIT 许可证

120KB
1.5K SLoC

simple-disk-benchmark

一个简单的磁盘基准测试工具。

Alt text

操作系统

目前,已在 macOS 和 Linux 上进行测试。Windows 的支持有限,单元测试通过,但该软件在 Windows 上未进行其他测试或验证。开发在 macOS 上进行。

安装

从 homebrew(仅限 macOS)

brew tap schwa/schwa
brew install simple-disk-benchmark

或使用 cargo(所有平台)

cargo install simple-disk-benchmark

用法

A simple disk benchmark tool

Usage: simple-disk-benchmark [OPTIONS] [FILE]

Arguments:
  [FILE]  File to use for benchmarking. If this file exists it will be deleted [default: testfile.dat]

Options:
  -s, --size <FILESIZE>         Size of the file to use for benchmarking [default: 1GB]
  -b, --blocksize <BLOCK_SIZE>  Size of the blocks to read/write [default: 128MB]
  -c, --cycles <CYCLES>         Number of test cycles to run [default: 10]
  -m, --mode <MODE>             Types of test to run: read, write or all [default: all] [possible values: all, read, write]
  -r, --random-seek             Seek to a random position in the file before each read/write
      --no-create               Do not create the test file, the file must already exist
      --no-delete               Do not delete the test file after the test
      --no-progress             Do not display progress bar
      --no-disable-cache        Do not disable the file system cache
      --no-close-file           Do not close the file after each cycle
      --no-random-buffer        Fill the buffer with fixed byte pattern on creation instead of random
  -X, --no-chart                Do not display a bar chart of the run timings
  -j, --export-json <FILE>      Export the timing summary statistics and timings of individual runs as JSON to the given FILE. The output time unit is always seconds
      --export-log <FILE>       Export the log to the given FILE
  -d, --dry-run                 Do not actually perform benchmarks to the disk (file is still created and/or deleted)
  -v, --verbose...              Increase logging verbosity
  -q, --quiet...                Decrease logging verbosity
  -h, --help                    Print help
  -V, --version                 Print version

方法论

指定用于基准测试的文件路径。如果文件存在,它将被删除。您可以通过指定文件的完整路径来指定其他驱动器的路径(例如 /Volumes/MyDrive/testfile.dat)。

基准测试工具将创建一个指定大小的文件,然后运行指定的循环次数。每个循环将读取或写入指定大小的多个块到文件中。

在 macOS 上,文件被打开,文件描述符上设置了 F_NO_CACHE 和 F_GLOBAL_NOCACHE。这将绕过文件系统缓存并直接写入磁盘。在 Linux 上,使用 O_DIRECT 标志达到相同的结果。

待办事项

  • 在前言中显示卷信息。
  • 更好的输出 - 显示时间信息和速率。
  • 多线程基准测试选项。
  • 更多文档。
  • 运行测试覆盖率。
  • hyperfine 借用 CPU 时间功能。
  • 模糊化 StyleSheet 代码。
  • 上传到 homebrew。.
  • 将文件创建与打开分开运行。
  • 在 Windows 上进行测试。
  • 随机查找而不是仅顺序查找。
  • 写入时使用随机字节而不是零。
  • 使用更好的 ByteSize 替代方案。
  • 添加 --no-delete 选项以在基准测试后保留文件。
  • 将数据输出到 JSON.
  • 将数据输出到 CSV. 不会这样做。使用 JSON 并通过管道传递到 jqcsvkit
  • 找出所有 dead_code 错误。
  • 解决 pub/mod 问题。.

许可证

MIT 许可证。见 LICENSE 文件。

依赖关系

~9–21MB
~239K SLoC