IO 是否根据重新执行任务的本质来确定优先级?

Nig*_*Fan 6 linux kernel io priority nice

CFQ IO 调度程序支持优先级,尽管我不确定 Deadline 是否支持(我认为不是)。前提是当我重新处理一个任务时,它会在完全公平的调度程序下获得更大的 CPU 份额。由于此任务可能会更频繁地运行,因此在需要时也会更频繁地调用 IO,对吗?

我想知道即使 IO 调度程序不支持优先级,任务在接受时是否会获得更多/更少的 IO?或者磁盘/内存管理是完全独立的?

Bil*_*hor 11

磁盘和内存调度完全不同。在没有 IO 优先级调度程序的情况下,将按照先到先得的原则处理 IO。如果系统受 IO 限制,则所有进程或多或少以循环方式运行,直到所有进程都在等待 I/O。进程的好优先级对其调度频率几乎没有影响。

最新版本的 Linux 增加了一个ionice工具。空闲优先级旨在防止当磁头移动到磁盘的不同区域延迟其他进程的写入时可能发生的 IO 降级。

除非平均负载超过 CPU 数量,否则重新处理 I/O 绑定进程不太可能显着降低其 I/O 速率。如果有未使用的 CPU 周期可用,则该进程可能会被足够频繁地调度,以使其 I/O 速率接近常规优先级。

最近的 Linux 内核将修改未设置 IO 优先级的 reniced 进程的 IO 优先级。40 个 CPU 优先级映射到 8 个 IO 优先级,因此可能需要进行重大更改才能更改 IO 优先级。

有大量 CPU 绑定进程以 I/O 绑定进程优先级或高于 I/O 绑定进程优先级运行可能会降低其 I/O 速率。该进程仍将获得导致 I/O 发生的时间片。