Linux实现了4种I/O调度算法,分别为:NOOP算法(no operate)、最后期限算法(Deadline)、完全公平队列算法(CFQ)和预期算法(Anticipatory)。
NOOP算法
不对I/O请求排序,但会合并请求,除此之外无其他任何优化。它用FIFO队列顺序提交I/O请求。NOOP算法适用于如SSD的随机访问设备,因为随机访问设备不存在磁头移动造成的寻道时间,无需做多余的事情。
最后期限算法
此算法在全局吞吐量和延迟方面做了权衡,牺牲了一定的全局吞吐量来避免饥饿请求的可能。当系统存在大量顺序I/O请求的时候,此算法可能导致I/O请求无法被很好的排序,引发频繁寻道。