Skip to content

Repository files navigation

Dite

Dite 是一款面向 Windows 平台的磁盘性能测试工具,基于微软官方工具 DiskSpd 开发,主打“预设即开即用”。用户无需学习复杂的命令行参数,只需选择测试盘符和预设模式,即可像 CrystalDiskMark 一样快速获得直观的顺序/随机读写成绩。

简介

  • 一键预设:内置 CrystalDiskMark-Like(1-9)、CopyCross(11-17)两组预设,覆盖从基准跑分到真实跨盘复制测试。
  • 真实世界场景:Realistic 模式使用大文件填充后再测试,反映日常拷贝、视频剪辑、游戏加载等场景下的真实表现。
  • 结果直观:测试结束后直接在终端显示汇总结果,并自动生成日志文件,方便保存和对比。
  • 轻量便携:打包后为单个可执行文件夹,无需安装 Python,拷贝即用。

项目的意义

市面上已有 CrystalDiskMark、Iometer、AS SSD Benchmark 等专业工具,Dite 并不打算与它们正面竞争,而是填补一个中间需求:

  • 比 CrystalDiskMark 更贴近真实使用:通过预填充、清缓存、大文件写入等步骤,避免“空盘跑分”带来的虚高。
  • 比 Iometer 更易用:不需要手动配置队列深度、块大小、测试时长,预设已经帮你调好。
  • 结果可存档:每次测试都会生成一份 UTF-8 编码的日志文件,方便你记录不同硬盘、不同系统、不同时间点的表现。

一句话:Dite 想做的是“拿来就能跑、结果能看懂、日志能留存”的磁盘性能测试工具。

使用方法

适用版本:V24 及以后。

1. 获取程序

从发布页面下载 Dite_V24_x64.7z,解压到任意目录,例如:

D:\Tools\Dite_V24\

解压后目录结构大致如下:

Dite_V24/
├── Dite.exe
├── Config/
│   ├── tools.json
│   ├── engine_defaults.json
│   ├── tasks.json
│   ├── presets.json
│   └── settings.json
└── Tools/
    ├── diskspd.exe
    └── RAMMap.exe

2. 运行程序

右键点击 Dite.exe,选择“以管理员身份运行”。

如果未以管理员身份运行,程序会自动进入非管理员模式

  • 仍然会完成大部分测试步骤。
  • 需要管理员权限的步骤(如 RAMMap 缓存清理)会被自动跳过。
  • 测试结束时会在汇总下方提示已跳过的步骤。

建议普通用户尽量以管理员身份运行,以获得最准确的测试结果。

3. 选择盘符

程序启动后会提示输入目标磁盘盘符:

请输入目标磁盘盘符(默认 D):

直接按回车使用默认盘符,或输入你想测试的盘符(如 CE)后按回车。

4. 选择预设

请选择预设:
  1. [ Realistic ]              真实世界大文件测试,顺序写 32G、随机写 8G  ~300s
  2. [ Fast ]                   5 秒快速摸底,覆盖顺序和随机、大块和小块    ~60s
  3. [ Fast-Random ]            Fast 的随机版,仅随机 4K Q32T1 读写         ~30s
  4. [ Fast-Sequential ]        Fast 的顺序版,仅顺序 1M Q8T1 读写         ~30s
  5. [ CrystalDiskMark-Behavior ] 模拟 CrystalDiskMark 行为:重复 5 次取最大值  ~215s
  ...
 11. [ CopyCross-Specified ]      手动指定源文件路径进行跨盘复制            ~-
 12. [ CopyCross-Big-GenData ]   真数据跨盘复制测试,25个大文件 96GiB       ~-
 13. [ CopyCross-Mixed-GenData ] 真数据跨盘复制测试,50505混合文件 96GiB    ~-
 16. [ CopyCross-Big-Simulated ] 异步生成真数据并跨盘复制测试,25文件96GiB  ~-
 17. [ CopyCross-Mixed-Simulated ] 异步生成真数据并跨盘复制测试,50505文件96GiB ~-

输入编号 1-5 后按回车即可开始测试。

5. 命令行参数

除了交互式运行,Dite 也支持命令行参数,方便脚本或快捷方式调用:

Dite.exe --disk D --preset 1 --no-pause

常用参数:

  • --disk <盘符>:直接指定目标磁盘盘符,例如 --disk D
  • --preset <编号>:直接指定预设,例如 --preset 1
  • --config <路径>:指定自定义 Config/ 目录路径。
  • --no-pause:运行结束后不等待按键,适合脚本调用或计划任务。

6. 查看结果

测试过程中会实时输出每一步的进度和 DiskSpd 原始结果。测试结束后会显示汇总,同时展示速度、IOPS 和延迟(默认 P99):

========================================================
              Full Summary Results
--------------------------------------------------------
  Metric                 Speed          IOPS      P99 Latency
--------------------------------------------------------
  Read Seq1M Q8T1  :   6790.83 MiB/s   6790.83      0.521 ms
  Read Seq1M Q1T1  :   3258.25 MiB/s   3258.25      0.312 ms
  Read Rnd4K Q32T1 :   1095.67 MiB/s 28061.50       0.089 ms
  Read Rnd4K Q1T1  :     78.19 MiB/s  20024.00       0.048 ms
  Write Seq1M Q8T1 :   6345.31 MiB/s   6345.31      1.203 ms
  Write Seq1M Q1T1 :   4142.60 MiB/s   4142.60      0.244 ms
  Write Rnd4K Q32T1:    703.22 MiB/s 18003.20       0.112 ms
  Write Rnd4K Q1T1 :    292.22 MiB/s  74808.00       0.013 ms
========================================================

IOPS 和延迟仅在启用 DiskSpd -L 延迟采集时输出;未启用时对应列显示 N/A

7. 查看日志

所有输出都会保存到程序目录下的 Outputs 文件夹中,文件名格式为:

Outputs/Dite_V24_<盘符>-disk_<预设名>_<时间戳>.log

例如:

Outputs/Dite_V24_D-disk_Fast_20260627_145500.log

如果程序在早期阶段出错,会生成回退日志:

Outputs/Dite_V24_Error_<时间戳>.log

日志采用 UTF-8 with BOM 编码,Windows 记事本可直接打开。

8. 测试建议

  • 测试前关闭其他占用磁盘的程序(如下载、拷贝、杀毒扫描)。
  • 目标磁盘剩余空间要足够,Realistic 模式会创建最大约 32GiB 的临时文件。
  • 每次测试前会自动清理上一次测试残留的临时文件;测试结束后也会自动清理。
  • 如果想对比不同硬盘,建议在同一台机器、相同系统负载下跑同一预设。

更新记录

V24(当前版本)

  • DiskSpd 预设新增 IOPS 和延迟(Latency)指标输出,Summary 同时展示速度、IOPS 和 P99 延迟。
  • repeat 调度动作支持多指标独立聚合:可分别对速度取 max、IOPS 取 max、延迟取 min,未指定指标默认 mean
  • 删除旧 measure 调度动作,统一使用 run + store
  • fill 动作重命名为 diskspd_fill,明确其为 DiskSpd 专属填充步骤。
  • CrystalDiskMark 行为预设(5-9)改为重复 5 次并取速度/IOPS 最大值、延迟最小值,更贴近 CrystalDiskMark 的取最高成绩逻辑。
  • V23 源码归档至 Archive/V23/

V23

  • 新增 CopyCross 预设组(11-17),基于 RoboCopy 实现跨盘真实数据复制测试。
  • 新增异步管线模拟模式(16-17),多线程并发生成+复制+清理,大幅提升测试效率。
  • 预设重构:Realistic 移至第 1 位,1-9 为 DiskSpd 预设,11-17 为 CopyCross 预设。
  • 新增 filegen 引擎,基于 CSPRNG + XOR 生成高质量随机测试数据。
  • RoboCopy 引擎支持中英文双语输出解析,/NFL 抑制文件列表提升性能。
  • 新增 simulatestoreverifycleanup 调度动作。
  • _repeat_step 聚合值回写 context.results,使 summary 正确显示聚合结果。

V21

  • 升级为 Python 命令行程序,引入任务组(TaskGroup)和调度器(Scheduler)。
  • 预设完全由 presets.json 声明,代码不再硬编码测试流程。
  • 使用 Tee 统一捕获屏幕输出和日志文件,确保两者内容一致。
  • 日志文件名改为 Dite_V21_<盘符>-disk_<预设名>_<时间戳>.log
  • 支持 measure / fill / repeat / summary 等调度动作,实现预填充、自动估算填充时间、汇总结果。
  • 未提升管理员权限时打印警告并继续运行,admin_mode: "require" 的步骤(如 RAMMap 缓存清理)会被自动跳过并记录。
  • 控制台输出强制 UTF-8,避免中文乱码。
  • 新增 --disk--preset--config--no-pause 命令行参数。
  • 打包产物可执行文件为 Dite.exe,发布包为 Dite_V21_x64.7z

V20

  • 首个完整的 Python 命令行版本,替代了批处理脚本。
  • 支持 CrystalDiskMark-Like、Realistic、Fast 三种基础预设。
  • 结果解析从日志文件改为直接读取 DiskSpd 的标准输出。
  • 浮点计算交给 Python,避免了批处理 set /a 的整数截断问题。

V17 及更早版本

V17 是批处理脚本时代的最终版本,也是后续 Python 版本的逻辑基础:

  • V1–V9:早期脚本阶段,主要验证 DiskSpd 参数组合和结果解析思路,日志名称、测试流程都在快速迭代。
  • V10–V16:逐步形成 CrystalDiskMark-Like 和 Realistic 两条主线,引入 RAMMap 清缓存、段落化结果解析、变量化配置等机制。
  • V17:批处理脚本最终版,分为 DiskSpd_CrystalDiskMark-Like_V17.batDiskSpd_Realistic_V17.bat,奠定了 V20/V21 的测试逻辑和临时文件命名规范。

更详细的版本历史、各版本参数对比、文件命名规则变化,请参考:

  • 版本演变分析报告.md
  • Archive/Early/(V1–V17 批处理脚本与历史数据)
  • Archive/V20/(V20 Python 源码归档)
  • Archive/V21/(V21 Python 源码归档)

许可证与致谢

Dite 本身为项目原创代码,测试功能依赖以下第三方工具:

  • DiskSpd —— 微软开源存储性能测试工具
  • RAMMap —— Sysinternals 缓存清理工具

请确保你使用的 diskspd.exeRAMMap.exe 来自官方渠道。

About

Windows平台磁盘性能测试,个人工具公开。

Resources

Stars

Watchers

Forks

Releases

Contributors

Languages