博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux 2.6的IO调度算法
阅读量:2449 次
发布时间:2019-05-10

本文共 1007 字,大约阅读时间需要 3 分钟。

IO子系统架构
调用流程大致如下:
用户进程write()--&gt 文件系统层(page cache/bio)--pdflush--&gt block层(IO调度器/IO请求队列) --&gt 设备驱动(SCSI) --&gt 磁盘
当进程执行write操作时,先写入page cache,由文件系统层负责将连续的块组成bio,并将其发送给block层;
bio是连接文件系统层和block层的接口;
linux 2.6提供4种IO调度算法:
NOOP--全称No Operation
采用FIFO,在此基础上还实现了相邻IO请求合并;
该算法假定IO请求到达之前已经由驱动设备做了优化,因此无需在做额外工作;
最简便的算法实现,适用于SSD和fusion IO
CFQ--全称completely fair queuing,2.6.18成为默认选项;
为每个进程维护一个队列,按照IO请求的地址排序(而非FIFO),轮询处理,每次处理4个请求;
可以节省大量的磁盘寻道时间,对于传统的磁盘比较有益,但有可能会出现饿死的情况;
很适合OLTP DB应用;
Deadline scheduler--
在CFQ的基础上,解决了饥饿等待的问题;
除了进程IO,引入了读IO和写IO(FIFO),其中读IO最大等待时间500ms,写IO为5s,其优先级均高于CFQ,
FIFO(read) > FIFO(write) > CFQ
比较适用于随机IO请求
anticipatory scheduler
本质与deadline一致,但在每次读操作后需等待6ms,如果期间收到相邻位置的读请求则立即满足,对以随机IO请求为主的环境可能会造成比较大的延时;
其目的是为了照顾顺序IO
查看当前的IO调度算法
dmesg | grep -i scheduler
每个磁盘可使用不同的算法
cat /sys/block/sda/queue/scheduler 
echo "cfq" > /sys/block/sda/queue/scheduler 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15480802/viewspace-757290/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/15480802/viewspace-757290/

你可能感兴趣的文章
pvs-stdio ue4_云中的PVS-Studio:Azure DevOps
查看>>
理想商城_理想产品经理的52个特征
查看>>
移动应用程序开发_7种用于移动应用程序开发的终极编程语言
查看>>
本地应用程序_应用程式本地化的十大语言
查看>>
sds和c字符串比较_SDS虚拟化架构的简要比较
查看>>
java项目中出现的bug_2019年在Java项目中发现的十大bug
查看>>
app开发和web开发_理解现代Web App开发概念的指南
查看>>
汉语句子的意群和重音_五重音而不是字节-数据存储和检索方法
查看>>
现实增强 工具包 csdn_增强现实:21世纪教育的理想工具
查看>>
tls 1.2加密_椭圆曲线加密在TLS 1.3中的工作方式
查看>>
pvs-stdio ue4_使用PVS-Studio检查GCC 10编译器
查看>>
inter-rat_数字取证技巧和窍门:基于IM的电报RAT-第二部分
查看>>
物联网细分行业_2020年全国互联网细分市场可靠性研究
查看>>
加拿大加密货币交易_加密货币交易-如何制定可持续战略
查看>>
pvs-stdio ue4_使用PVS-Studio检查电报开放网络
查看>>
寻找新
查看>>
PostgreSQL中的WAL:2.预写日志
查看>>
zephyr操作系统_检查Zephyr操作系统代码
查看>>
Node.js VS Python:哪个更好?
查看>>
notebooks_.NET Core与Jupyter Notebooks预览1
查看>>