USB 驱动器的 Fio 结果在 Windows 上太快

rea*_*aul 1 windows usb hard-drive

我正在尝试测试两个 USB SATA 适配器之间的性能,因此我开始了一些 fio 测试运行。首先,我在 Windows 10 计算机 (3.27) 上安装了 fio,并运行以下命令(Windows 终端/Powershell),全新的 Crucial BX500 (240GB) 的结果非常糟糕,只有34.3kB/s

fio --name=random-write --ioengine=windowsaio --rw=randwrite --bs=1m --size=16g --numjobs=1 --iodepth=1 --runtime=60 --time_based --end_fsync=1

所以我再次运行该命令,但这一次是为了--size=1g看看这是否会产生影响。男孩曾经做到过。我有5391MB/s

这个结果完全让我失望,因为 USB 3.1 和驱动器的最大速度约为 500MB/s。顺便说一句,任务管理器在运行测试时向我展示了最大 120MB/s 的传输速度。为了查看 fio 的 Windows 版本是否是问题所在,我在 wsl2 / Ubuntu 20.04 上运行了完全相同的命令--ioengine=posixaio,结果在314MB/s时更加正常。

我找不到任何解释为什么结果不对,所以这是我的问题:发生了什么事?

编辑:batistuta09 下面的答案当然是正确的。如果不使用 direct=1,您将使用 RAM 来缓冲您的请求。因此,基于时间的基准(60 秒)上的 1Gb 会在 RAM 中缓冲,然后在剩余时间内将空闲时间写入磁盘。所以实际情况是您正在对 RAM 进行基准测试。

配备正确的搜索词,使用 libaio 引擎可以轻松在 Linux 下找到类似的“问题”。但好像缺少windows的例子。

bat*_*a09 5

您可以使用缓冲 I/O 运行基准测试。添加以下参数以排除任何缓存:

--direct=1
Run Code Online (Sandbox Code Playgroud)