到预热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 性能。