Linux内核设计与实现笔记
作者:网络转载 发布时间:[ 2014/1/7 13:35:11 ] 推荐标签:系统 Linux
linus电梯可能发生的四种操作:
如果队列中已经存在一个对相邻磁盘扇区操作的请求,那么新请求将和这个已经存在的请求合并成一个请求。
如果队列中存在一个驻留时间过长的请求,那么新请求将被插入到队列尾部,以防止其他旧的请求发生饥饿。
如果队列中以扇区方向为序存在合适的插入位置,那么新请求插入该位置,保证队列中的请求是以被访问磁盘物理位置为序进行排列的。
如果队列中不存在合适的请求插入位置,请求将被插入到队列尾部。
目前2.6内核中已经有四种不同的I/O调度程序:
终期限I/O调度程序
为了减少请求饥饿,降低读操作响应时间,必须以降低全局吞吐量为代价。通过增加一个超时时间,并按照一定的请求类型排序,读写请求分别插入到特定的读/写FIFO队列中,当有请求超时,会提取出请求进行服务。/block/deadline-iosched.c
预测I/O调度程序
保证良好的读操作,也能维持良好的全局吞吐量。请求提交之后并不直接返回处理其他请求,而是会刻意的空闲片刻(默认为6毫秒),对于提交其他读操作请求是一个好机会,任何相邻磁盘位置操作的求情都回立刻得到处理。这种预测行为通过一系列的启发和统计工作完成。/block/as-iosched.c
完全公正的排队I/O调度程序
专门为工作负荷设计,如音频播放器总能即时从磁盘再填满它的音频缓冲区。把进入I/O请求放入特定的队列中,这种队列是根据引起I/O请求的进程组织的。以时间片轮转调度队列,从每个队列中选取请求数,然后进行下一轮调度。/block/cfq-iosched.c
空操作的I/O调度程序
不排序,也不进行其他预测,它是专为随机访问设备而设计的,如闪存卡。/block/noop-iosched.c
内核命令行选项 elevator = cfq 会启动完全公正的I/O调度程序给所有的块设备。参数可选as(预测)、cfq(完全公正的排队)、deadline(终期限)、noop(空操作)。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11