6.4.2. 最后期限 I/O 调度程序

最后期限 I/O 调度程序尝试为请求提供保证的延迟。请注意只有当请求进入 I/O 调度程序后方开始计算延迟(这个区别非常重要,因为可能会让程序进入睡眠等待模式以便释放请求描述符)。默认情况下读取比写入的优先权高,因为程序更容易因读取 I/O 而被阻断。
最后期限调度以批形式分派 I/O。一批是一些列连续的读或者写 I/O,按 LBA 顺序递增(单向递增)。处理完每批进程后,I/O 调度程序会检查是否有写请求已等待太久,然后决定是否开始新一批读或者写操作。只在开始新一批时检查过期请求的请求 FIFO 列表。因此,如果选择批写入,且同时有过期的读取请求,那么只有在批写入完成后方可执行读取请求。

可调参数

fifo_batch
这样可以决定单一批次中发出的读取或者写入数。默认为 16。设为更高的数值可获得更好的流量,但也会增加延迟。
front_merges
如果您找到负载永远不会生成前合并,则您可以将这个可调参数设定为 0。除非您已了解这个检查的代价,建议将其设定为默认值,即 1
read_expire
这个可调参数可让您已毫秒为单位设定读取操作速度。默认将其设定为 500 毫秒(即半秒)。
write_expire
这个可调参数可让您已毫秒为单位设定写入操作速度。默认将其设定为 5000 毫秒(即五秒)。
writes_starved
这个可调参数控制处理单一写入批之前可以处理多少读取批。这个值越高,越倾向于读取操作。

为了尽快向用户提供最新的信息,本文档可能会包括由机器自动从英文原文翻译的内容。如需更多信息,请参阅此说明。