V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
kgdb00
V2EX  ›  Linux

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

  •  
  •   kgdb00 · 2022-09-13 08:15:59 +08:00 · 2937 次点击
    这是一个创建于 832 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    2 条回复    2022-09-13 10:52:25 +08:00
    liuchao719
        1
    liuchao719  
       2022-09-13 10:22:53 +08:00   ❤️ 1
    看了一些回答,总结一下: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
        2
    litguy  
       2022-09-13 10:52:25 +08:00   ❤️ 1
    iodepth 就是你提交给 OS 的最大未完成 io 数
    也就是 fio 最多能提交多少 io 给 os
    后端性能足够的情况下,这个值越大,iops 越高,但是会导致 io 服务的延迟增加
    如果不想过多研究,可以认为和 kernel 没关系
    因为这个是应用层自己确定自己要给下层发多少 io 进去的

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

    严格来说和更底层的硬件本身也有关系
    在 SATA 时代,设备有上限,一个设备一个队列,单队列这个值最大只有 32
    NVME 时代因为多队列,队列深度大大增加,可以看作无限制
    因为限制到达前设备自己先吃不住了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4675 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 01:11 · PVG 09:11 · LAX 17:11 · JFK 20:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.