CN102073461B - 输入输出请求调度方法、相关装置和存储阵列 - Google Patents

输入输出请求调度方法、相关装置和存储阵列 Download PDF

Info

Publication number
CN102073461B
CN102073461B CN2010105770917A CN201010577091A CN102073461B CN 102073461 B CN102073461 B CN 102073461B CN 2010105770917 A CN2010105770917 A CN 2010105770917A CN 201010577091 A CN201010577091 A CN 201010577091A CN 102073461 B CN102073461 B CN 102073461B
Authority
CN
China
Prior art keywords
input
output request
subclass
processing function
output
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.)
Active
Application number
CN2010105770917A
Other languages
English (en)
Other versions
CN102073461A (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.)
Chengdu Huawei Technology Co Ltd
Original Assignee
Huawei Symantec Technologies Co Ltd
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 Huawei Symantec Technologies Co Ltd filed Critical Huawei Symantec Technologies Co Ltd
Priority to CN2010105770917A priority Critical patent/CN102073461B/zh
Publication of CN102073461A publication Critical patent/CN102073461A/zh
Application granted granted Critical
Publication of CN102073461B publication Critical patent/CN102073461B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Abstract

本发明实施例公开了一种输入输出请求调度方法、相关装置和存储阵列,该方法包括:接收主机发送的输入输出请求,输入输出请求中携带目标地址信息;根据目标地址信息调用目标器子类中的处理函数,目标器子类是从预置的基类中继承得到的;根据目标器子类中的处理函数的输出结果调用缓存子类中的处理函数,缓存子类是从预置的基类中继承得到的;根据缓存子类中的处理函数的输出结果调用独立冗余磁盘阵列算法子类中的处理函数,独立冗余磁盘阵列算法子类是从预置的基类中继承得到的;根据独立冗余磁盘阵列算法子类中的处理函数的输出结果调用磁盘子类中的处理函数,磁盘子类是从预置的基类中继承得到的。本发明可以提高存储系统的性能。

Description

输入输出请求调度方法、相关装置和存储阵列
技术领域
本发明涉及存储技术领域,具体涉及一种输入输出(IO,Input Output)请求调度方法、输入输出请求调度装置和存储阵列。
背景技术
存储阵列的核心是保证有效地将数据写入或读出,以满足不同应用的需求。现有的存储阵列中,通常按照功能划分不同的模块,然后定义各模块的边界和接口,各模块之间通过接口进行通信。
参见图1,图1是现有技术中的存储阵列结构示意图。
其中,存储阵列中的功能模块通常包括目标器(Target)、缓存(Cache)模块、复制(Replication)模块、快照(Snapshot)模块、独立冗余磁盘阵列(RAID,Redundant Array Of Independent Disk)和磁盘等其它模块,存储阵列中还包括一些驱动接口。
现有的存储阵列在接收到主机发送的IO请求后,目标器中的线程将该IO请求加入到等候队列中排队进行处理,在目标器中的线程将该IO请求处理完成后,将处理结果传递给下层模块,比如缓存模块,该处理结果中包括偏移地址、长度等信息;缓存模块中的线程根据接收到的处理结果按照队列方式排队处理缓存IO请求,在处理完成后将缓存IO请求的处理结果传递给下层模块,逐层传递处理结果,实现将数据写入磁盘中或从磁盘读出。
发明人在研究现有技术的过程中发现,由于各模块之间存在各自独立的线程,IO请求在执行过程中需要进行多次上下文切换,导致IO请求的响应时间较长,影响存储阵列的性能。
发明内容
本发明提供一种使用一个线程运行IO请求的所有阶段,从而避免和其它线程进行上下文切换的IO请求调度方法、输入输出请求调度装置以及存储阵列。
本发明实施例提供的输入输出请求调度方法,包括:
接收主机发送的输入输出请求,所述输入输出请求中携带目标地址信息;
根据所述目标地址信息调用目标器子类中的处理函数,所述目标器子类是从预置的基类中继承得到的;
根据所述目标器子类中的处理函数的输出结果调用缓存子类中的处理函数,所述缓存子类是从预置的基类中继承得到的;
根据所述缓存子类中的处理函数的输出结果调用独立冗余磁盘阵列算法子类中的处理函数,所述独立冗余磁盘阵列算法子类是从预置的基类中继承得到的;
根据所述独立冗余磁盘阵列算法子类中的处理函数的输出结果调用磁盘子类中的处理函数,所述磁盘子类是从预置的基类中继承得到的。
本发明实施例还提供一种输入输出请求调度装置,包括:
输入输出接收单元,用于接收主机发送的输入输出请求,所述输入输出请求中携带目标地址信息;
函数调用单元,用于根据所述目标地址信息调用目标器子类中的处理函数,所述目标器子类是从预置的基类中继承得到的;
所述函数调用单元还根据所述目标器子类中的处理函数的输出结果调用缓存子类中的处理函数,所述缓存子类是从预置的基类中继承得到的;
所述函数调用单元还根据所述缓存子类中的处理函数的输出结果调用阵列子类中的处理函数,所述阵列子类是从预置的基类中继承得到的;
所述函数调用单元还根据所述阵列子类中的处理函数的输出结果调用磁盘子类中的处理函数,所述磁盘子类是从预置的基类中继承得到的。
本发明实施例还提供一种存储阵列,包括如上所述的输入输出请求调度装置。
在本发明实施例中,输入输出请求调度装置在接收到IO请求后,顺序调用从基类中继承得到的目标器子类中的处理函数、缓存子类中的处理函数、独立冗余磁盘阵列算法子类中的处理函数以及磁盘子类中的处理函数,只需要一个线程来执行全部调用过程,即一个线程可以运行完IO执行的所有阶段,无需和其它线程做上下文切换,进而减少线程之间的锁竞争,提高IO的处理速度,进而提高存储系统的性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术中的存储阵列的结构示意图;
图2是本发明实施例一提供的输入输出请求调度方法的流程图;
图3是本发明实施例提供的输入输出请求调度方法中根据目标地址信息调用目标器子类中的处理函数的实施例的流程图;
图4是本发明实施例三提供的输入输出请求调度装置的结构示意图;
图5是本发明实施例四提供的输入输出请求调度装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了一种输入输出请求调度方法、存储阵列以及输入输出请求调度装置。为了更好的理解本发明实施例的技术方案,下面结合附图对本发明提供的实施例进行详细地描述。
参见图2,图2是本发明实施例一提供的输入输出请求调度方法的流程图。
本发明实施例提供的输入输出请求调度方法可以包括:
A1、接收主机发送的输入输出请求,输入输出请求中携带目标地址信息。
具体的,输入输出请求调度装置可以接收主机发送的输入输出请求,例如错误处理IO请求,定时处理IO请求等,输入输出请求调度装置接收到的输入输出请求中携带目标地址信息。其中,目标地址信息中可以包括下层对象、偏移地址、数据长度等信息。
A2、根据目标地址信息调用目标器子类中的处理函数,目标器子类是从预置的基类中继承得到的。
具体的,输入输出请求调度装置可以根据目标地址信息来调用目标器子类中的处理函数,目标器子类是从预置的基类中继承得到的。
其中,预置的基类是对现有RAID IO对象、复制IO对象、快照IO对象、Cache IO对象以及Target IO对象等进行抽象得到的,基类中包括IO本身的特性(即数据部分)以及IO操作的特性(即处理函数)。目标器子类继承了基类中的数据部分和处理函数,同时针对目标器本身的特性又增加了其它的数据部分和处理函数。
A3、根据目标器子类中的处理函数的输出结果调用缓存子类中的处理函数,缓存子类是从预置的基类中继承得到的。
具体的,输入输出请求调度装置可以根据步骤A2中的目标器子类中的处理函数的输出结果进一步调用下一级处理函数,即调用缓存子类中的处理函数,缓存子类是从预置的基类中继承得到。其中,缓存子类中的处理函数的输出结果可以包括下层对象、偏移地址、长度等信息。缓存子类继承了基类中的数据部分和处理函数,同时针对缓存本身的特性又增加了其它的数据部分和处理函数。
A4、根据缓存子类中的处理函数的输出结果调用独立冗余磁盘阵列算法子类中的处理函数,独立冗余磁盘阵列算法子类是从预置的基类中继承得到的。
具体的,输入输出请求调度装置可以根据步骤A3中的缓存子类中的处理函数的输出结果进一步调用下一级处理函数,即调用独立冗余磁盘阵列算法子类中的处理函数,独立冗余磁盘阵列算法子类是从预置的基类中继承得到。独立冗余磁盘阵列算法子类继承了基类中的数据部分和处理函数,同时针对独立冗余磁盘阵列算法模块本身的特性又增加了其它的数据部分和处理函数。
其中,独立冗余磁盘阵列算法可以包括RAID0~RAID7等多种算法。
A5、根据独立冗余磁盘阵列算法子类中的处理函数的输出结果调用磁盘子类中的处理函数,磁盘子类是从预置的基类中继承得到的。
具体的,输入输出请求调度装置可以根据步骤A4中的独立冗余磁盘阵列算法子类中的处理函数的输出结果进一步调用下一级处理函数,即调用磁盘子类中的处理函数,磁盘子类是从预置的基类中继承得到的。磁盘子类继承了基类中的数据部分和处理函数,同时针对磁盘本身的特性增加了其它的数据部分和处理函数。
磁盘子类中的处理函数进行相应的处理,完成磁盘的读写请求,磁盘子类中的处理函数设置返回值,通知上一级模块IO请求处理完成。
在本发明实施例中,输入输出请求调度装置在接收到IO请求后,顺序调用从基类中继承得到的目标器子类中的处理函数、缓存子类中的处理函数、独立冗余磁盘阵列算法子类中的处理函数以及磁盘子类中的处理函数,只需要一个线程来执行全部调用过程,即一个线程可以运行完IO执行的所有阶段,执行过程无需和其它线程做上下文切换,进而减少线程之间的锁竞争,提高IO的处理速度,进而提高存储系统的性能。
在本发明实施例中,基类中IO本身的特性可以包括:
1)IO数据发送的对象,即IO数据在存储介质中的实际地址;
2)IO数据的偏移;
3)IO数据的长度;
4)IO之间的可能依赖关系等其它数据。
IO操作的特性可以包括:
1)启动IO的执行;
2)IO执行完毕后的回调;
3)当前的IO还存在子IO,子IO执行完毕等其它处理函数。
基类中参数可以如表1所示。
表1
  ABSTRACT-IO
  IO-DEV
  IO-OFFSET
  IO-LEN
  IO-CHILD
  *IO-BEGIN();
  *IO_END();
  *IO_CHILDEND();
其中,数据部分中的IO-DEV表示IO数据发送的对象,IO-OFFSET表示IO数据的偏移,IO-LEN表示IO数据的长度,IO-CHILD表示IO之间的可能依赖关系。
函数部分中的*IO-BEGIN()处理函数表示启动IO的执行,*IO_END()处理函数表示IO执行完毕后的回调,*IO_CHILDEND()表示当前的IO还存在子IO。
本发明实施例中输入输出请求调度装置根据接收到的目标地址信息调用从子类中继承中得到的目标器子类的处理函数,目标器子类的中的参数可以如表2所示。需要指出的是,目标器子类中的参数不限于表4中数据部分和函数部分,其中的参数(数据或函数)还可以根据实际需要进行增加。
表2
  TARGET-IO
  IO-DEV=DEV9
  IO-OFFSET=64K
  IO-LEN=16K
  IO-CHILD=NULL
  *IO-BEGIN()=TGT-BEGIN();
  *IO_END()=TGT-END();
  *IO_CHILDEND()=TGT-CHILDEND();
输入输出请求调度装置在调用目标器子类中的处理函数后,获得目标器子类中处理函数的输出结果,从而进一步调用缓存子类中的处理函数。其中,目标器子类的处理函数的输出结果中包括缓存子类中IO-DEV、IO-OFFSET、IO-LEN、IO-CHILD的具体参数值。此时,缓存子类中的参数具体可以如表3所示。需要指出的是,缓存子类中的参数不限于表4中数据部分和函数部分,其中的参数(数据或处理函数)还可以根据实际需要进行增加。
表3
  CACHE-IO
  IO-DEV=DEV3
  IO-OFFSET=128K
  IO-LEN=4K
  IO-CHILD=NULL
  *IO-BEGIN()=CACHE-BEGIN();
  *IO_END()=CACHE-END();
  *IO_CHILDEND()=CACHE-CHILDEND();
输入输出请求调度装置在调用缓存子类中的处理函数后,获得缓存子类中处理函数的输出结果,从而进一步调用独立冗余磁盘阵列算法子类中的处理函数。其中,缓存子类的处理函数的输出结果中包括独立冗余磁盘阵列算法子类中IO-DEV、IO-OFFSET、IO-LEN、IO-CHILD的具体参数值。此时,独立冗余磁盘阵列算法子类中的参数具体可以如表4所示。需要指出的是,独立冗余磁盘阵列算法子类中的参数不限于表4中数据部分和函数部分,其中的参数(数据或处理函数)还可以根据实际需要进行增加。
表4
  RAID5-IO
  IO-DEV=DEV1
  IO-OFFSET=0
  IO-LEN=4K
  IO-CHILD=NULL
  *IO-BEGIN()=RAID5-BEGIN();
  *IO_END()=RAID5-END();
  *IO_CHILDEND()=RAID5-CHILDEND();
在本发明实施例中,接收到的IO请求中可以包括错误处理IO请求,此时输入输出请求调度装置立即执行接收到的错误处理IO,即根据错误处理IO来执行上述步骤A2-A4。
参见图3,图3是本发明实施例提供的输入输出请求调度方法中根据目标地址信息调用目标器子类中的处理函数的实施例的方法流程图。
在本发明实施例中,接收到的IO请求中可以包括定时处理IO请求,此时输入输出请求调度装置将接收到的输入输出请求中定时处理输入输出请求加入到预置的定时处理队列中,输入输出请求调度装置根据目标地址信息调用目标器子类中的处理函数的步骤可以包括:
B1、判断预置的定时器是否到时。
其中,预置的定时器可以由存储系统的硬件或软件来设置定时任务。本发明实施例可以通过比较硬件时钟来判断定时器时间是否到达。
B2、定时器到时时,获取接收到的输入输出请求中的定时处理输入输出请求。
具体的,若步骤B1中判断预置的定时器到时,则说明需要处理接收到的定时处理IO请求,本发明实施例进而获取接收到的输入输出请求中的定时处理输入输出请求,例如周期性处理的IO请求。
B3、根据获取的定时处理输入输出请求中携带的目标地址信息调用目标器子类中的处理函数。
具体的,输入输出请求调度装置根据获取的定时处理IO请求中的目标地址信息调用目标器子类中的处理函数,实现对定时处理IO请求的处理。本发明实施例通过将定时处理IO请求加入到定时处理队列中,可以保证定时处理IO请求优先于其它的IO请求被处理,提高系统的稳定性和灵活性。
在本发明实施例中,在将定时处理输入输出请求加入到定时处理队列之后,还可以获取接收到的输入输出请求中除定时处理请求之外的输入输出请求的优先级,然后将将优先级低于预置级别的输入输出请求加入到低优先级等候队列中,将优先级高于预置级别的输入输出请求加入到高优先级等候队列中。其中,预置级别可以根据不同的存储系统来设置。
本发明实施例提供的根据目标地址信息调用目标器子类中的处理函数的实施例可以进一步包括:
B4、定时器没有到时,判断高优先级队列中是否存在输入输出请求。
具体的,输入输出请求调度装置在步骤B1中判断预置的定时器没有到时,则进一步判断高优先级队列中是否存在输入输出请求,即判断高优先级队列是否为空。
B5、高优先级队列中存在输入输出请求,获取高优先级队列中的第一输入输出请求。
具体的,若步骤B4中判断高优先级队列中存在IO请求,即高优先级队列不为空,则获取高优先级队列中的一个输入输出请求,本发明实施例中称为第一输入输出请求。第一输入输出请求例如可以为返回主机读写请求完成的IO请求等。
需要说明的是,上述获取高优先级队列中的一个输入输出请求并不能理解为对本发明的第一输入输出请求的限制,在本实施例中,输入输出请求调度装置也可以获取高优先级队列中的多个输入输出请求,在获取多个输入输出请求时,多个输入输出请求按照并发的形式操作。
B6、根据第一输入输出请求中携带的目标地址信息调用目标器子类中的处理函数。
具体的,输入输出请求调度装置根据第一输入输出请求中携带的目标地址信息调用目标器子类中的处理函数,然后依次调用缓存子类中的处理函数、独立冗余磁盘阵列算法子类中的处理函数,最终完成对第一输入输出请求的处理。
本发明实施例在判断高优先级队列中存在输入输出请求时,优先处理高优先级队列中的输入输出请求,本发明实施例对IO请求的处理方式更为灵活,可以适应更多的应用场景。
另外,本发明实施例提供的根据目标地址信息调用目标器子类中的处理函数的实施例可以进一步包括:
B7、高优先级队列中不存在输入输出请求,则获取低优先级队列中的第二输入输出请求。
具体的,若步骤B4中判断高优先级队列中不存在输入输出请求,即高优先级队列为空时,则输入输出请求调度装置获取低优先级队列中的一个输入输出请求,在本发明实施例中称为第二输入输出请求。第二输入输出请求例如可以为CACHE的碎片整理请求等。
B8、根据第二输入输出请求中携带的目标地址信息调用目标器子类中的处理函数。
具体的,输入输出请求调度装置根据第二输入输出请求中携带的目标地址信息调用目标器子类中的处理函数,然后依次调用缓存子类中的处理函数、独立冗余磁盘阵列算法子类中的处理函数,最终完成对第二输入输出请求的处理。
本发明实施例在判断高优先级队列中不存在输入输出请求时,进而处理低优先级队列中的输入输出请求,本发明实施例对IO请求的处理方式更为灵活,可以适应更多的应用场景。
此外,本发明实施例在根据独立冗余磁盘阵列算法子类中的处理函数的输出结果调用磁盘子类中的处理函数之后,即在预设数量的IO执行完毕之后,当接收到新的IO请求时,还可以获取高优先级队列和低优先级队列当前的队列深度,并且在低优先级队列的队列深度减去高优先级队列的队列深度的差大于预设值时,降低预置级别的等级,即实现减小较低优先级队列的队列深度,从而实现低优先级队列中的IO请求的等待时间不会过长,使得低优先级队列中的IO请求可以被公平调度到。需要说明的是,预设数量的IO可以根据实际的存储系统来灵活确定,预设数量可以为1或其他的数值。
例如,低优先级队列的队列深度为20,而高优先级队列的队列深度为5,存储系统的预设值为8(存储系统有多个中央处理器CPU,预设值设置为8);此时,低优先级队列的队列深度减去高优先级队列的队列深度等于15,大于预设值8,则可以降低预置级别的等级,从而让低优先级队列得以执行。
本发明实施例还可以使用权重法,首先将队列的优先级、队列深度、队列未得到调度时间作为输入因素,每个因素有一定的权重,优先级权重为5,队列深度权重为3,未得到调度时间权重为2。
权重法举例如下:有2个队列,优先级值分别为10、8;优先级为10的队列深度是5(队列中包含5个IO请求),优先级为8的队列深度是20;优先级为10队列未得到调度时间是0(刚执行),优先级为8队列未得到调度时间是3ms。
然后,计算优先级10的队列的权重:优先级*优先级的权重+队列深度*队列深度的权重+未得到调度时间*权重=10*5+5*3+0*2=65。
计算优先级8队列的权重:8*5+10*3+3*2=76,因此,本发明实施例就会从优先级8的队列选取IO请求执行。
需要指出的是,调整预置级别的方法不限于此,还可以使用其它的算法来调整预置级别,实现低优先级队列和高优先级队列中的IO请求的调度达到平衡即可。
以上对本发明实施例提供的输入输出请求调度方法进行了详细描述,本发明实施例还提供了和上述方法实施例对应的输入输出请求调度装置实施例和存储阵列实施例。
参见图4,图4是本发明实施例三提供的输入输出请求调度装置的结构示意图。
本发明实施例提供的输入输出请求调度装置主要包括:
输入输出接收单元110,用于接收主机发送的输入输出请求,输入输出请求中携带目标地址信息;
函数调用单元120,用于根据目标地址信息调用目标器子类中的处理函数,目标器子类是从预置的基类中继承得到的;
上述函数调用单元120还根据目标器子类中的处理函数的输出结果调用缓存子类中的处理函数,缓存子类是从预置的基类中继承得到的;
上述函数调用单元120还根据缓存子类中的处理函数的输出结果调用阵列子类中的处理函数,阵列子类是从预置的基类中继承得到的;
上述函数调用单元120还根据阵列子类中的处理函数的输出结果调用磁盘子类中的处理函数,磁盘子类是从预置的基类中继承得到的。
在本发明提供的输入输出请求调度装置可以使用在前述对应的输入输出请求调度方法实施例中,输入输出请求调度装置在接收到IO请求后,顺序调用从基类中继承得到的目标器子类中的处理函数、缓存子类中的处理函数、独立冗余磁盘阵列算法子类中的处理函数以及磁盘子类中的处理函数,只需要一个线程来执行全部调用过程,即一个线程可以运行完IO执行的所有阶段,执行过程中无需和其它线程做上下文切换,进而减少线程之间的锁竞争,提高IO的处理速度,进而提高存储系统的性能。
参见图5,图5是本发明实施例四提供的输入输出请求调度装置的结构示意图。
本发明实施例五提供的输入输出请求调度装置主要包括:输入输出接收单元210和函数调用单元220以及定时请求处理单元230。其中,函数调用单元包括上述第三实施例的输入输出请求调度装置中的函数调用单元的功能,在此不再重复描述。函数调用单元还可以包括:定时判断模块221,用于判断预置的定时器是否到时;
第一获取模块222,用于在定时判断单元221判断定时器到时,则获取接收到的输入输出请求中的定时处理输入输出请求;
函数调用模块223,用于根据获取的定时处理输入输出请求中携带的目标地址信息调用目标器子类中的处理函数。
本发明实施例提供的输入输出请求调度装置通过将定时处理IO请求加入到定时处理队列中,可以保证定时处理IO请求优先于其它的IO请求被处理,提高系统的稳定性和灵活性。
本发明实施例提供的输入输出请求调度装置还可以包括:
优先级获取单元,用于在定时请求处理单元将定时处理输入输出请求加入到定时处理队列之后,获取接收到的输入输出请求中除定时处理请求之外的输入输出请求的优先级;队列调度单元,用于将优先级低于预置级别的输入输出请求加入到低优先级等候队列中,将优先级高于预置级别的输入输出请求加入到高优先级等候队列中。
进而,输入输出请求调度装置中的函数调用单元还包括:
队列判断模块,用于在定时判断单元判断定时器没有到时,则判断高优先级队列中是否存在输入输出请求;
第二获取模块,用于在队列判断单元判断高优先级队列中存在输入输出请求,则获取高优先级队列中的第一输入输出请求;
函数调用模块还根据第一输入输出请求中携带的目标地址信息调用目标器子类中的处理函数。
进一步的,输入输出请求调度装置中的函数调用单元还可以包括:
第三获取模块,用于在队列判断模块判断高优先级队列中不存在输入输出请求,则获取低优先级队列中的第二输入输出请求;
函数调用模块还用于根据第二输入输出请求中携带的目标地址信息调用目标器子类中的处理函数。
另外,本发明实施例中的输入输出请求调度装置还可以包括;
队列深度获取单元,用于在函数调用单元根据独立冗余磁盘阵列算法子类中的处理函数的输出结果调用磁盘子类中的处理函数之后,获取高优先级队列和优先级队列当前的队列深度;
预置级别调整单元,用于在低优先级队列的队列深度减去高优先级队列的队列深度的差大于预设值时,降低预置级别的等级。
本发明实施例提供的输入输出请求调度装置在判断高优先级队列中存在输入输出请求时,优先处理高优先级队列中的输入输出请求,本发明实施例对IO请求的处理方式更为灵活,可以适应更多的应用场景。
另外,本发明实施例还提供一种存储阵列,存储阵列中包括输入输出请求调度装置和存储器,存储器可以为磁盘,闪存或动态随机存储器(DRAM,Dynamic Random Access Memory)等存储介质,输入输出请求调度装置包括:输入输出接收单元,用于接收主机发送的输入输出请求,输入输出请求中携带目标地址信息;
函数调用单元,用于根据目标地址信息调用目标器子类中的处理函数,目标器子类是从预置的基类中继承得到的;
函数调用单元还根据目标器子类中的处理函数的输出结果调用缓存子类中的处理函数,缓存子类是从预置的基类中继承得到的;
函数调用单元还根据缓存子类中的处理函数的输出结果调用阵列子类中的处理函数,阵列子类是从预置的基类中继承得到的;
函数调用单元还根据阵列子类中的处理函数的输出结果调用磁盘子类中的处理函数,磁盘子类是从预置的基类中继承得到的。
本发明实施例提供的存储阵列中的输入输出请求调度装置可以执行前述实施例一提供的输入输出请求调度方法,具体执行过程不再详细描述。存储阵列中输入输出请求调度装置的具体结构参见上述输入输出请求调度装置的实施例,在此不再重复描述。
需要说明的是,上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上对本发明实施例提供的输入输出请求调度方法、相关装置以及存储阵列进行了详细介绍,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种输入输出请求调度方法,其特征在于,包括:
接收主机发送的输入输出请求,所述输入输出请求中携带目标地址信息;
根据所述目标地址信息调用目标器子类中的处理函数,所述目标器子类是从预置的基类中继承得到的,所述预置的基类是对现有独立冗余磁盘阵列RAID输入输出IO对象、复制IO对象、快照IO对象、缓存Cache IO对象以及目标器Target IO对象进行抽象得到的,基类中包括IO本身的特性以及IO操作的特性;
根据所述目标器子类中的处理函数的输出结果调用缓存子类中的处理函数,所述缓存子类是从预置的基类中继承得到的;
根据所述缓存子类中的处理函数的输出结果调用独立冗余磁盘阵列算法子类中的处理函数,所述独立冗余磁盘阵列算法子类是从预置的基类中继承得到的;
根据所述独立冗余磁盘阵列算法子类中的处理函数的输出结果调用磁盘子类中的处理函数,所述磁盘子类是从预置的基类中继承得到的。
2.根据权利要求1所述的方法,其特征在于,在所述接收主机发送的输入输出请求之后,还包括:
将接收到的输入输出请求中的定时处理输入输出请求加入到预置的定时处理队列中;
所述根据目标地址信息调用目标器子类中的处理函数,包括:
判断预置的定时器是否到时;
若定时器到时,则获取接收到的输入输出请求中的定时处理输入输出请求;
根据所述获取的定时处理输入输出请求中携带的目标地址信息调用目标器子类中的处理函数。
3.根据权利要求2所述的方法,其特征在于,在将定时处理输入输出请求加入到定时处理队列之后,还包括:
获取接收到的输入输出请求中除定时处理请求之外的输入输出请求的优先级;
将优先级低于预置级别的输入输出请求加入到低优先级等候队列中,将优先级高于预置级别的输入输出请求加入到高优先级等候队列中;
所述方法还包括:
若定时器没有到时,则判断高优先级等候队列中是否存在输入输出请求;
若高优先级等候队列中存在输入输出请求,则获取高优先级等候队列中的第一输入输出请求;
根据所述第一输入输出请求中携带的目标地址信息调用目标器子类中的处理函数。
4.根据权利要求3所述的方法,其特征在于,还包括:
若高优先级等候队列中不存在输入输出请求,则获取低优先级等候队列中的第二输入输出请求;
根据所述第二输入输出请求中携带的目标地址信息调用目标器子类中的处理函数。
5.根据权利要求3或4所述的方法,其特征在于,在根据独立冗余磁盘阵列算法子类中的处理函数的输出结果调用磁盘子类中的处理函数之后,还包括:
获取所述高优先级等候队列和所述低优先级等候队列当前的队列深度;
在所述低优先级等候队列的队列深度减去所述高优先级等候队列的队列深度的差大于预设值时,降低所述预置级别的等级。
6.一种输入输出请求调度装置,其特征在于,包括:
输入输出接收单元,用于接收主机发送的输入输出请求,所述输入输出请求中携带目标地址信息;
函数调用单元,用于根据所述目标地址信息调用目标器子类中的处理函数,所述目标器子类是从预置的基类中继承得到的,所述预置的基类是对现有独立冗余磁盘阵列RAID输入输出IO对象、复制IO对象、快照IO对象、缓存Cache IO对象以及目标器Target IO对象进行抽象得到的,基类中包括IO本身的特性以及IO操作的特性;
所述函数调用单元还根据所述目标器子类中的处理函数的输出结果调用缓存子类中的处理函数,所述缓存子类是从预置的基类中继承得到的;
所述函数调用单元还根据所述缓存子类中的处理函数的输出结果调用独立冗余磁盘阵列算法子类中的处理函数,所述独立冗余磁盘阵列算法子类是从预置的基类中继承得到的;
所述函数调用单元还根据所述独立冗余磁盘阵列算法子类中的处理函数的输出结果调用磁盘子类中的处理函数,所述磁盘子类是从预置的基类中继承得到的。
7.根据权利要求6所述的输入输出请求调度装置,其特征在于,还包括:
定时请求处理单元,用于在接收到主机发送的输入输出请求之后,将接收到的输入输出请求中的定时处理输入输出请求加入到预置的定时处理队列中;
所述函数调用单元包括:
定时判断模块,用于判断预置的定时器是否到时;
第一获取模块,用于在所述定时判断单元判断定时器到时,则获取接收到的输入输出请求中的定时处理输入输出请求;
函数调用模块,用于根据所述获取的定时处理输入输出请求中携带的目标地址信息调用目标器子类中的处理函数。
8.根据权利要求7所述的输入输出请求调度装置,其特征在于,还包括:
优先级获取单元,用于在所述定时请求处理单元将定时处理输入输出请求加入到定时处理队列之后,获取接收到的输入输出请求中除定时处理请求之外的输入输出请求的优先级;
队列调度单元,用于将优先级低于预置级别的输入输出请求加入到低优先级等候队列中,将优先级高于预置级别的输入输出请求加入到高优先级等候队列中;
所述函数调用单元还包括:
队列判断模块,用于在所述定时判断单元判断定时器没有到时,则判断高优先级等候队列中是否存在输入输出请求;
第二获取模块,用于在所述队列判断单元判断高优先级等候队列中存在输入输出请求,则获取高优先级等候队列中的第一输入输出请求;
所述函数调用模块还根据所述第一输入输出请求中携带的目标地址信息调用目标器子类中的处理函数。
9.根据权利要求8所述的输入输出请求调度装置,其特征在于,所述函数调用单元还包括:
第三获取模块,用于在所述队列判断模块判断高优先级等候队列中不存在输入输出请求,则获取低优先级等候队列中的第二输入输出请求;
所述函数调用模块还用于根据所述第二输入输出请求中携带的目标地址信息调用目标器子类中的处理函数。
10.根据权利要求8或9所述的输入输出请求调度装置,其特征在于,还包括;
队列深度获取单元,用于在所述函数调用单元根据独立冗余磁盘阵列算法子类中的处理函数的输出结果调用磁盘子类中的处理函数之后,获取所述高优先级等候队列和所述低优先级等候队列当前的队列深度;
预置级别调整单元,用于在所述低优先级等候队列的队列深度减去所述高优先级等候队列的队列深度的差大于预设值时,减小所述预置级别的大小。
CN2010105770917A 2010-12-07 2010-12-07 输入输出请求调度方法、相关装置和存储阵列 Active CN102073461B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2010105770917A CN102073461B (zh) 2010-12-07 2010-12-07 输入输出请求调度方法、相关装置和存储阵列

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2010105770917A CN102073461B (zh) 2010-12-07 2010-12-07 输入输出请求调度方法、相关装置和存储阵列

Publications (2)

Publication Number Publication Date
CN102073461A CN102073461A (zh) 2011-05-25
CN102073461B true CN102073461B (zh) 2012-07-04

Family

ID=44032014

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010105770917A Active CN102073461B (zh) 2010-12-07 2010-12-07 输入输出请求调度方法、相关装置和存储阵列

Country Status (1)

Country Link
CN (1) CN102073461B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106775493A (zh) * 2017-01-05 2017-05-31 华为技术有限公司 一种存储控制器及io请求处理方法

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103049213B (zh) * 2011-10-17 2016-01-20 中国移动通信集团公司 一种磁盘调度方法及装置
CN103118123B (zh) * 2013-02-22 2016-06-08 上海上讯信息技术股份有限公司 基于分布式服务器的数据回写方法及系统
CN104754647B (zh) * 2013-12-29 2018-06-22 中国移动通信集团公司 一种负载迁移的方法和设备
CN105867844B (zh) * 2016-03-28 2019-01-25 北京联想核芯科技有限公司 一种命令控制方法及存储设备
CN107704194B (zh) * 2016-08-08 2020-07-31 北京忆恒创源科技有限公司 无锁io处理方法及其装置
CN106598495A (zh) * 2016-12-07 2017-04-26 深圳市深信服电子科技有限公司 一种混合存储服务质量的控制方法及控制装置
WO2018119899A1 (zh) 2016-12-29 2018-07-05 华为技术有限公司 一种存储控制器及io请求处理方法
KR20180114972A (ko) * 2017-04-11 2018-10-22 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
CN109040221A (zh) * 2018-07-26 2018-12-18 郑州云海信息技术有限公司 一种数据传输方法、系统、设备及存储阵列和存储介质
CN112272218B (zh) * 2020-10-16 2023-01-06 苏州浪潮智能科技有限公司 云平台实例资源操作方法、装置、计算机设备及存储介质
CN113342429B (zh) * 2021-06-09 2023-08-08 网易(杭州)网络有限公司 智能合约数据处理方法、装置、计算机设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1652091A (zh) * 2004-02-07 2005-08-10 华为技术有限公司 一种在数据存储系统中预取数据的方法
CN101424941A (zh) * 2007-10-31 2009-05-06 北京北方微电子基地设备工艺研究中心有限责任公司 一种控制实现方法和系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7613904B2 (en) * 2005-02-04 2009-11-03 Mips Technologies, Inc. Interfacing external thread prioritizing policy enforcing logic with customer modifiable register to processor internal scheduler

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1652091A (zh) * 2004-02-07 2005-08-10 华为技术有限公司 一种在数据存储系统中预取数据的方法
CN101424941A (zh) * 2007-10-31 2009-05-06 北京北方微电子基地设备工艺研究中心有限责任公司 一种控制实现方法和系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106775493A (zh) * 2017-01-05 2017-05-31 华为技术有限公司 一种存储控制器及io请求处理方法
CN106775493B (zh) * 2017-01-05 2019-01-25 华为技术有限公司 一种存储控制器及io请求处理方法

Also Published As

Publication number Publication date
CN102073461A (zh) 2011-05-25

Similar Documents

Publication Publication Date Title
CN102073461B (zh) 输入输出请求调度方法、相关装置和存储阵列
US11640242B2 (en) Namespace management in non-volatile memory devices
JP5657641B2 (ja) データストレージデバイスのコマンド及び割り込みのグループ化
US9135190B1 (en) Multi-profile memory controller for computing devices
US11604594B2 (en) Apparatus, system and method for offloading data transfer operations between source and destination storage devices to a hardware accelerator
US20100262979A1 (en) Circular command queues for communication between a host and a data storage device
US7490185B2 (en) Data processing system, access control method, and access control device
CN101504594B (zh) 一种数据存储方法和装置
CN105408875B (zh) 在存储器接口上的分布式过程执行和文件系统
US11740812B2 (en) Data storage device idle time processing
CN104102693A (zh) 对象处理方法和装置
CN111198715A (zh) 一种面向乱序高性能核的内存控制器命令调度方法及装置
CN105373484A (zh) 一种网络通信芯片中内存分配、存储和管理的方法
US10552050B1 (en) Multi-dimensional computer storage system
US10664396B2 (en) Systems, methods and apparatus for fabric delta merge operations to enhance NVMeoF stream writes
CN109491785A (zh) 内存访问调度方法、装置及设备
CN111651124B (zh) Ssd映射表多核分区并行重建方法、装置、设备及介质
US11016704B2 (en) Semiconductor system including various memory devices capable of processing data
US8667188B2 (en) Communication between a computer and a data storage device
EP4216049A1 (en) Low latency multiple storage device system
US20220374149A1 (en) Low latency multiple storage device system
CN105159836B (zh) 一种信息处理方法及电子设备
CN1853177A (zh) 具有多个互相通信的数字信号处理器的集成电路
CN117389483B (zh) 一种内存管理方法、装置、电子设备及可读存储介质
US10459842B1 (en) Data storage system with configurable prefetch buffers

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
C56 Change in the name or address of the patentee

Owner name: HUAWEI DIGITAL TECHNOLOGY (CHENGDU) CO., LTD.

Free format text: FORMER NAME: CHENGDU HUAWEI SYMANTEC TECHNOLOGIES CO., LTD.

CP01 Change in the name or title of a patent holder

Address after: 611731 Chengdu high tech Zone, Sichuan, West Park, Qingshui River

Patentee after: HUAWEI DIGITAL TECHNOLOGIES (CHENG DU) Co.,Ltd.

Address before: 611731 Chengdu high tech Zone, Sichuan, West Park, Qingshui River

Patentee before: CHENGDU HUAWEI SYMANTEC TECHNOLOGIES Co.,Ltd.

TR01 Transfer of patent right

Effective date of registration: 20220831

Address after: No. 1899 Xiyuan Avenue, high tech Zone (West District), Chengdu, Sichuan 610041

Patentee after: Chengdu Huawei Technologies Co.,Ltd.

Address before: 611731 Qingshui River District, Chengdu hi tech Zone, Sichuan, China

Patentee before: HUAWEI DIGITAL TECHNOLOGIES (CHENG DU) Co.,Ltd.

TR01 Transfer of patent right