CFQ IO 调度程序支持优先级,但我不确定 Deadline 是否支持(我相信不是)。前提是,当我重新执行一个任务时,它会在完全公平调度器下获得更大的 CPU 份额。由于此任务可能会更频繁地运行,因此在需要时也会更频繁地调用 IO,对吗?
我想知道即使 IO 调度程序不支持优先级,任务在重新分配时是否会获得更多/更少的 IO?或者磁盘/内存管理是完全分开的?
答案1
磁盘和内存调度完全不同。在没有 IO 优先级调度程序的情况下,IO 将按照先到先服务的原则进行处理。如果系统是 IO 绑定的,那么所有进程或多或少都会以循环方式运行,直到所有进程都在等待 I/O。进程的nice优先级对其调度频率影响很小。
Linux 的最新版本添加了一项ionice
功能。空闲优先级旨在防止当磁头移动到磁盘的不同区域从而延迟其他进程的写入时可能发生的 IO 降级。
重新分配 I/O 绑定进程不太可能显着降低其 I/O 速率,除非平均负载超过 CPU 数量。如果未使用的 CPU 周期可用,则该进程可能会被足够频繁地调度,以使其 I/O 速率接近常规优先级的水平。
最近的 Linux 内核将修改尚未设置 IO 优先级的 reniced 进程的 IO 优先级。 40 个 CPU 优先级映射到 8 个 IO 优先级,因此可能需要进行重大更改才能更改 IO 优先级。
让大量 CPU 密集型进程以 I/O 密集型进程优先级或高于 I/O 密集型进程优先级运行可能会降低其 I/O 速率。该进程仍将获得导致 I/O 发生的时间片。