没有合适的资源?快使用搜索试试~ 我知道了~
IO调度发生在Linux内核的IO调度层。这个层次是针对Linux的整体IO层次体系来说的。从read()或者write()系统调用的角度来说,Linux整体IO体系可以分为七层,它们分别是:1.VFS层:虚拟文件系统层。由于内核要跟多种文件系统打交道,而每一种文件系统所实现的数据结构和相关方法都可能不尽相同,所以,内核抽象了这一层,专门用来适配各种文件系统,并对外提供统一操作接口。2.文件系统层:不同的文件系统实现自己的操作过程,提供自己特有的特征,具体不多说了,大家愿意的话自己去看代码即可。3.页缓存层:负责真对page的缓存。4.通用块层:由于绝大多数情况的io操作是跟块设备打交
资源推荐
资源详情
资源评论
如何提高如何提高Linux下块设备下块设备IO的整体性能?的整体性能?
IO调度发生在Linux内核的IO调度层。这个层次是针对Linux的整体IO层次体系来说的。从read()或者write()系统调用的角度来
说,Linux整体IO体系可以分为七层,它们分别是:
1.VFS层:虚拟文件系统层。由于内核要跟多种文件系统打交道,而每一种文件系统所实现的数据结构和相关方法都可能不尽
相同,所以,内核抽象了这一层,专门用来适配各种文件系统,并对外提供统一操作接口。
2.文件系统层:不同的文件系统实现自己的操作过程,提供自己特有的特征,具体不多说了,大家愿意的话自己去看代码即
可。
3.页缓存层:负责真对page的缓存。
4.通用块层:由于绝大多数情况的io操作是跟块设备打交道,所以Linux在此提供了一个类似vfs层的块设备操作抽象层。下层
对接各种不同属性的块设备,对上提供统一的Block IO请求标准。
5.IO调度层:因为绝大多数的块设备都是类似磁盘这样的设备,所以有必要根据这类设备的特点以及应用的不同特点来设置一
些不同的调度算法和队列。以便在不同的应用环境下有针对性的提高磁盘的读写效率,这里就是大名鼎鼎的Linux电梯所起作
用的地方。针对机械硬盘的各种调度方法就是在这实现的。
6.块设备驱动层:驱动层对外提供相对比较高级的设备操作接口,往往是C语言的,而下层对接设备本身的操作方法和规范。
7.块设备层:这层就是具体的物理设备了,定义了各种真对设备操作方法和规范。
有一个已经整理好的[Linux IO结构图],非常经典,一图胜千言:
我们今天要研究的内容主要在IO调度这一层。
它要解决的核心问题是,如何提高块设备IO的整体性能?这一层也主要是针对机械硬盘结构而设计的。
众所周知,机械硬盘的存储介质是磁盘,磁头在盘片上移动进行磁道寻址,行为类似播放一张唱片。
这种结构的特点是,顺序访问时吞吐量较高,但是如果一旦对盘片有随机访问,那么大量的时间都会浪费在磁头的移动上,这
时候就会导致每次IO的响应时间变长,极大的降低IO的响应速度。
磁头在盘片上寻道的操作,类似电梯调度,实际上在最开始的时期,Linux把这个算法命名为Linux电梯算法,即:
如果在寻道的过程中,能把顺序路过的相关磁道的数据请求都“顺便”处理掉,那么就可以在比较小影响响应速度的前提下,提
高整体IO的吞吐量。
这就是我们为什么要设计IO调度算法的原因。
目前在内核中默认开启了三种算法/模式:noop,cfq和deadline。严格算应该是两种:
因为第一种叫做noop,就是空操作调度算法,也就是没有任何调度操作,并不对io请求进行排序,仅仅做适当的io合并的一个
fifo队列。
剩余7页未读,继续阅读
资源评论
weixin_38665046
- 粉丝: 3
- 资源: 931
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功