标签:
I/O调度子系统用于调度来自多个进程对块设备的I/O请求。
在最后期限I/O调度程序中,每个请求都有一个超时时间。默认情况下,读请求的超时时间是500ms,写请求的超时时间是5s。
最后期限IO调度请求类似与linux电梯,也以磁盘物理位置为次序维护请求队列,这个队列被称为排序队列。当一个新请求递交给排序队列时,最后期限IO调度程序类似于linux电梯,合并和插入请求,
最后期限I/O调度程序同时也会以请求类型为依据将它们插入到额外队列中。读请求按次序被插入到特定的读FIFO队列中,写请求被插入到特定的写FIFO队列中。
基础就是最后期限IO调度程序。最主要的改进是它增加了预测启发能力。
它的不同之处在于读操作提交后并不直接返回处理其他请求,而是会有意空闲片刻。这空闲的几秒钟,对应用程序来说是个提交其他读请求的好机会—–任何对相邻磁盘位置操作的请求都会立刻得到处理。(基于实际发生情况统计效果好)
完全公正的排队I/O调度程序(Complete Fair Queuing,简称CFQ)是为了专有工作负荷设计的。CFQI/O调度程序把进入的I/O请求放入特定的队列中,这种队列是根据引起I/O请求的进程组织的。在每个队列中,刚进入的请求与相邻的请求合并在一起,并进行插入分类,队列由此按扇区方式能分类。CFQI/O调度程序的差异在于每一个提交I /O请求的进程都有自己的队列。
CFQI/O调度程序以时间片轮转调度队列,从每个队列中选取请求数(默认是4),然后进行下一轮调度。
I/O调度程序实现在drivers/block/cfq-iosched.c中。
标签:
原文地址:http://blog.csdn.net/giantpoplar/article/details/51828498