它会在每个6ms中插入新的I/O操作,而会将一些小写入流合并成一个大写入流,用写入延时换取最大的写入吞吐量.
AS适合于写入较多的环境,比如文件服务器
AS对数据库环境表现很差.
三) I/O调度方法的查看与设置
- 查看当前系统的I/O调度
[root@localhost ~]# cat /sys/block/sda/queue/scheduler
noop anticipatory deadline [cfq]
[root@localhost ~]#
- 临时更改I/O调度
例如:想更改到noop电梯调度算法:
[root@localhost ~]# echo noop > /sys/block/sda/queue/scheduler
[root@localhost ~]#
- 永久更改I/O调度
修改内核引导参数,加入elevator=调度程序名
[root@localhost ~]# vim /boot/grub/menu.lst
更改到如下内容:
kernel /boot/vmlinuz-2.6.18-8.el5 ro root=LABEL=/ elevator=deadline rhgb quiet
重启服务器后,查看调度方法:
[root@localhost ~]# cat /sys/block/sda/queue/scheduler
noop anticipatory [deadline] cfq
[root@localhost ~]#
可以看见已经是deadline了
四) ionice
ionice可以更改任务的类型和优先级,不过只有cfq调度程序可以用ionice.
有三个例子说明ionice的功能:
采用cfq的实时调度,优先级为7
[root@localhost ~]# ionice -c1 -n7 -ptime dd if=/dev/sda1 f=/tmp/test bs=2M count=300&
采用缺省的磁盘I/O调度,优先级为3
[root@localhost ~]# ionice -c2 -n3 -ptime dd if=/dev/sda1 f=/tmp/test bs=2M count=300&
采用空闲的磁盘调度,优先级为0
[root@localhost ~]# ionice -c3 -n0 -ptime dd if=/dev/sda1 f=/tmp/test bs=2M count=300&
ionice的三种调度方法,实时调度最高,其次是缺省的I/O调度