文件系统基准测试是什么:如何测量存储读写性能

更新时间

文件系统基准测试是在指定卷及其下层文件栈上,测量可达到的最大顺序读写速度。它回答的是“从某个位置读写超大文件最快能有多快”,而不是日常小文件、随机访问或数据库负载下的表现。适用条件是:你需要评估本地磁盘、网络共享、RAM 磁盘或加密文件容器等位置的批量 I/O 上限,并且愿意用参数扫描而非单次拷贝来获得结果。

测试对象与目标

以 CCSIO Benchmark(Cold-cache Sequential I/O Benchmark)为例,它面向“冷缓存顺序 I/O”,测量给定卷和文件栈下可达到的最大顺序读写速度。可评估的对象包括本地驱动器上的文件系统、远程网络共享,以及 RAM 磁盘、加密文件容器等虚拟或伪设备。它的定位是“最大可能速度”,不是模拟某种具体应用的混合负载。

影响吞吐量的三个变量

读写文件本质上是把内存缓冲区(块)交给操作系统,要求它填入磁盘数据或把缓冲区内容写入文件。过程中有三个主要变量:

  • IO 缓冲区数量:同时提交多少个缓冲区。
  • IO 缓冲区大小:每个缓冲区多大。
  • IO 缓存模式:是否绕过系统缓存,以及读/写方向。

基准测试的价值在于:最佳组合会随物理设备类型、设备与主机的连接方式、文件栈组成而大幅变化。对 SSD 有效的组合,对 HDD 或虚拟磁盘往往不成立,反之亦然。

典型测试方法:参数组合扫描

CCSIO 的做法是遍历大量参数组合,找出吞吐率最高的那一组。默认设置如下:

参数 默认取值
缓冲区大小 8K、16K、32K、64K、128K、256K、512K、1M、2M、4M、8M、16M
缓冲区数量 1、2、4、8、16
IO 模式 Unbuffered 读写、Unbuffered sequential 读写、Buffered sequential 只读

三个参数的一个组合称为一次 test run。单次基准包含 180 个读测试和 120 个写测试,合计 300 个测试。每个测试默认限时 1 秒,这是软限制,实际可能略长;同时有 64MB 内存上限,总缓冲区空间超过该上限的测试会被跳过,测试数因此降到 285 个,总运行时间约 5 分钟。

操作步骤与验证

  1. 确认前提:准备 Windows Vista 或更新系统;下载文件约 238 KB(版本 1.5.0,2019 年 6 月 26 日发布)。
  2. 选择目标位置:本地盘、网络共享、RAM 磁盘或加密容器,确保测试写入不会破坏重要数据。
  3. 运行基准:让工具完成参数组合扫描,记录每个组合的吞吐率。
  4. 读取结果:关注该设备与文件栈下的最大读/写速度,而不是某一个固定参数下的速度。
  5. 验证:在空闲机器上结果通常较准确;若机器有其他负载,1 秒的软限时可能不足以稳定估计,可重复运行观察波动。

常见卡点:把不同设备或不同文件栈的最大值直接横向比较。CCSIO 给出的示例中,Samsung MZVPV512 NVMe 在 8×512KB 组合下读到 2158.0 MBps、在 16×2MB 组合下为 1974.1 MBps;而 SSD 上的 TrueCrypt 卷对应组合分别只有 317.5 MBps 和 338.4 MBps。这说明加密容器等文件栈层会显著改变结果,最佳参数也不同。

如何解读结果

解读时先固定比较维度:同一设备类型、同一连接方式、同一文件栈层级,再看最大顺序读写速度。跨设备比较只能作为量级参考,不能当作“谁更快”的结论,因为各自的最优缓冲区组合不同。若你的实际任务是拷贝超大文件,冷缓存顺序 I/O 的最大值有参考意义;若任务是大量小文件或随机读写,这个基准不覆盖,需要另选测试方法。