xpsallwell 2013-07-27
IO调度器的总体目标是希望让磁头能够总是往一个方向移动,移动到底了再往反方向走,这恰恰就是现实生活中的电梯模型,所以IO调度器也被叫做电梯.(elevator)而相应的算法也就被叫做电梯算法.而Linux中IO调度的电梯算法有好几种,一个叫做as(Anticipatory),一个叫做cfq(Complete Fairness Queueing),一个叫做deadline,还有一个叫做noop(No Operation).具体使用哪种算法我们可以在启动的时候通过内核参数elevator来指定.
另一方面我们也可以单独的为某个设备指定它所采用的IO调度算法,这就通过修改在/sys/block/sda/queue/目录下面的scheduler文件.比如我们可以先看一下我的这块硬盘:
[root@localhost ~]#dmesg | grep -i scheduler io scheduler noop registered io scheduler anticipatory registered io scheduler deadline registered io scheduler cfq registered (default) [root@localhost ~]# cat /sys/block/sda/queue/scheduler noop anticipatory deadline [cfq]
可以看到我们这里采用的是cfq.同时也能看出当前系统支持的调度算法,如2.6内核的四种调度算法,其中用[]标识的是当前使用的调度算法。
[root@localhost ~]# cat /sys/block/sda/queue/scheduler noop anticipatory deadline [cfq] [root@localhost ~]# echo anticipatory> /sys/block/sda/queue/scheduler [root@localhost ~]# cat /sys/block/sda/queue/scheduler noop [anticipatory] deadline cfq四种调度算法简介: