用户进程write()--> 文件系统层(page cache/bio)--pdflush--> block层(IO调度器/IO请求队列) --> 设备驱动(SCSI) --> 磁盘
当进程执行write操作时,先写入page cache,由文件系统层负责将连续的块组成bio,并将其发送给block层;
采用FIFO,在此基础上还实现了相邻IO请求合并;
该算法假定IO请求到达之前已经由驱动设备做了优化,因此无需在做额外工作;
最简便的算法实现,适用于SSD和fusion IO
CFQ--全称completely fair queuing,2.6.18成为默认选项;
为每个进程维护一个队列,按照IO请求的地址排序(而非FIFO),轮询处理,每次处理4个请求;
可以节省大量的磁盘寻道时间,对于传统的磁盘比较有益,但有可能会出现饿死的情况;
除了进程IO,引入了读IO和写IO(FIFO),其中读IO最大等待时间500ms,写IO为5s,其优先级均高于CFQ,
FIFO(read) > FIFO(write) > CFQ
本质与deadline一致,但在每次读操作后需等待6ms,如果期间收到相邻位置的读请求则立即满足,对以随机IO请求为主的环境可能会造成比较大的延时;
dmesg | grep -i scheduler
cat /sys/block/sda/queue/scheduler
echo "cfq" > /sys/block/sda/queue/scheduler
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15480802/viewspace-757290/,如需转载,请注明出处,否则将追究法律责任。