ionice 工具对于现代 Linux 内核有多有用

ionice 工具对于现代 Linux 内核有多有用

ionice工具应该仅在系统处于指定状态时执行命令来缓解高 I/O 负载。

手册页状态:

Linux 自 2.6.13 起通过 CFQ I/O 调度程序支持 I/O 调度优先级和类别。

然而,自 5.3 起,CFQ I/O 已被弃用并从内核中删除。

那么这个实用程序的状态如何?它真的可以在现代内核上工作吗?

附加信息

  • ionice使用内核调用ioprio_set
  • 文档状态:

    这些系统调用仅在与支持 I/O 优先级的 I/O 调度程序结合使用时才有效。在内核 2.6.17 中,唯一的此类调度程序是完全公平队列 (CFQ) I/O 调度程序。

答案1

长话短说:伊奥尼斯当选择 BFQ I/O 调度程序时,它仍然显得有用。


然而,自 5.3 起,CFQ I/O 已被弃用并从内核中删除。

确实但是预算公平队列 I/O 调度程序在最新的内核下仍然可用。
从 6.3 开始甚至暗示是否选择了 MMC 块设备驱动程序:

config MMC_BLOCK
    tristate "MMC block device driver"
    depends on BLOCK
    imply IOSCHED_BFQ

BFQ 确实尊重 I/O 调度优先级伊奥尼斯可以分配给进程:

每个进程的 ioprio 和权重:除非使用 cgroups 接口(参见“4. BFQ 组调度”),权重只能通过 I/O 优先级间接分配给进程,并根据以下关系:权重 = (IOPRIO_BE_NR -伊普里奥) * 10

据报道,这也是为了表彰调度类 伊奥尼斯可以分配:

我还研究了使用 ionice -c3 将安装/卸载循环的 IO 优先级设置为空闲,这正如其名称所示:如果有任何更高优先级的 IO 待处理,BFQ 本质上永远不会以空闲优先级提供 IO

相关内容