Linux fio 测试磁盘性能, iodepth 这个参数是什么意思?

2022-09-13 08:15:59 +08:00
 kgdb00

iodepth 跟 linux 内核中 blk-mq 有关系吗?

iodepth 跟 linux 内核中 request_queue 有关系吗?

有没有大佬能详细解释一下,最好能从内核代码层面说清楚 iodepth 的实际作用。

2697 次点击
所在节点    Linux
2 条回复
liuchao719
2022-09-13 10:22:53 +08:00
看了一些回答,总结一下:iodepth 是控制异步 ioengine 的提交队列深度,如果正在执行的 I/O 数量达到了 iodepth ,就需要等待之前的执行完才可以继续提交;和 kernel 没有关系。

[1]. https://fio.readthedocs.io/en/latest/fio_doc.html#i-o-depth
[2]. https://unix.stackexchange.com/questions/459045/what-exactly-is-iodepth-in-fio
[3]. https://unix.stackexchange.com/questions/460491/how-does-fio-benchmark-set-iodepth
litguy
2022-09-13 10:52:25 +08:00
iodepth 就是你提交给 OS 的最大未完成 io 数
也就是 fio 最多能提交多少 io 给 os
后端性能足够的情况下,这个值越大,iops 越高,但是会导致 io 服务的延迟增加
如果不想过多研究,可以认为和 kernel 没关系
因为这个是应用层自己确定自己要给下层发多少 io 进去的

事实上和 kernel 的这两个东西有关系
因为最终都要进入 block layer 的 queue 中排队

严格来说和更底层的硬件本身也有关系
在 SATA 时代,设备有上限,一个设备一个队列,单队列这个值最大只有 32
NVME 时代因为多队列,队列深度大大增加,可以看作无限制
因为限制到达前设备自己先吃不住了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/879578

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX