一个IO的传奇一生(6)

来源:网络收集 时间:2025-08-07 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xuecool-com或QQ:370150219 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

调度器的目的就在于此,它的初衷是面向存储介质设计的。因此,当一个系统的存储介质发生变化之后,IO调度器就需要改变。例如,针对SSD存储介质,传统意义上的IO调度算法就不再适用了。SSD不存在机械操作,不存在漫长的寻道时间问题,因此,不存在传统磁介质的随机读写问题。但是,SSD存在写放大的问题,一个小写会引入大量的数据读写操作,从而使得IO性能下降。所以,传统磁盘的IO调度器在SSD面前就没有价值了,可以采用最简单的Noop调度器对IO进行后向合并就可以了,而写放大等问题往往都在SSD内部的Firmware解决了。

考虑一下,如果设计的IO调度器完全面向存储介质,那么设计的调度算法只需要考虑IO请求的前向/后向合并就可以了,这样的IO合并减少了磁头的抖动,就像一部电梯一样,一直往一个方向移动。这种算法看上去很完美,但是,在实践中我们会发现有些请求会长时间得不到服务,就像一辆电梯厂时间停在一个楼层,其他楼层的人长时间得不到服务。特别对于一些读操作,往往是同步请求,如果长时间得不到服务,那么会大大影响应用的性能。所以,仅仅简单的考虑存储介质的特性,进行IO的前向/后向合并是不够的,还需要考虑IO的本身属性。

从IO的属性来看,最需要区分的是读写请求,读写请求的优先级是不一样的,大多数写请求可以异步完成,读请求需要同步完成,所以,对于读写请求可以分开处理。虽然分开之后可能会引入更多的磁盘抖动,但是,应用的整体性能还是会提高。

考虑了IO的基本属性之外,是不是就够了呢?其实还是不够的。例如在一个服务器中存在多个应用,这些应用会访问相同的存储,有些应用读请求多,有些应用写请求多,如果仅仅考虑IO的基本属性,那么对于这些不同的应用就会表现出不同的IO性能。有些应用得到较多的IO带宽,性能较好;有些应用得到较少的带宽,性能较差。这显然是不合理的,由于调度算法的策略问题,导致一个系统中,不同应用具有不同的IO性能。为了解决这个问题,需要考虑应用属性。

在现有的Linux系统中,提供了多种IO调度器,这些调度器有些仅仅考虑了存储介质属性(Noop),有些考虑了IO属性(Deadline),还有的考虑了应用属性(cfq)。不同调度器的设计考虑范畴不同,所以复杂度也有很大差别。下面会对Linux中的这几种调度器进行阐述。

百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典综合文库一个IO的传奇一生(6)在线全文阅读。

一个IO的传奇一生(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.70edu.com/wenku/352423.html(转载请注明文章来源)
Copyright © 2020-2025 70教育网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:370150219 邮箱:370150219@qq.com
苏ICP备16052595号-17
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:7 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219