【开源技术随笔】008 - 如何修改Kernel IOSCHED 内核I/O 调度算法
还有一个影响磁盘 I/O 读写性能的因素就是 I/O 调度算法。
Linux内核提供了多个I/O调度算法,用于管理和调度块设备的I/O请求,常见的I/O调度算法如下:
-
IOSCHED_DEADLINE
(截止时间调度器):
DEADLINE调度器旨在尽量减少每个I/O请求的完成时间。
它为每个请求分配一个截止时间,并优先处理截止时间早的请求。
DEADLINE调度器维护两个队列,一个是按照截止时间排序的读队列,另一个是按照截止时间排序的写队列。
在处理请求时,DEADLINE会首先检查读队列中是否有已经超过截止时间的请求,如果有,就会立即处理这些请求;
如果没有,它会检查写队列中是否有超过截止时间的请求,如果有,就会处理这些请求;
如果两个队列中都没有超过截止时间的请求,它就会处理读队列中的第一个请求。
这种设计可以保证读请求优先于写请求,因为读请求通常对延迟更敏感。 -
MQ_DEADLINE
(多队列截止时间调度算法):
MQ_DEADLINE调度器是对DEADLINE调度器的改进,它采用多队列的设计,可以在多核处理器上并行处理I/O请求。