CN101639763B - 一种io调度方法及调度装置 - Google Patents

一种io调度方法及调度装置 Download PDF

Info

Publication number
CN101639763B
CN101639763B CN2009101696103A CN200910169610A CN101639763B CN 101639763 B CN101639763 B CN 101639763B CN 2009101696103 A CN2009101696103 A CN 2009101696103A CN 200910169610 A CN200910169610 A CN 200910169610A CN 101639763 B CN101639763 B CN 101639763B
Authority
CN
China
Prior art keywords
read
write
scsi read
scsi
write requests
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2009101696103A
Other languages
English (en)
Other versions
CN101639763A (zh
Inventor
王佳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZTE Corp
Original Assignee
ZTE Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Priority to CN2009101696103A priority Critical patent/CN101639763B/zh
Publication of CN101639763A publication Critical patent/CN101639763A/zh
Application granted granted Critical
Publication of CN101639763B publication Critical patent/CN101639763B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种IO调度方法及调度装置,在块设备层中设置有IO调度单元,所述方法包括:块设备接收用户下发的小型计算机系统专用接口SCSI读写命令,并将所述SCSI读写命令递交到所述IO调度单元;所述IO调度单元根据所述SCSI读写命令在读写调度队列中查找或生成相应的SCSI读写请求来存放所述SCSI读写命令;当进入SCSI读写请求的下发执行过程时,所述IO调度单元在读写调度队列中选择SCSI读写请求,并将选定的SCSI读写请求下发至磁盘执行;本发明直接将SCSI读写命令作为调度对象,不依赖于操作系统的通用块层,提高了IO调度的效率,同时增加了调度装置的灵活性和扩展性。

Description

一种IO调度方法及调度装置
技术领域
本发明涉及计算机存储计算领域,尤其涉及一种IO调度方法及调度装置。
背景技术
当前,行业应用随着规模的扩大而对存储设备、软件的性能提出了更高的要求,这些要求包括存储系统的速度、吞吐量、高可用性和可靠性等方面,多种传统的磁盘阵列读写处理方法已经显得性能不足。
如图1所示,图1为传统的IO调度功能的实现示意图。这种方法通常依赖于操作系统的通用块层,调度的对象是系统的通用读写对象。系统提供特定的调度框架和几种典型的调度算法,使得实现IO调度能做的仅限于在这个框架下填充自己的调度策略或修改优化原有的调度算法,不利于IO调度的个性化和扩展。对于读写对象是SCSI(Small Computer System Interface,小型计算机系统专用接口)读写命令等非通用对象的系统来说,此种调度方法还需要额外的读写对象封装转化步骤,降低了系统的读写效率。
发明内容
鉴于上述的分析,本发明旨在提供一种IO调度方法及调度装置,用以解决现有技术中存在的调度方法必须依赖于操作系统通用块层的问题。
本发明的目的主要是通过以下技术方案实现的:
本发明提供了一种IO调度方法,在块设备层中设置有IO调度单元,所述方法包括:
步骤A:块设备接收用户下发的小型计算机系统专用接口SCSI读写命令,并将所述SCSI读写命令递交到所述IO调度单元;
步骤B:所述IO调度单元根据所述SCSI读写命令在读写调度队列中查找或生成相应的SCSI读写请求来存放所述SCSI读写命令;所述步骤B具体包括:
步骤B1:所述IO调度单元接收到用户下发的所述SCSI读写命令,根据所述SCSI读写命令的特征从读写调度队列中查找能与所述SCSI读写命令合并的SCSI读写请求,如果查找到,执行步骤B2;如果未查找到,则执行步骤B3;
步骤B2:将所述SCSI读写命令放置在相应的SCSI读写请求中进行合并,同时更新合并后的SCSI读写请求的属性和读写调度队列的属性;
步骤B3:根据所述SCSI读写命令的特征构造一个新的SCSI读写请求来存放所述SCSI读写命令,并将新的SCSI读写请求插入到读写调度队列中,同时更新新的SCSI读写请求的属性和读写调度队列的属性;
步骤C:当进入SCSI读写请求的下发执行过程时,所述IO调度单元在读写调度队列中选择SCSI读写请求,并将选定的SCSI读写请求下发至磁盘执行。
进一步地,所述步骤A具体包括:
块设备接收用户下发的SCSI读写命令,检查所述SCSI读写命令的合法性,如果合法,则将所述SCSI读写命令递交到IO调度单元;否则返回失败响应。
进一步地,所述步骤B2具体包括:
步骤B21:将所述SCSI读写命令放置在相应的SCSI读写请求中进行合并,同时更新合并后的SCSI读写请求的属性;
步骤B22:检查合并后的SCSI读写请求能否与读写调度队列中的其他SCSI读写请求进一步合并,如果是,则执行步骤B23;否则,更新读写调度队列的属性;
步骤B23:进一步合并两个SCSI读写请求,并删除被合并的SCSI读写请求,更新进一步合并后的SCSI读写请求的属性和读写调度队列的属性。
进一步地,所述步骤C具体包括:
当进入SCSI读写请求的下发执行过程时,所述IO调度单元根据预定调度策略选择SCSI读写请求,并将选定的SCSI读写请求经SCSI中间层插入到通用块层的特定位置;然后调用通用块层特定位置上的SCSI读写请求,将其插入到相应磁盘的IO队列中;或者,
所述步骤C具体包括:
在不存在通用块层的情况下,当进入SCSI读写请求的下发执行过程时,所述IO调度单元根据预定调度策略选择SCSI读写请求,将选定的SCSI读写请求经SCSI中间层直接插入到相应磁盘的IO队列中。
进一步地,所述步骤C还包括:当所述IO调度单元收到用户发来的SCSI读写请求的下发执行命令时,进入SCSI读写请求的下发执行过程;或者,所述IO调度单元更新读写调度队列的属性的同时,检查读写调度队列中的SCSI读写请求数是否达到预定阈值,并在确定达到时触发进入SCSI读写请求的下发执行过程。
本发明还提供了一种IO调度装置,包括:读写命令处理单元和IO调度单元,其中,
所述读写命令处理单元,用于接收用户下发的SCSI读写命令,并将所述SCSI读写命令递交到所述IO调度单元;
所述IO调度单元,用于根据接收到的SCSI读写命令在读写调度队列中查找或生成相应的SCSI读写请求来存放所述SCSI读写命令;当进入SCSI读写请求的下发执行过程时,在读写调度队列中选择SCSI读写请求,并将选定的SCSI读写请求下发至磁盘执行;所述IO调度单元具体包括:查找模块、合并模块、新建模块和下发执行模块,其中
所述查找模块,用于根据用户下发的所述SCSI读写命令的特征从读写调度队列中查找能与所述SCSI读写命令合并的SCSI读写请求,如果查找到,则触发所述合并模块;如果未查找到,则触发所述新建模块;
所述合并模块,用于将所述SCSI读写命令放置在相应的SCSI读写请求中进行合并,同时更新合并后的SCSI读写请求的属性和读写调度队列的属性;
所述新建模块,用于根据所述SCSI读写命令的特征构造一个新的SCSI读写请求来存放所述SCSI读写命令,并将新的SCSI读写请求插入到读写调度队列中,同时更新新的SCSI读写请求的属性和读写调度队列的属性;
所述下发执行模块,用于在进入SCSI读写请求的下发执行过程时,在读写调度队列中选择SCSI读写请求,并将选定的SCSI读写请求下发至磁盘执行。
进一步地,所述读写命令处理单元具体用于,接收用户下发的SCSI读写命令,检查所述SCSI读写命令的合法性,如果合法,则将所述SCSI读写命令递交到所述IO调度单元;否则返回失败响应。
进一步地,所述合并模块具体用于,
将所述SCSI读写命令放置在相应的SCSI读写请求中进行合并,同时更新合并后的SCSI读写请求的属性;然后检查合并后的SCSI读写请求能否与读写调度队列中的其他SCSI读写请求进一步合并,如果是,则进一步合并两个SCSI读写请求,并删除被合并的SCSI读写请求,更新进一步合并后的SCSI读写调度队列的属性和读写调度队列的属性;否则,更新读写调度队列的属性。
进一步地,所述下发执行模块具体用于,当进入SCSI读写请求的下发执行过程时,根据预定调度策略选择SCSI读写请求,并将选定的SCSI读写请求经SCSI中间层插入到通用块层的特定位置;然后调用通用块层特定位置上的选定的SCSI读写请求,将其插入到相应磁盘的IO队列中;或者,
所述下发执行模块具体用于,当进入SCSI读写请求的下发执行过程时,根据预定调度策略选择SCSI读写请求,并将选定的SCSI读写请求经SCSI中间层直接插入到相应磁盘的IO队列中。
本发明有益效果如下:
本发明所述基于SCSI读写命令的IO调度方法及调度装置,直接将SCSI读写命令作为调度对象,不依赖于操作系统的通用块层,提高了IO调度的效率,同时增加了调度装置的灵活性和扩展性。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分的从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
图1为现有技术中,传统的IO调度功能的实现示意图;
图2为本发明实施例所述调度方法的应用场景示意图;
图3为本发明实施例所述调度方法的流程示意图;
图4为本发明实施例所述调度方法中,SCSI读写命令与SCSI读写请求合并过程的流程示意图;
图5为本发明实施例所述调度方法中,SCSI读写请求下发执行的流程示意图。
具体实施方式
本发明的目的在于,提供一种IO调度方法及调度装置,直接使用SCSI读写命令作为调度的基本对象,同时将调度功能提升到块设备层中完成,不依赖于操作系统通用块层中的通用调度过程。
下面结合附图来具体描述本发明的优先实施例,其中,附图构成本申请一部分,并与本发明的实施例一起用于阐释本发明的原理。为了清楚和简化目的,当其可能使本发明的主题模糊不清时,将省略本文所描述的器件中已知功能和结构的详细具体说明。
首先,结合附图2到5对本发明实施例所述调度方法进行详细说明。
如图2所示,图2为本发明实施例所述调度方法的应用场景示意图,本发明实施例在块设备层中设计一个IO调度单元,直接将SCSI读写命令作为调度对象,不依赖于系统的调度框架,提高了IO调度的效率,同时增加了IO调度单元的灵活性和扩展性。
在基于图2所示的应用场景下,下面结合附图3到附图5对本发明实施例所述方法进行详细说明。
如图3所示,图3为本发明实施例所述调度方法的流程示意图,包括但不限于以下步骤:
步骤301:块设备接收用户发来的SCSI读写命令;
步骤302:检查该SCSI读写命令的合法性,即检查读写的地址、长度及其他命令参数是否合法?如果是,将该SCSI读写命令递交到IO调度单元的入口,执行步骤303,否则直接返回,执行失败;
步骤303:IO调度单元检测到有SCSI读写命令加入时,根据SCSI读写命令的特征在其中存储的读写调度队列中查找能与该SCSI读写命令合并的SCSI读写请求;
步骤304:判断是否存在与该SCSI读写命令合并的SCSI读写请求?如果是,执行步骤305,否则执行步骤306;
步骤305:进入SCSI读写命令与SCSI读写请求合并过程,具体合并过程参见图4;
步骤306:根据SCSI读写命令的特征构造一个新的SCSI读写请求,并将新的SCSI读写请求放置在IO调度单元中的读写调度队列的合适位置,实现IO调度过程的排序操作;
步骤307:更新读写调度队列的属性,并检查IO调度单元中的SCSI读写请求数是否达到阈值,达到则触发SCSI读写请求的下发执行过程;所述读写调度队列的属性主要指读写调度队列中各个SCSI读写请求的先后次序,由于新生成的SCSI读写请求插入到读写调度队列中或者其他原因影响了读写调度队列原有SCSI读写请求的次序,因而需要通过更新读写调度队列的属性来保持IO调度单元的读写调度队列的有序性;
步骤308:当用户根据需求发送SCSI读写请求的下发命令时,判断是否收到SCSI读写请求的下发命令?如果是,执行步骤309,否则此次读写命令处理过程结束;
步骤309:进入SCSI读写请求的下发命令执行过程,具体过程参见图5。
以下将结合附图4对步骤305,即SCSI读写命令与SCSI读写请求合并过程进行详细说明。
如图4所示,图4为步骤305,即SCSI读写命令与SCSI读写请求合并过程的流程示意图,包括但不限于如下步骤:
步骤401:将SCSI读写命令放置在可以与该SCSI读写命令合并的读写请求中;若合并的过程中发生错误,则停止合并进入图3中的生成新的SCSI读写请求并插入到读写调度队列的过程;
步骤402:SCSI读写命令成功合并到SCSI读写请求后,需要更新SCSI读写请求的属性,包括SCSI读写请求的地址、长度等;
步骤403:由于合并后的SCSI读写请求的属性已经变化,接下来判断它是否能与其他SCSI读写请求进一步合并生成更大的SCSI读写请求?如果是,则执行步骤404;否则执行步骤406;两个请求是否能合并的判断过程主要包括两者IO方向和地址的相邻性检查、合并后将生成的请求的合法性检查等;
步骤404:进入两个SCSI读写请求的合并过程;
步骤405:将被合并的SCSI读写请求从读写调度队列中删除;
步骤406:更新SCSI读写请求在读写调度队列中的位置。
需要说明的是,当IO调度单元接收到SCSI读写命令并查找到可以与其合并的SCSI读写请求时,只说明存在合并的可能性,并不意味着合并一定能成功完成。合并的过程还要受到读写调度队列等属性的限制。常用的合并方式包括向前合并和向后合并,即将SCSI读写命令合并到SCSI读写请求的前部或后部。
以下将结合附图5对步骤309,即SCSI读写请求的下发执行过程进行详细说明。SCSI读写请求的下发执行过程就是将SCSI读写请求从读写调度队列转移到磁盘的IO队列的过程。
如图5所示,图5为步骤309,即SCSI读写请求下发执行过程的流程示意图,包括但不限于以下步骤:
步骤501:IO调度单元依据预定调度策略来完成SCSI读写请求的选择;预定调度策略可以根据用户的需求自行设定,比如,从读写调度队列头部开始选择SCSI读写请求或者从中间开始选择SCSI读写请求等;
步骤502:判断所述SCSI读写请求是否为空,如果是,则结束本次流程,否则执行步骤503;
步骤503:将选中的SCSI读写请求携带在一个系统读写命令中递交到SCSI中间层;
步骤504:SCSI中间层将系统读写命令中携带的SCSI读写请求插入操作系统通用块层的其他调度队列的特定位置(头部或尾部);
步骤505:执行请求下发过程,将SCSI读写请求从通用块层中其他调度队列的特定位置上取下来放置到磁盘的IO队列中,由磁盘驱动程序依次完成其IO队列中的读写请求;然后转到步骤501,直到所述SCSI读写请求为空,即查不到SCSI读写请求。
需要说明的是,若系统中不存在通用块层或类似框架,则步骤504中,选定的SCSI读写请求将被直接放置到磁盘的IO队列中。
另外,SCSI读写请求的下发执行过程除了可以在收到用户下发的SCSI读写请求的下发命令时发起,也可以通过步骤307中IO调度单元检查SCSI读写请求数是否达到预定阈值来发起,即在达到预定阙值时触发SCSI读写请求的下发执行过程。
下面结合附图6对本发明实施例所述调度装置进行详细说明。
如图6所示,图6为本发明实施例所述调度装置的结构示意图,具体可以包括:读写命令处理单元和IO调度单元,其中,IO调度单元具体包括:查找模块、合并模块、新建模块和下发执行模块;以下将对各个单元和模块分别予以详细说明。
(一)读写命令处理单元,主要负责接收用户下发的SCSI读写命令,并将该SCSI读写命令递交到IO调度单元;具体的说就是,读写命令处理单元具体用于,接收用户下发的SCSI读写命令,检查该SCSI读写命令的合法性,即检查读写的地址、长度及其他命令参数是否合法,如果合法,则将该SCSI读写命令递交到IO调度单元;否则返回失败响应。
(二)IO调度单元,主要负责根据接收到的SCSI读写命令在读写调度队列中查找或生成相应的SCSI读写请求来存放该SCSI读写命令;当进入SCSI读写请求的下发执行过程时,在读写调度队列中选择SCSI读写请求,并将选定的SCSI读写请求下发至磁盘执行。
IO调度单元具体包括:查找模块、合并模块、新建模块和下发执行模块,其中
查找模块,根据用户下发的SCSI读写命令的特征从读写调度队列中查找能与该SCSI读写命令合并的SCSI读写请求,如果查找到,则触发合并模块;如果未查找到,则触发新建模块;
合并模块,将该SCSI读写命令放置在相应的SCSI读写请求中进行合并,同时更新合并后的SCSI读写请求的属性和读写调度队列的属性;具体的说就是,合并模块将该SCSI读写命令放置在相应的SCSI读写请求中进行合并,同时更新合并后的SCSI读写请求的属性;然后检查合并后的SCSI读写请求能否与读写调度队列中的其他SCSI读写请求进一步合并,如果是,则进一步合并两个SCSI读写请求,并删除被合并的SCSI读写请求,更新进一步合并后的SCSI读写调度请求的属性和读写调度队列的属性;否则,更新读写调度队列的属性。
新建模块,根据该SCSI读写命令的特征构造一个新的SCSI读写请求来存放该SCSI读写命令,并将新的SCSI读写请求插入到读写调度队列中,同时更新新的SCSI读写请求的属性和读写调度队列的属性;
下发执行模块,在进入SCSI读写请求的下发执行过程时,在读写调度队列中选择SCSI读写请求,并将选定的SCSI读写请求下发至磁盘执行;具体的说就是,当进入SCSI读写请求的下发执行过程时,下发执行模块根据预定调度策略选择SCSI读写请求,并将选定的SCSI读写请求经SCSI中间层插入到通用块层的特定位置;然后调用通用块层特定位置上的选定的SCSI读写请求,将其插入到相应磁盘的IO队列中;
如果若系统中不存在通用块层或类似框架,当进入SCSI读写请求的下发执行过程时,下发执行模块根据预定调度策略选择SCSI读写请求,并将选定的SCSI读写请求经SCSI中间层直接插入到相应磁盘的IO队列中。
对于以上各个单元及模块的具体实施过程,由于上述方法中已有详细说明,故此处不再赘述。
综上所述,本发明实施例提供了一种IO调度方法及调度装置,本发明实施例对SCSI读写命令的直接调度特别适合于处理端口读写的系统来使用,免除不必要的读写对象封装转化过程,能有效提高调度的效率。同时将调度功能提升至块设备层中完成,不依赖于操作系统通用块层中的通用调度过程,由于调度单元处于自行设计的块设备层中,调度所使用的算法和策略均可以根据应用的需要进行设计,便于使用个性化的合并、排序等调度策略,大大增加了IO调度设计的灵活性和扩展性。
另外,本发明实施例采用了合并SCSI请求的处理方式,可以减少对磁盘的访问次数,尤其是避免小块访问,能大大提高读写的性能。这是由于磁盘物理介质的特殊性,一次访问多个单位数据的时间要明显少于分多次访问相同长度数据的时间,而在一定范围内,存取一次大块的时间与存取一次小块的时间相仿。
本发明实施例还采用了更新读写调度属性的处理方式,保持IO调度单元的读写调度队列的有序性,从而提供了访问磁盘性能。这是由于IO调度的另一个功能是调整请求的执行顺序,能做到顺序性地下发请求,避免磁头的频繁移动,从而能提高访问磁盘的性能。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。

Claims (9)

1.一种IO调度方法,其特征在于,在块设备层中设置有IO调度单元,所述方法包括:
步骤A:块设备接收用户下发的小型计算机系统专用接口SCSI读写命令,并将所述SCSI读写命令递交到所述IO调度单元;
步骤B:所述IO调度单元根据所述SCSI读写命令在读写调度队列中查找或生成相应的SCSI读写请求来存放所述SCSI读写命令;所述步骤B具体包括:
步骤B1:所述IO调度单元接收到用户下发的所述SCSI读写命令,根据所述SCSI读写命令的特征从读写调度队列中查找能与所述SCSI读写命令合并的SCSI读写请求,如果查找到,执行步骤B2;如果未查找到,则执行步骤B3;
步骤B2:将所述SCSI读写命令放置在相应的SCSI读写请求中进行合并,同时更新合并后的SCSI读写请求的属性和读写调度队列的属性;
步骤B3:根据所述SCSI读写命令的特征构造一个新的SCSI读写请求来存放所述SCSI读写命令,并将新的SCSI读写请求插入到读写调度队列中,同时更新新的SCSI读写请求的属性和读写调度队列的属性;
步骤C:当进入SCSI读写请求的下发执行过程时,所述IO调度单元在读写调度队列中选择SCSI读写请求,并将选定的SCSI读写请求下发至磁盘执行。
2.根据权利要求1所述的方法,其特征在于,所述步骤A具体包括:
块设备接收用户下发的SCSI读写命令,检查所述SCSI读写命令的合法性,如果合法,则将所述SCSI读写命令递交到IO调度单元;否则返回失败响应。
3.根据权利要求1所述的方法,其特征在于,所述步骤B2具体包括:
步骤B21:将所述SCSI读写命令放置在相应的SCSI读写请求中进行合并,同时更新合并后的SCSI读写请求的属性;
步骤B22:检查合并后的SCSI读写请求能否与读写调度队列中的其他SCSI读写请求进一步合并,如果是,则执行步骤B23;否则,更新读写调度队列的属性;
步骤B23:进一步合并两个SCSI读写请求,并删除被合并的SCSI读写请求,更新进一步合并后的SCSI读写请求的属性和读写调度队列的属性。
4.根据权利要求1或2所述的方法,其特征在于,所述步骤C具体包括:
当进入SCSI读写请求的下发执行过程时,所述IO调度单元根据预定调度策略选择SCSI读写请求,并将选定的SCSI读写请求经SCSI中间层插入到通用块层的特定位置;然后调用通用块层特定位置上的SCSI读写请求,将其插入到相应磁盘的IO队列中;或者,
所述步骤C具体包括:
在不存在通用块层的情况下,当进入SCSI读写请求的下发执行过程时,所述IO调度单元根据预定调度策略选择SCSI读写请求,将选定的SCSI读写请求经SCSI中间层直接插入到相应磁盘的IO队列中。
5.根据权利要求4所述的方法,其特征在于,所述步骤C还包括:当所述IO调度单元收到用户发来的SCSI读写请求的下发执行命令时,进入SCSI读写请求的下发执行过程;或者,所述IO调度单元更新读写调度队列的属性的同时,检查读写调度队列中的SCSI读写请求数是否达到预定阈值,并在确定达到时触发进入SCSI读写请求的下发执行过程。
6.一种IO调度装置,其特征在于,包括:读写命令处理单元和IO调度单元,其中,
所述读写命令处理单元,用于接收用户下发的SCSI读写命令,并将所述SCSI读写命令递交到所述IO调度单元;
所述IO调度单元,用于根据接收到的SCSI读写命令在读写调度队列中查找或生成相应的SCSI读写请求来存放所述SCSI读写命令;当进入SCSI读写请求的下发执行过程时,在读写调度队列中选择SCSI读写请求,并将选定的SCSI读写请求下发至磁盘执行;所述IO调度单元具体包括:查找模块、合并模块、新建模块和下发执行模块,其中,
所述查找模块,用于根据用户下发的所述SCSI读写命令的特征从读写调度队列中查找能与所述SCSI读写命令合并的SCSI读写请求,如果查找到,则触发所述合并模块;如果未查找到,则触发所述新建模块;
所述合并模块,用于将所述SCSI读写命令放置在相应的SCSI读写请求中进行合并,同时更新合并后的SCSI读写请求的属性和读写调度队列的属性;
所述新建模块,用于根据所述SCSI读写命令的特征构造一个新的SCSI读写请求来存放所述SCSI读写命令,并将新的SCSI读写请求插入到读写调度队列中,同时更新新的SCSI读写请求的属性和读写调度队列的属性;
所述下发执行模块,用于在进入SCSI读写请求的下发执行过程时,在读写调度队列中选择SCSI读写请求,并将选定的SCSI读写请求下发至磁盘执行。
7.根据权利要求6所述的装置,其特征在于,所述读写命令处理单元具体用于,接收用户下发的SCSI读写命令,检查所述SCSI读写命令的合法性,如果合法,则将所述SCSI读写命令递交到所述IO调度单元;否则返回失败响应。
8.根据权利要求6所述的装置,其特征在于,所述合并模块具体用于,
将所述SCSI读写命令放置在相应的SCSI读写请求中进行合并,同时更新合并后的SCSI读写请求的属性;然后检查合并后的SCSI读写请求能否与读写调度队列中的其他SCSI读写请求进一步合并,如果是,则进一步合并两个SCSI读写请求,并删除被合并的SCSI读写请求,更新进一步合并后的SCSI读写调度队列的属性和读写调度队列的属性;否则,更新读写调度队列的属性。
9.根据权利要求6所述的装置,其特征在于,所述下发执行模块具体用于,当进入SCSI读写请求的下发执行过程时,根据预定调度策略选择SCSI读写请求,并将选定的SCSI读写请求经SCSI中间层插入到通用块层的特定位置;然后调用通用块层特定位置上的选定的SCSI读写请求,将其插入到相应磁盘的IO队列中;或者,
所述下发执行模块具体用于,当进入SCSI读写请求的下发执行过程时,根据预定调度策略选择SCSI读写请求,并将选定的SCSI读写请求经SCSI中间层直接插入到相应磁盘的IO队列中。
CN2009101696103A 2009-08-27 2009-08-27 一种io调度方法及调度装置 Expired - Fee Related CN101639763B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009101696103A CN101639763B (zh) 2009-08-27 2009-08-27 一种io调度方法及调度装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009101696103A CN101639763B (zh) 2009-08-27 2009-08-27 一种io调度方法及调度装置

Publications (2)

Publication Number Publication Date
CN101639763A CN101639763A (zh) 2010-02-03
CN101639763B true CN101639763B (zh) 2011-08-24

Family

ID=41614763

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009101696103A Expired - Fee Related CN101639763B (zh) 2009-08-27 2009-08-27 一种io调度方法及调度装置

Country Status (1)

Country Link
CN (1) CN101639763B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104598409B (zh) * 2013-10-31 2017-09-19 华为技术有限公司 一种处理输入输出请求的方法及设备
CN104317656B (zh) 2014-10-14 2018-01-16 深圳市锐明技术股份有限公司 一种块设备输入输出请求调度的方法及装置
CN105988725B (zh) * 2015-02-13 2018-12-11 腾讯科技(深圳)有限公司 磁盘i/o调度方法和装置
KR20170001235A (ko) * 2015-06-26 2017-01-04 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
CN106775438B (zh) * 2015-11-25 2019-08-30 华中科技大学 一种基于固态盘读写特性的i/o调度方法
CN109101331A (zh) * 2018-08-31 2018-12-28 郑州云海信息技术有限公司 一种aio请求处理的方法、系统及设备
CN111190844A (zh) * 2019-12-31 2020-05-22 杭州华澜微电子股份有限公司 一种协议转化方法及电子设备
CN111371848A (zh) * 2020-02-21 2020-07-03 苏州浪潮智能科技有限公司 一种请求处理方法、装置、设备及存储介质
CN113176876B (zh) * 2021-04-23 2023-08-11 网易(杭州)网络有限公司 数据读写的方法、装置和电子设备

Also Published As

Publication number Publication date
CN101639763A (zh) 2010-02-03

Similar Documents

Publication Publication Date Title
CN101639763B (zh) 一种io调度方法及调度装置
JP5729774B2 (ja) いくつかのコマンドを処理するためのメモリコントローラ、メモリシステム、ソリッドステートドライブ、および方法
CN102012872B (zh) 一种用于嵌入式系统的二级缓存控制方法及装置
CN102523285B (zh) 一种基于对象分布式文件系统的存储缓存方法
CN102486752B (zh) Sas扩展器中数据预取
JP5516744B2 (ja) スケジューラ、マルチコアプロセッサシステムおよびスケジューリング方法
US8667229B2 (en) Data access method of a memory device
CN101620516B (zh) 信息处理装置、其控制方法,以及程序
CN100498678C (zh) 对廉价磁盘冗余阵列进行读写操作的方法和系统
CN101188544A (zh) 分布式文件服务器基于缓冲区的文件传输方法
CN101206554A (zh) 硬盘驱动器以及命令执行方法
US20180107601A1 (en) Cache architecture and algorithms for hybrid object storage devices
CN101005486A (zh) 一种资源访问控制方法及系统
US20130111153A1 (en) Distributed storage system, apparatus and method for managing a distributed storage in consideration of latency elements
CN102148871A (zh) 存储资源调度方法和装置
CN106681660B (zh) Io调度方法及io调度装置
US20090070560A1 (en) Method and Apparatus for Accelerating the Access of a Multi-Core System to Critical Resources
CN100530069C (zh) 一种非同质存储设备的虚拟化系统及方法
CN110716691B (zh) 调度方法、装置、闪存设备和系统
CN101303685B (zh) 可提升通用序列总线储存设备的读写数据速率的方法
CN101788887A (zh) 磁盘阵列中一种基于数据库的i/o缓存流的系统及方法
CN104917788A (zh) 一种数据存储方法及装置
CN103870204B (zh) 一种cache中数据写入和读取方法、cache控制器
CN102123318A (zh) 一种iptv应用的io加速方法
CN107786670A (zh) 一种本地存储数据和云存储结合运用的系统和方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110824

Termination date: 20190827