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 在 文件系统
120KB
1.5K SLoC
simple-disk-benchmark
一个简单的磁盘基准测试工具。
操作系统
目前,已在 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 并通过管道传递到jq
或csvkit
。找出所有 dead_code 错误。解决 pub/mod 问题。.
许可证
MIT 许可证。见 LICENSE 文件。
依赖关系
~9–21MB
~239K SLoC