一、概述
Linux将设备驱动纳入文件系统的范畴,所以整个结构如下图所示。在IO调度层,有三个核心对象,request、request_queue和IO scheduler(实际上是request_queue中的elevator_t * elevator),其中IO scheduler在Linux kernel 2.6有四种调度算法:noop(no opreation)、CFQ(complete fairness queueing)、deadline和anticipatory。noop是电梯调度算法,但是在高IO request下容易饥饿;CFQ高吞吐,但是如果运行的进程对延迟敏感,这个算法就不太理想;deadline对延迟敏感,但是吞吐没有CFQ好;于是基于deadline出了个anticipatory企图兼顾吞吐和延迟,但是实际不理想,在后续的内核版本中好像就去掉了这个算法。一般是直接用默认的IO调度算法,很少考虑算法的调优,但是某一个算法中的配置调优还是比较多的,相关的调优参数见:https://documentation.suse.com/sles/15-SP1/html/SLES-all/cha-tuning-io.html



本文补充了Linux内核中IO调度算法的修改方法,包括运行时临时修改和启动时内核参数持久化修改。介绍了noop、CFQ、deadline等调度算法的特点,并提供了查看和调整磁盘调度算法的命令。

最低0.47元/天 解锁文章
233

被折叠的 条评论
为什么被折叠?



