读取文件时 fio 的最佳块大小

读取文件时 fio 的最佳块大小

预热ext4 EBS 卷我正在使用 fio 如下:

fio --name <filename> --filename <filename> --rw read --direct 1 --ioengine libaio --bs <X>k

我正在尝试了解最佳块大小应该是多少。我知道我可以“stat”并获取文件的块大小,但在 fio 中使用它时,如果文件大小小于其块大小,它会抛出错误。

一种选择是默认使用 stat 给出的块大小,如果文件大小小于该大小,则获取最接近的“标准”数字:即,如果大小小于 4k,则将块大小设置为 1024。

设置正确的块大小的最佳方法是什么?

编辑:我正在从快照中恢复 10TB gp2 卷。有几百万个文件 - 其中大多数是小文件,但另一部分文件大小为 50MB-30GB,所有这些文件都需要“准备好”以尽快读取。我有一个针对每个文件运行 fio 的脚本,我正在尝试了解如何最好地动态调整每个文件的块大小。

答案1

为了掩盖网络延迟,您需要使用相当大的块大小。亚马逊建议的 1 MB 块大小对我来说似乎不错。

我怀疑对于这种特定的工作量dd来说,速度会一样快,甚至更快fio。但是,你只需要试验一下,使用任何更快的方法来读取(和重新补充)卷。

最后,考虑stat返回两个 I/O 大小值:

  • 最小值,即设备将读取/写入的最小 IO 大小;
  • 最佳,这是通过避免 r/m/w 行为来获得良好性能的最小 IO 大小

这并不意味着大于最佳大小的 IO 会更慢;相反,更大的尺寸实际上可以稍微提高 IO 性能。

相关内容