是什么导致 NVMe SSD 的 Fio 基准测试中的完成延迟不同?

是什么导致 NVMe SSD 的 Fio 基准测试中的完成延迟不同?

我正在尝试计算 NVMe SSD 的 fio 基准测试的完成延迟。

我制作了以下 fio 脚本来测试 fio 中的基准测试。

我使用了以下选项。

rw=read, ioengine=sync, direct=1

所以,我认为没有太多事情可以使完成时间有所不同。

然而,结果并不是我想的那样。

在此输入图像描述

结果是 1th : 11us 到 99.99th : 111us。

同步读取不会产生未完成的 IO,因此所有 I/O 都会按顺序处理,

直接选项可以绕过操作系统中的缓冲区。

我认为大多数延迟都是相同的。

对于这个结果有什么想法吗?

答案1

你正在谈论这里是秒,11 微秒与 111 微秒。不需要太多的时间就能扰乱如此敏感的阅读:

  • fio 进程占用 CPU 资源,因为您的服务器认为是时候执行定期 cron 作业,并且无法像其他进程一样快速地处理某些 I/O
  • 一些 I/O 位于某种 SSD 缓存中,但后来的 I/O 实际上必须从缓存外部获取
  • 一些 I/O 读取碰巧以不同的顺序写入并读回(是的,按照写入的顺序读回内容对于 SSD 来说更好)
  • 其他因素决定对同一设备进行 I/O

ETC。

您没有包含完整的工作(我可以看到您设置了iodepth=16这让我想知道您在工作中还设置了哪些其他内容),因此您对任何答案的要求都有点高。不过我要指出的是,95% 的读数都在 3 以内彼此相差几秒,因此您不会在不到一百万个 I/O 中看到太多异常值。您期望非实时系统有多少确定性?

相关内容