本发明专利技术公开了一种IO调度方法及装置,其中,该方法包括:获取每个IO队列的量化距离,其中,任一IO队列的量化距离为对该IO队列中每个IO请求对应的起始磁盘位置和当前磁头位置之间的距离进行计算得到的;利用每个所述IO队列的量化距离及预先设定的每个所述IO队列的原始优先级,计算每个所述IO队列的优化优先级;按照所述优化优先级对所述IO队列进行轮询调度。由此,不仅能够达到IO队列的公平轮询,还能够减少磁头移动幅度,进一步减少磁盘寻道时间,从而有效提高了磁盘的IO吞吐率。
【技术实现步骤摘要】
本专利技术涉及数据存储
,更具体地说,涉及一种?ο调度方法及装置。
技术介绍
CFQ(Completely Fair Queuing,完全公平的排队)算法是Linux系统的默认IO调 度算法,对于通用服务器来说通常是最好的选择。其中,CFQ算法的主要目标是在触发10(Input/Output,输入/输出)请求的所有进 程中确保磁盘IO带宽的公平分配,具体来说,CFQ算法使用多个排序队列,任一排序队列存 放对应于一个进程发出的IO请求,当利用CFQ算法处理一个IO请求时,内核调用一个散列函 数确定当前进程的线程组标识符;然后,将一个新的IO请求插入与处理的IO请求对应的队 列末尾。CFQ算法的本质为采用轮询方式扫描排序队列,依据每个排序队列的优先级选择第 一个非空队列,依次调度不同队列中特定个数(公平)的IO请求。但是专利技术人发现,现有技术 中提供的上述技术方案仅仅考虑到IO队列的优先级,但是并没有充分考虑到磁盘的寻道情 况,因此,利用上述方式选取排序队列所达到的磁盘IO吞吐率较低。 综上所述,现有技术中利用CFQ算法选取排序队列时存在磁盘IO吞吐率较低的问 题。
技术实现思路
本专利技术的目的是提供一种IO调度方法及装置,以解决现有技术利用CFQ算法选取 排序队列时存在的磁盘IO吞吐率较低的问题。 为了实现上述目的,本专利技术提供如下技术方案: 一种IO调度方法,包括: 获取每个IO队列的量化距离,其中,任一IO队列的量化距离为对该IO队列中每个 IO请求对应的起始磁盘位置和当前磁头位置之间的距离进行计算得到的; 利用每个所述IO队列的量化距离及预先设定的每个所述IO队列的原始优先级,计 算每个所述IO队列的优化优先级; 按照所述优化优先级对所述IO队列进行轮询调度。 优选的,还包括: 利用每个所述IO队列的量化距离及优化优先级计算每个所述IO队列的处理时间 片。 优选的,利用每个所述IO队列的量化距离及优化优先级计算每个所述IO队列的处 理时间片,包括: 按照每个所述IO队列的量化距离与该IO队列的处理时间片成反比,优化优先级与 该IO队列的处理时间片成正比的原则确定每个所述IO队列的处理时间片。 优选的,利用每个所述IO队列的量化距离及预先设定的每个所述IO队列的原始优 先级,计算每个所述IO队列的优化优先级,包括: 按照每个所述IO队列的量化距离与该IO队列的优化优先级成反比,原始优先级与 该IO队列的优化优先级成正比的原则确定每个所述IO队列的优化优先级。 优选的,获取每个所述IO队列的量化距离,包括: 获取任意所述IO队列中每个IO请求对应的起始磁盘位置与当前磁头位置的距离 的平均值为该IO队列的量化距离。 优选的,获取每个所述IO队列的量化距离之前,还包括: 判断外界是否输入有优先级信息,如果是,则按照所述优先级信息中包含的每个 所述IO队列的指定优先级对所述IO队列进行轮询,如果否,则获取每个所述IO队列的量化 距离。 一种IO调度装置,包括: 获取模块,用于获取每个IO队列的量化距离,其中,任一IO队列的量化距离为对该 IO队列中每个IO请求对应的起始磁盘位置和当前磁头位置之间的距离进行计算得到的; 第一计算模块,用于利用每个所述IO队列的量化距离及预先设定的每个所述IO队 列的原始优先级,计算每个所述IO队列的优化优先级; 轮询模块,用于按照所述优化优先级对所述IO队列进行轮询调度。 优选的,还包括:第二计算模块,用于利用每个所述IO队列的量化距离及优化优先级计算每个所述 IO队列的处理时间片。优选的,所述获取模块包括:获取单元,用于获取任意所述IO队列中每个IO请求对应的起始磁盘位置与当前磁 头位置的距离的平均值为该IO队列的量化距离。 优选的,还包括: 触发模块,用于判断外界是否输入有优先级信息,如果是,则按照所述优先级信息 中包含的每个所述IO队列的指定优先级对所述IO队列进行轮询,如果否,则获取每个所述 IO队列的量化距离。 本专利技术提供了一种IO调度方法及装置,其中,该方法包括:获取每个IO队列的量化 距离,其中,任一IO队列的量化距离为对该IO队列中每个IO请求对应的起始磁盘位置和当 前磁头位置之间的距离进行计算得到的;利用每个所述IO队列的量化距离及预先设定的每 个所述IO队列的原始优先级,计算每个所述IO队列的优化优先级;按照所述优化优先级对 所述IO队列进行轮询调度。与现有技术相比,本申请提供的上述技术方案中,依据预先设定 的每个IO队列的优先级与每个IO队列的量化距离确定优化优先级,而每个IO队列的量化距 离为对该IO队列中每个IO请求对应的起始磁盘位置和当前磁头位置之间的距离进行计算 后得到的,进而依据优化优先级对IO队列进行轮询调度,即,本申请中确定对IO队列轮询所 依据的优先级时,不仅考虑到预先设定的IO队列本身的优先级,还考虑到IO队列中每个IO 请求对应的起始磁盘位置和当前磁头位置之间的距离,因此,不仅能够达到IO队列的公平 轮询,还能够减少磁头移动幅度,进一步减少磁盘寻道时间,从而有效提高了磁盘的IO吞吐 率。【附图说明】 为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 专利技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据 提供的附图获得其他的附图。 图1为本专利技术实施例提供的一种IO调度方法的流程图;图2为本专利技术实施例提供的一种IO调度装置的结构示意图。【具体实施方式】下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于 本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他 实施例,都属于本专利技术保护的范围。 请参阅图1,其示出了本专利技术实施例提供的一种IO调度方法的流程图,可以包括以 下步骤: Sll:获取每个IO队列的量化距离,其中,任一IO队列的量化距离为对该IO队列中 每个IO请求对应的起始磁盘位置和当前磁头位置之间的距离进行计算得到的。 其中,每个IO请求对应的起始磁盘位置即为该IO请求写入数据时对应的起始写入 位置或者读取数据时对应的起始读取位置,而在写入数字或者读取数据时,需要由磁头移 动至对应的起始位置进而完成写入数据或者读取数据的操作。因此,起始磁盘位置和当前 磁头位置之间的距离越小,说明磁头需移动的距离越小,起始磁盘位置和当前磁头位置之 间的距离越大,说明磁头需移动的距离越大。 S12:利用每个IO队列的量化距离及预先设定的每个IO队列的原始优先级,计算每 个IO队列的优化优先级。 其中,对于每个IO队列的原始优先级可以根据实际需要进行确定,如可以是按照 发起IO请求的线程的优先级确定该IO请求所属IO队列的优先级,也可以是按照每个IO队列 中IO请求的数量进行确定该IO队列的优先级,还可以按照现有技术中基于CFQ算法对IO队 列进行轮询时所依据的优先级作为IO队列的原始优先级,或者可以是其他方式,均在本发 明的保护范围之内。 而利用每个IO队列的量化距离及预先设本文档来自技高网...
【技术保护点】
一种IO调度方法,其特征在于,包括:获取每个IO队列的量化距离,其中,任一IO队列的量化距离为对该IO队列中每个IO请求对应的起始磁盘位置和当前磁头位置之间的距离进行计算得到的;利用每个所述IO队列的量化距离及预先设定的每个所述IO队列的原始优先级,计算每个所述IO队列的优化优先级;按照所述优化优先级对所述IO队列进行轮询调度。
【技术特征摘要】
【专利技术属性】
技术研发人员:张月辉,
申请(专利权)人:浪潮北京电子信息产业有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。