磁盘I/O调度方法和装置制造方法及图纸

技术编号:13796196 阅读:65 留言:0更新日期:2016-10-06 14:52
本发明专利技术涉及一种磁盘I/O调度方法和装置,方法包括:接收与磁盘通过I/O接口连接的设备发送的I/O操作请求;将I/O操作请求插入内核层的调度队列前,先根据业务种类将I/O操作请求插入至应用层的业务队列中,然后在I/O操作请求的处理状态符合预设的业务队列调度触发条件时,将各业务队列中的I/O操作请求依据I/O操作的读写类型插入至应用层的读队列或写队列中,然后再将应用层的读队列或写队列中的I/O操作请求插入至内核层的调度队列中,从而在应用层按照一定的策略对I/O操作请求进行处理,使得操作系统能够根据特定场景下对读写延时和带宽等的控制需求设置插入策略,满足特定场景下对读写延时和带宽等的控制需求。

【技术实现步骤摘要】

本专利技术涉及计算机
,尤其涉及一种磁盘输入/输出(input/output,I/O)调度方法和装置。
技术介绍
目前,客户端的操作系统在接收到各应用或软件所发送的I/O操作请求时,对I/O操作请求的调度方法主要有两种:无操作算法(no operation,NOOP)和完全公平队列算法(completely fair queuing,CFQ)。NOOP算法中,操作系统接收到I/O操作请求时,将I/O操作请求插入内核层的调度队列的开头或末尾,调度队列中下一个要处理的I/O操作请求总是调度队列中的第一个请求;CFQ算法将I/O操作请求按进程类型插入内核层的各个进程队列中,操作系统的内核层依次从各个进程队列中调取特定个数的请求插入内核层的调度队列中,进行处理。然而,现有技术中,上述两种调度方法主要是由内核层来实现对I/O操作请求的调度,而内核层的实现固定,实现策略单一,难以针对I/O操作请求设置优先级策略或者流量控制策略等,难以满足特定场景下对读写延时和带宽等的控制需求。
技术实现思路
本专利技术提供一种磁盘I/O调度方法和装置,用于解决现有技术中调度方法难以满足特定场景下对读写延时和带宽等的控制需求的问题。本专利技术的第一个方面是提供一种磁盘I/O调度方法,包括:接收与磁盘通过I/O接口连接的设备发送的I/O操作请求,所述I/O操作请求中携带:I/O操作的读写类型和业务种类;根据所述I/O操作请求中所述I/O操作的业务种类将所述I/O操作请求插入至应用层的对应业务队列中;判断所述I/O操作请求的处理状态是否满足预设的业务队列调度触发条件;若满足,将各业务队列中的所述I/O操作请求依据所述I/O操作的读写类型插入至应用层的读队列或写队列中;将所述读队列和所述写队列中的所述I/O操作请求插入至内核层的调度队列中,以便根据所述调度队列中的所述I/O操作请求对磁盘进行操作。本专利技术的另一个方面提供一种磁盘I/O调度装置,包括:接收模块,用于接收与磁盘通过I/O接口连接的设备发送的I/O操作请求,所述I/O操作请求中携带:I/O操作的读写类型和业务种类;插入模块,用于根据所述I/O操作请求中所述I/O操作的业务种类将所述I/O操作请求插入至应用层的对应业务队列中;判断模块,用于判断所述I/O操作请求的处理状态是否满足预设的业务队列调度触发条件;若满足,将各业务队列中的所述I/O操作请求依据所述I/O操作的读写类型插入至应用层的读队列或写队列中;所述插入模块,还用于将所述读队列和所述写队列中的所述I/O操作请求插入至内核层的调度队列中,以便根据所述调度队列中的所述I/O操作请求对磁盘进行操作。本专利技术中,接收与磁盘通过I/O接口连接的设备发送的I/O操作请求,I/O操作请求中携带:I/O操作的读写类型和业务种类,将I/O操作请求插入内核层的调度队列前,先根据业务种类将I/O操作请求插入至应用层的对应业务队列中,然后在I/O操作请求的处理状态符合预设的业务队列调度触发条件时,将各业务队列中的I/O操作请求依据I/O操作的读写类型插入至应用层的读队列或写队列中,然后再将应用层的读队列或写队列中的I/O操作请求插入至内核层的调度队列中,从而在I/O操作请求插入内核层的调度队列前,在应用层按照一定的策略对I/O操作请求进行处理,而应用层的策略容易调整,从而使得操作系统能够根据特定场景下对读写延时和带宽等的控制需求设置各层的插入策略,实现策略灵活,能够满足特定场景下对读写延时和带宽等的控制需求。附图说明图1为本专利技术提供的磁盘I/O调度方法一个实施例的流程图;图2为本专利技术提供的磁盘I/O调度方法又一个实施例的流程图;图3为本专利技术提供的磁盘I/O调度方法另一个实施例的流程图;图4为本专利技术提供的磁盘I/O调度方法又一个实施例的流程图;图5为本专利技术提供的磁盘I/O调度装置一个实施例的结构示意图;图6为本专利技术提供的磁盘I/O调度装置又一个实施例的结构示意图;图7为本专利技术提供的磁盘I/O调度装置另一个实施例的结构示意图;图8为本专利技术提供的磁盘I/O调度装置又一个实施例的结构示意图。具体实施方式为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。图1为本专利技术提供的磁盘I/O调度方法一个实施例的流程图,如图1所示,包括:101、接收与磁盘通过I/O接口连接的设备发送的I/O操作请求,I/O操作请求中携带:I/O操作的读写类型和业务种类。本专利技术提供的磁盘I/O调度方法的执行主体可以为磁盘I/O调度装置,磁盘I/O调度装置具体可以为安装有所述磁盘的终端或者所述终端上的操作系统。其中,I/O请求具体可以为操作系统本地其他应用程序产生并通过对应的I/O接口传来的,或者为其他设备的应用程序通过网络传来的。具体地,与磁盘通过I/O接口连接的设备主要包括:处理器、打印机等等。处理器从磁盘读取数据或者向磁盘写入数据时,打印机读取磁盘数据时,处理器或打印机中的读写进程会触发I/O读操作或者I/O写操作,将包括I/O读操作或者I/O写操作的I/O请求通过I/O接口发送给磁盘上的磁盘调度装置。102、根据I/O操作请求中I/O操作的业务种类将I/O操作请求插入至应用层的对应业务队列中。其中,磁盘I/O调度装置具体可以在应用层设置两个队列层,一个队列层为业务队列层,一个队列层为读写队列层。业务队列层中包括多个业务队
列,每个业务队列对应一种上层业务。读写队列层分为读和写两个操作队列。当磁盘I/O调度装置从各个设备的I/O接口接收到I/O操作请求之后,首先在业务队列层中,根据I/O操作请求中I/O操作的业务种类将I/O操作请求插入至对应业务队列中。具体地,磁盘I/O调度装置中存储有业务种类与业务队列起始地址之间的对应关系表,磁盘I/O调度装置可以根据I/O操作请求中I/O操作的业务种类查询对应关系表,确定与I/O操作的业务种类对应的业务队列起始地址,根据业务队列起始地址和I/O操作的起始地址偏移将I/O操作插入至上述业务队列中。当I/O操作请求对应的业务队列已达到最大长度时,磁盘I/O调度装置可以丢弃该I/O操作请求。例如,假设第N个业务队列的最大长度为MN,当业务类型为该业务的I/O操作请求到达时,磁盘I/O调度装置将I/O操作请求插入至第N个业务队列的队尾,若在插入前第N个业务队列的队列长度已达到MN,则丢弃该I/O操作请求。103、判断I/O操作请求的处理状态是否满足预设的业务队列调度触发条件;若满足,将各业务队列中的I/O操作请求依据I/O操作的读写类型插入至应用层的读队列或写队列中。其中,按照包含的I/O操作的业务种类可以将应用层的业务队列分为实时的业务队列和非实时的业务队列。对应的,预设的业务队本文档来自技高网
...

【技术保护点】
一种磁盘I/O调度方法,其特征在于,包括:接收与磁盘通过I/O接口连接的设备发送的I/O操作请求,所述I/O操作请求中携带:I/O操作的读写类型和业务种类;根据所述I/O操作请求中所述I/O操作的业务种类将所述I/O操作请求插入至应用层的对应业务队列中;判断所述I/O操作请求的处理状态是否满足预设的业务队列调度触发条件;若满足,将各业务队列中的所述I/O操作请求依据所述I/O操作的读写类型插入至应用层的读队列或写队列中;将所述读队列和所述写队列中的所述I/O操作请求插入至内核层的调度队列中,以便根据所述调度队列中的所述I/O操作请求对磁盘进行操作。

【技术特征摘要】
1.一种磁盘I/O调度方法,其特征在于,包括:接收与磁盘通过I/O接口连接的设备发送的I/O操作请求,所述I/O操作请求中携带:I/O操作的读写类型和业务种类;根据所述I/O操作请求中所述I/O操作的业务种类将所述I/O操作请求插入至应用层的对应业务队列中;判断所述I/O操作请求的处理状态是否满足预设的业务队列调度触发条件;若满足,将各业务队列中的所述I/O操作请求依据所述I/O操作的读写类型插入至应用层的读队列或写队列中;将所述读队列和所述写队列中的所述I/O操作请求插入至内核层的调度队列中,以便根据所述调度队列中的所述I/O操作请求对磁盘进行操作。2.根据权利要求1所述的方法,其特征在于,所述应用层的业务队列按照包含的I/O操作的业务种类分为实时的业务队列和非实时的业务队列;所述预设的业务队列调度触发条件包括:所述I/O操作请求插入至所述实时的业务队列中,预设的定时器周期到期,以及处理完上一个I/O操作请求。3.根据权利要求1所述的方法,其特征在于,所述I/O操作请求中还携带:起始地址偏移和长度信息;所述将所述读队列和所述写队列中的所述I/O操作请求插入至内核层的调度队列中,以便根据所述调度队列中的所述I/O操作请求对磁盘进行操作之前,还包括:根据所述I/O操作的起始地址偏移,对所述读队列和/或所述写队列中的所述I/O操作请求进行排序;判断排序结果中的相邻的两个I/O操作请求中,排序在前的I/O操作请求的起始偏移地址与对应的长度的和是否等于排序在后的I/O操作请求的起始地址偏移;若等于,则将所述相邻的两个I/O操作请求合并为一个I/O操作请求。4.根据权利要求1所述的方法,其特征在于,所述判断所述I/O操作请求的处理状态是否满足预设的业务队列调度触发条件;若满足,将各业务队列中的所述I/O操作请求依据所述I/O操作的读写类型插入至应用层的读队列
\t或写队列中,包括:判断所述I/O操作请求的处理状态是否满足预设的业务队列调度触发条件;若所述I/O操作请求的处理状态满足预设的业务队列调度触发条件,则按照各业务队列的优先级的从高到低顺序,依次将各业务队列中的I/O操作请求依据所述I/O操作的读写类型,插入至应用层的读队列或写队列中,直至读队列和写队列满为止。5.根据权利要求1或2所述的方法,其特征在于,将所述读队列和所述写队列中的所述I/O操作请求插入至内核层的调度队列中,包括:按照预设的读写比例,从所述读队列中选取第一组I/O操作请求,从所述写队列中选取第二组I/O操作请求,将所述第一组I/O操作请求和所述第二组I/O操作请求插入至内核层的调度队列中,所述第一组I/O操作请求中I/O操作请求的个数与所述第二组I/O操作请求中I/O操作请求的个数的比例满足所述读写比例。6.根据权利要求1或2所述的方法,其特征在于,将所述读队列和所述写队列中的所述I/O操作请求插入至内核层的调度队列中,包括:将所述读队列中的所述I/O操作请求插入至所述调度队列中,并对从所述读队列插入至所述调度队列中的所述I/O操作请求进行计数,得到第一计数值,在所述第一计数值超过第一预设数值时,停止插入所述读队列中的所述I/O操作请求;将所述写队列中的所述I/O操作请求插入至所述调度队列中,并对从所述写队列插入至所述调度队列中的所述I/O操作请求进行计数,得到第二计数值,在所述第二计数值超过第二预设数值时,停止插入所述写队列中的所述I/O操作请求。7.根据权利要求1所述的方法,其特征在于,所述调度队列为异步I/O队列。8.一种磁盘I/O调度装置,其特征在于,包括:接收模块,用于接收与磁盘通过I/O接口连接的设备发送的I\...

【专利技术属性】
技术研发人员:肖芬李雅卿颜克洲
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1