磁盘 I/O 调度算法
有单一化策略,适用所有场景
内核允许 I/O选择不用的调度算法
cfg:
默认调度算法,完全公平排队
几乎所有的工作量,尤其是大量进程的阅读和写作
deadline:
deadline算法的核心就是在传统的电梯算法中加入了请求超时的机制,该机制主要体现在两点:
(1)请求超时时,对超时请求的选择。
(2)没有请求超时时,当扫描完电梯最后一个request后,准备返回时,对第一个request的选择。
基于以上两点,平衡了系统i/o吞吐量和响应时间。此外,该算法开考虑到了读操作对写操作造成的饥饿。
anticipatory:
等待一段时间后,重新读
可以用到,虚拟主机上
noop:
NOOP调度器十分简单,其只拥有一个等待队列,每当来一个新的请求,仅仅是按先来先处理的思路将请求插入到等待队列的尾部。
其应用环境主要有以下两种:一是物理设备中包含了自己的I/O调度程序,比如SCSI的TCQ;
二是寻道时间可以忽略不计的设备,比如SSD
调整磁盘I/O 的调度算法
1.调整调度算法为:deadline
[root@localhost sda]# echo deadline >/sys/block/sda/queue/scheduler
查看结果:
[root@localhost sda]# cat /sys/block/sda/queue/scheduler
noop anticipatory [deadline] cfq
主要可调参数在 /sys/block/sda/queue/iosched
最大排队时间
read_expire
write_expire
[root@localhost iosched]# cat write_expire
5000
[root@localhost iosched]# cat read_expire
500
2.调整调度算法为:anticipatory
优化完成率取决于读取
[root@localhost sda]# echo anticipatory >/sys/block/sda/queue/scheduler
查看结果:
[root@localhost iosched]# cat /sys/block/sda/queue/scheduler
noop [anticipatory] deadline cfq
可调参数 /sys/block/sda/queue/iosched
另一个要等待多久,附近的读
[root@localhost iosched]# cat antic_expire
6 (默认)
阅读(3442) | 评论(0) | 转发(0) |