CN112506431B - 基于磁盘设备属性的i/o指令调度方法及装置 - Google Patents
基于磁盘设备属性的i/o指令调度方法及装置 Download PDFInfo
- Publication number
- CN112506431B CN112506431B CN202011399202.XA CN202011399202A CN112506431B CN 112506431 B CN112506431 B CN 112506431B CN 202011399202 A CN202011399202 A CN 202011399202A CN 112506431 B CN112506431 B CN 112506431B
- Authority
- CN
- China
- Prior art keywords
- instruction
- disk
- disk device
- current
- target
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本发明提供了一种基于磁盘设备属性的I/O指令调度方法和装置,用于在磁盘阵列系统中实现I/O指令调度。该方法包括,从内存中读取I/O指令,并根据所述I/O指令的目标磁盘设备ID,将所述I/O指令加入所述目标磁盘对应的命令队列中;通过对多个磁盘设备的轮询,选择需要访问的第一磁盘设备;通过对多个物理通道的轮询,选择空闲状态的第一物理通道;从所述第一磁盘设备所对应的命令队列中获取I/O指令,将所获取的I/O指令派发到所述第一物理通道中。
Description
技术领域
本发明属于磁盘阵列读写领域,特别涉及一种基于磁盘设备属性的I/O指令调度方法及装置。
背景技术
存储系统是满足大量数据应用读写需求的基础设施,其输入/输出(input/output,I/O)性能直接决定数据读写效率,是影响数据应用整体性能的关键因素。在一个服务器存储阵列系统中,可能挂载数以千计的不同类型的硬盘,如SAS(Serial AttachedSCSI)固态盘、SAS机械盘、SATA(Serial AT Attachment)机械盘等。为管理这些类型的硬盘,服务器主机与硬盘之间通常包含一个称为HBA(Host Bus Adapter)/RAID(RedundantArray of Independent Disks)卡的软硬件系统,如果硬盘较多,可能还包含扩展板卡(Expander),其主体架构示意图如图1所示。为了提高数据通信带宽,HBA卡一般包含多个高速物理通道接口(PHY),每个接口可以访问多个硬盘,不同的硬盘通过时分复用的方式占用通道接口进行数据传输;也可以通过不同的接口访问同一个硬盘。
在该系统中,主机应用层软件会下发大量读写磁盘的I/O指令,这些指令在下发到磁盘之前保存在一个I/O队列中,由HBA/RAID卡完成I/O指令的管理,根据I/O的目标盘地址和存储系统的网络拓扑架构选择命令的物理通道,完成命令数据的发送和接收;I/O队列中的命令支持乱序派发、乱序返回。在存储系统中,每一个环节都可能影响I/O性能,包括软件下发I/O的大小、物理通道的带宽、HBA对I/O的管理和调度、Expander的交换效率、磁盘本身的访问速率等。从图1的架构可知,一般情况下HBA/RAID卡的物理通道接口(PHY)要远远少于硬盘的个数。所以如何提高HBA/RAID物理接口的有效利用率,是提升整个系统I/O性能的关键。
应用层软件下发的I/O指令统一存入内存中某个固定的区域,驱动层从该区域中按顺序读取指令,根据命令类型构造与底层接口和协议对应的命令控制字,作为底层I/O指令执行的上下文信息。同时将等待执行的命令推送至一个FIFO中。然后命令执行状态机对所连接的通道进行轮询,发现存在空闲通道时,从FIFO中读取一条指令在该空闲通道进行下发。示意图如图2所示。传统I/O指令派发详细的流程描述如下:
1.主机应用层软件在内存(DDR)中开辟连续存储空间用于存储I/O指令,并将I/O指令下发到位于内存(DDR)中的I/O队列FIFO。
2.当Pending命令队列FIFO有空闲槽位时,从内存(DDR)中读取一条I/O指令加入Pending命令队列FIFO中。
3.命令执行状态机对通道进行轮询,判断通道的忙闲状态,如果轮询到当前通道为空闲状态,则从待执行命令FIFO中读取一条指令,将其派发到当前通道进行发送。当指令派发成功后,释放Pending命令队列FIFO中对应的槽位,等待驱动下发新的指令。
命令执行状态机不断重复步骤2-3,依次执行应用层软件下发的指令。
由于上述技术方案直接将所有的I/O指令都存入一个FIFO中,基于I/O指令的下发顺序依次派发到物理通道。主要存在如下缺点:
1.存在如下情况时,可能会出现所有的物理链路均在等待目标磁盘的情况,从而造成物理链路利用率低下的后果:a)连续多条I/O指令访问同一目标磁盘,这是一种较常发生的情况。然而实际上一个磁盘同一时刻只能建立一条物理通道,此时命令执行状态机可能从多个物理通道尝试建链,不成功的无效建链操作降低了链路的利用率。b)短时间内存在多条I/O指令访问同一目标磁盘,如果某些I/O指令的访问数据量大,或目标磁盘响应速度较慢,导致I/O指令响应时间长,也会存在建链不成功而损失链路利用率的情况。
2.可能导致部分磁盘长时间无法得到服务的情况,即磁盘的访问负载不均衡。当某个磁盘的I/O指令在I/O队列的末尾,而I/O队列前有很多其他磁盘的待处理的指令,则需要等待前面的指令执行完毕之后才能执行,而磁盘的响应速度存在固有差异,且响应速度比系统速度慢得多,如果磁盘负载不均衡,响应慢的磁盘可能长期占用链路,不利于物理链路的高效利用。
发明内容
本发明的目的在于一种基于硬盘的I/O调度管理方法和装置,用于提升HBA/RAID物理接口的有效利用率,从而提升系统I/O性能。
本发明在第一方面提供了一种基于磁盘设备属性的I/O指令调度方法,包括:
从内存中读取I/O指令,并根据所述I/O指令的目标磁盘设备ID,将所述I/O指令加入所述目标磁盘对应的命令队列中;
通过对多个磁盘设备的轮询,选择需要访问的第一磁盘设备;
通过对多个物理通道的轮询,选择空闲状态的第一物理通道;
从所述第一磁盘设备所对应的命令队列中获取I/O指令,将所获取的I/O指令派发到所述第一物理通道中。
优选地,在所述根据所述I/O指令的目标磁盘设备ID,将所述I/O指令加入所述目标磁盘对应的命令队列中的步骤之前,该方法还包括:
将命令队列拆分成多个I/O下发子队列,其中每个I/O下发子队列与所述磁盘阵列系统的一个磁盘设备相对应;
所述将I/O指令加入所述目标磁盘对应的命令队列中,进一步包括:
将所述I/O指令加入所述目标磁盘对应的I/O下发子队列中。
优选地,所述从内存中读取I/O指令,根据所述I/O指令的目标磁盘设备ID,将所述I/O指令加入所述目标磁盘对应的命令队列中,进一步包括:
判断所述命令队列是否有空闲槽位,如果有空闲槽位,则从内存中读取I/O指令,将所述I/O指令加入所述目标磁盘对应的命令队列中。
优选地,所述通过对多个磁盘设备的轮询,选择需要访问的第一磁盘设备,进一步包括:
对当前具有待发送I/O指令的磁盘设备进行轮询,选择第一磁盘设备;
其中,当存在一条I/O指令对应一个目标磁盘设备ID时,该目标磁盘设备ID所对应的磁盘设备即为当前具有待发送I/O指令的磁盘设备。
优选地,在所述将所获取的I/O指令派发到所述第一物理通道中之后,该方法还包括:
如果当前I/O指令派发成功,则对来自内存中的下一I/O指令进行相同的调度处理,直到指令全部执行完成。
在当前I/O指令派发成功前,暂停在其他物理通道中派发当前I/O指令所对应的磁盘的其他I/O指令。
本发明在第二方面提供了一种基于磁盘设备属性的I/O指令调度装置,包括:
驱动层,被配置为从内存中获取I/O指令,并根据所述I/O指令的目标磁盘设备ID,将所述I/O指令加入目标磁盘对应的命令队列中;以及
命令执行状态机,被配置为:
通过对多个磁盘设备的轮询,选择需要访问的第一磁盘设备;
通过对多个物理通道的轮询,选择空闲状态的第一物理通道;
从所述第一磁盘设备所对应的命令队列中获取I/O指令,将所获取的I/O指令派发到所述第一物理通道中。
优选地,所述命令队列包括多个I/O下发子队列,其中每个I/O下发子队列与所述磁盘阵列系统的一个磁盘设备相对应;
所述驱动层进一步被配置为,将所述I/O指令加入所述目标磁盘对应的I/O下发子队列中。
优选地,所述驱动层进一步被配置为:
判断所述命令队列是否有空闲槽位,如果有空闲槽位,则从内存中读取I/O指令,将所述I/O指令加入所述目标磁盘对应的命令队列中。
优选地,所述命令执行状态机进一步被配置为:
对当前具有待发送I/O指令的磁盘设备进行轮询,选择第一磁盘设备;
其中,当存在一条I/O指令对应一个目标磁盘设备ID时,该目标磁盘设备ID所对应的磁盘设备即为当前具有待发送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调度方法流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地说明,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
正如所知,磁盘的响应速度远低于通信链路的传输速度。在磁盘阵列系统中,参见上文所述,磁盘是通过分时复用的方式来使用通信链路进行数据传输的。为了让通信链路发挥最高的效率,不能让某个磁盘设备长期占用链路。
发明人在长期研究和探索中发现,在磁盘准备响应数据的时候是无需占用通信链路的,这时候就可以让磁盘设备释放通信链路为其他磁盘设备使用。所以,在磁盘阵列系统的理想情况下,各个磁盘的访问负载是相对均衡的,这样才能使通信链路的使用率达到较高的水平。
与现有技术单纯地基于I/O指令先后顺序的调度机制不同,本发明提供了一种基于磁盘设备属性的I/O指令调度方法。参见图3,该方法在现有磁盘架构的基础上,在Pending命令队列中设置按磁盘设备(Device)区分的I/O队列,同时设置设备的轮询机制,优先轮询设备,然后轮询通道。克服由于磁盘负载不均衡而损失物理链路利用率的问题。图4示出了根据本发明的优选实施例的基于磁盘设备属性的I/O调度方法流程图。
在一个优选的实施例中,将上述方法的详细步骤描述如下:
步骤101.主机应用层软件在内存中建立I/O指令存储空间。
具体地,所述主机应用层软件在内存(DDR)中开辟第一连续存储空间,作为用于存储I/O指令的I/O队列。优选地,第一存储空间可以存储4~8K条指令,具体根据应用场景而定。
此外,所述主机应用层软件还可同时开辟第二连续存储空间,用于存储I/O指令完成状态。第一和第二存储空间均以FIFO的方式进行管理。
步骤102.主机应用层软件将I/O指令下发到内存的I/O队列。
在第一存储空间已准备就绪之后,主机应用层软件将I/O指令下发到位于内存(DDR)中的第一存储空间,即I/O队列FIFO。
步骤103.驱动层从内存的I/O队列中读取一条I/O指令,根据当前I/O指令的目标磁盘设备ID,将其加入目标磁盘对应的命令队列FIFO中。
可选地,在所述驱动层从内存的I/O队列中读取一条I/O指令之前,方法还包括,所述驱动层判断SRAM中的Pending命令队列FIFO是否有空闲槽位,如果有空闲槽位,则从内存(DDR)中读取一条I/O指令。
显然,如果没有空闲槽位,则Pending命令队列FIFO存储空间不足,无法缓存来自内存中的更多的I/O指令。必须等待存在空闲槽位时才能从内存(DDR)中读取新的I/O指令。
其中,每条I/O指令均对应一个目标磁盘设备ID即ICT。所述命令队列FIFO包括多个独立的下发子队列,用于接收所述驱动层下发的I/O指令,根据I/O指令对应的目标磁盘设备ID,将I/O指令缓存至对应于该目标磁盘设备ID的下发子队列中。由于本发明按照磁盘设备对I/O队列进行分类处理,因而根据不同的目标磁盘设备ID,将I/O指令加入当前目标磁盘设备ID所对应的Pending命令队列FIFO即下发子队列中,同时生成该I/O指令相应的上下文信息。
其中,在Pending命令队列FIFO中对不同的I/O指令,采用IPTT(Initiator porttransfer tag)号进行唯一的标识。
步骤104.通过对磁盘设备的轮询,选择需要访问的第一磁盘设备。
当一条I/O指令对应一个目标磁盘设备ID时,该目标磁盘设备ID所对应的磁盘设备当前已具有至少一个待发送I/O指令。基于轮询算法,对当前具有待发送I/O指令的磁盘设备进行轮询,采用分时复用的机制,选择下一次从中传输指令的目标磁盘设备。
优选地,轮询策略还可包括,针对每个磁盘维护一个状态位图,用于指示每个磁盘的忙闲状态。如果当前磁盘正处于连接状态,则在状态位图中指示为忙状态,不执行派发动作,自动轮询下一个磁盘。
步骤105.通过对物理通道的轮询,选择空闲状态的第一物理通道。
在该步骤中,命令执行状态机对宽端口场景下的多个物理通道进行轮询,判断通道的忙闲状态,如果轮询到当前通道为空闲状态,则将当前通道确定为待传输的第一物理通道。
步骤106.从第一磁盘设备所对应的命令队列FIFO中获取一条I/O指令,将其派发到所述第一物理通道中。
即,通过前述两个轮询过程,分别确定了需要访问的磁盘设备和需要执行传输的物理通道,进而从当前轮询到的目标磁盘设备队列中获取新的I/O指令,将其派发到所选定的当前通道,完成当前I/O指令的发送。
步骤107.如果I/O指令派发成功,则继续等待驱动层下发新的指令。
由于同一磁盘在任何时刻最多只有一条I/O指令在物理通道中被调度和被执行,因此在当前I/O指令派发成功前,暂停在其他物理通道中派发当前I/O指令所对应的磁盘的其他I/O指令。
可选地,在I/O指令派发成功时,释放I/O队列中当前I/O指令对应的槽位。可选地,当物理通道收到指令返回数据时,根据返回数据的类型,确定是否将该I/O指令重新加入命令队列FIFO中。
其中,等待驱动层的指令,即回到步骤103的过程,对驱动层下发的下一指令进行相同的调度处理,直到驱动层下发的指令全部执行完成,进入步骤108。
步骤108.重复步骤102~107的过程,依次执行主机应用层软件下发的指令,直到指令全部执行完成。
需要说明的是,图3所示的用于I/O指令调度的总体硬件架构仅用于说明而非限定本发明的技术方案。本领域技术人员应当理解,在本发明的基础上可以根据实际需要对驱动软件、命令队列和命令执行状态机的结构关系以及指令FIFO的数量、磁盘设备的数量、物理通道的数量等做出任意的调整,而不应将本发明限于上述示例的具体结构和参数。
可见,本发明基于以上具体实施例的基于磁盘设备属性的I/O指令调度方法,通过双轮询机制避免出现物理通道长期被某个特定磁盘设备占用,也避免了多个通道同时向同一磁盘派发不同的I/O指令而导致大量I/O指令派发失败,使得磁盘阵列中I/O大规模并发时,保证所挂载的磁盘访问负载均衡性,提高了物理通道的利用率,进而提升整个系统的I/O性能。
根据本发明的另一方面,相应地,提供了一种基于磁盘设备属性的I/O指令调度装置。所述装置包括:
主机应用层,用于在内存中建立I/O指令存储空间,并将I/O指令下发到内存的I/O队列。
驱动层,用于从内存I/O队列中获取I/O指令,将其加入目标磁盘对应的命令队列FIFO中。
命令队列FIFO,包括多个独立的下发子队列,用于接收所述驱动层下发的I/O指令,根据I/O指令对应的目标磁盘设备ID,将I/O指令缓存至对应于该目标磁盘设备ID的下发子队列中。
命令执行状态机,用于对磁盘设备进行轮询,选择需要访问的第一磁盘设备;对物理通道进行轮询,选择空闲状态的第一物理通道。
具体地,所述主机应用层在内存(DDR)中开辟第一连续存储空间,作为用于存储I/O指令的I/O队列。优选地,第一存储空间可以存储4~8K条指令,具体根据应用场景而定。
此外,所述主机应用层进一步开辟第二连续存储空间,用于存储I/O指令完成状态。
第一和第二存储空间均以FIFO的方式进行管理。
其中,所述主机应用层在第一存储空间已准备就绪之后,主机应用层软件将I/O指令下发到位于内存(DDR)中的第一存储空间,即I/O队列FIFO。
所述驱动层进一步配置为,从内存的I/O队列中读取一条I/O指令,根据当前I/O指令的目标磁盘设备ID,将其加入目标磁盘对应的命令队列FIFO中。
可选地,所述驱动层进一步配置为,在从内存的I/O队列中读取一条I/O指令之前,判断SRAM中的Pending命令队列FIFO是否有空闲槽位,如果有空闲槽位,则从内存(DDR)中读取I/O指令。显然,如果没有空闲槽位,则Pending命令队列FIFO存储空间不足,无法缓存来自内存中的更多的I/O指令。必须等待存在空闲槽位时才能从内存(DDR)中读取新的I/O指令。
其中,每条I/O指令均对应一个目标磁盘设备ID即ICT。由于本发明按照磁盘设备对I/O队列进行分类处理,因而根据不同的目标磁盘设备ID,将I/O指令加入当前目标磁盘设备ID所对应的Pending命令队列FIFO中,同时生成该I/O指令相应的上下文信息。
其中,在Pending命令队列FIFO中对不同的I/O指令,采用IPTT(Initiator porttransfer tag)号进行唯一的标识。
当一条I/O指令对应一个目标磁盘设备ID时,该目标磁盘设备ID所对应的磁盘设备当前已具有至少一个待发送I/O指令。因此所述命令执行状态机基于轮询算法,对当前具有待发送I/O指令的磁盘设备进行轮询,采用分时复用的机制,选择下一次从中传输指令的目标磁盘设备。
优选地,轮询策略还可包括,针对每个磁盘维护一个状态位图,用于指示每个磁盘的忙闲状态。如果当前磁盘正处于连接状态,则在状态位图中指示为忙状态,不执行派发动作,自动轮询下一个磁盘。
而对于对宽端口场景下的多个物理通道,所述命令执行状态机对多个通道进行轮询,判断通道的忙闲状态,如果轮询到当前通道为空闲状态,则将当前通道确定为待传输的第一物理通道。
所述命令执行状态机进一步配置为,在分别已确定需要访问的磁盘设备和需要执行传输的物理通道之后,从第一磁盘设备所对应的命令队列FIFO中获取一条I/O指令,将其派发到所述第一物理通道中。进而从当前轮询到的目标磁盘设备队列中获取新的I/O指令,将其派发到所选定的当前通道,完成当前I/O指令的发送。
所述命令队列FIFO进一步配置为,如果I/O指令派发成功,则继续等待驱动层下发新的指令。可选地,在I/O指令派发成功时,所述命令队列FIFO释放当前I/O指令在I/O队列中对应的槽位。
可选地,当物理通道收到指令返回数据时,根据返回数据的类型,确定是否将该I/O指令重新加入命令队列FIFO中。
对于所述命令执行状态机,在当前I/O指令派发成功之后,如果存在由驱动层下发的下一指令,则进行相同的调度处理,直到下发的指令全部执行完成。
由于同一磁盘在任何时刻最多只有一条I/O指令在物理通道中被调度和被执行,因此在当前I/O指令派发成功前,暂停在其他物理通道中派发当前I/O指令所对应的磁盘的其他I/O指令。
对于所述驱动层,如果存在由所述主机应用层下发的下一指令,则进行前述相同的调度处理,直到下发的指令全部执行完成。
此外,本领域技术人员可以理解,图3所示的架构示意图并不构成对本发明的磁盘阵列结构的限定,而是可以包括现有技术中更多或更少的部件,或者某些部件的组合。
可以看出,本发明基于以上具体实施例的基于磁盘设备属性的I/O指令调度装置,通过轮询机制避免出现物理通道长期被某个特定磁盘设备占用,使得磁盘阵列中I/O大规模并发时,保证所挂载的磁盘访问负载均衡性,同时也减少了多个通道同时向同一磁盘派发不同的I/O指令而导致大量I/O指令派发失败,提高了物理通道的利用率,进而提升整个系统的I/O性能。
尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种基于磁盘设备属性的I/O指令调度方法,用于在磁盘阵列系统中实现I/O指令调度,其特征在于,包括:
从内存中读取I/O指令,并根据所述I/O指令的目标磁盘设备ID,将所述I/O指令加入所述目标磁盘对应的命令队列中;
通过对多个磁盘设备的轮询,选择需要访问的第一磁盘设备;
通过对宽端口场景下多个物理通道的轮询,选择空闲状态的第一物理通道;
从所述第一磁盘设备所对应的命令队列中获取I/O指令,将所获取的I/O指令派发到所述第一物理通道中;
所述通过对宽端口场景下多个磁盘设备的轮询,选择需要访问的第一磁盘设备,进一步包括:
对当前具有待发送I/O指令的磁盘设备进行轮询,选择第一磁盘设备;
其中,当存在一条I/O指令对应一个目标磁盘设备ID时,该目标磁盘设备ID所对应的磁盘设备即为当前具有待发送I/O指令的磁盘设备;
针对每个磁盘设备维护一个指示每个磁盘的忙闲状态的状态位图;如果当前磁盘在所述状态位图中为忙状态,表示该磁盘正处于连接状态,此时不执行派发动作,自动轮询下一个磁盘设备。
2.根据权利要求1所述的基于磁盘设备属性的I/O指令调度方法,其特征在于,在所述根据所述I/O指令的目标磁盘设备ID,将所述I/O指令加入所述目标磁盘对应的命令队列中的步骤之前,该方法还包括:
将命令队列拆分成多个I/O下发子队列,其中每个I/O下发子队列与所述磁盘阵列系统的一个磁盘设备相对应;
所述将I/O指令加入所述目标磁盘对应的命令队列中,进一步包括:
将所述I/O指令加入所述目标磁盘对应的I/O下发子队列中。
3.根据权利要求1所述的基于磁盘设备属性的I/O指令调度方法,其特征在于,所述从内存中读取I/O指令,根据所述I/O指令的目标磁盘设备ID,将所述I/O指令加入所述目标磁盘对应的命令队列中,进一步包括:
判断所述命令队列是否有空闲槽位,如果有空闲槽位,则从内存中读取I/O指令,将所述I/O指令加入所述目标磁盘对应的命令队列中。
4.根据权利要求1所述的基于磁盘设备属性的I/O指令调度方法,其特征在于,在所述将所获取的I/O指令派发到所述第一物理通道中之后,该方法还包括:
如果当前I/O指令派发成功,则对来自内存中的下一I/O指令进行相同的调度处理,直到指令全部执行完成;
在当前I/O指令派发成功前,暂停在其他物理通道中派发当前I/O指令所对应的磁盘的其他I/O指令。
5.一种基于磁盘设备属性的I/O指令调度装置,用于在磁盘阵列系统中实现I/O指令调度,其特征在于,包括:
驱动层,被配置为从内存中获取I/O指令,并根据所述I/O指令的目标磁盘设备ID,将所述I/O指令加入目标磁盘对应的命令队列中;以及
命令执行状态机,被配置为:
通过对多个磁盘设备的轮询,选择需要访问的第一磁盘设备;
通过对宽端口场景下多个物理通道的轮询,选择空闲状态的第一物理通道;
从所述第一磁盘设备所对应的命令队列中获取I/O指令,将所获取的I/O指令派发到所述第一物理通道中;
所述命令执行状态机进一步被配置为:
对当前具有待发送I/O指令的磁盘设备进行轮询,选择第一磁盘设备;
其中,当存在一条I/O指令对应一个目标磁盘设备ID时,该目标磁盘设备ID所对应的磁盘设备即为当前具有待发送I/O指令的磁盘设备;
针对每个磁盘设备维护一个指示每个磁盘的忙闲状态的状态位图;如果当前磁盘在所述状态位图中为忙状态,表示该磁盘正处于连接状态,此时不执行派发动作,自动轮询下一个磁盘设备。
6.根据权利要求5所述的基于磁盘设备属性的I/O指令调度装置,其特征在于,所述命令队列包括多个I/O下发子队列,其中每个I/O下发子队列与所述磁盘阵列系统的一个磁盘设备相对应;
所述驱动层进一步被配置为,将所述I/O指令加入所述目标磁盘对应的I/O下发子队列中。
7.根据权利要求5所述的基于磁盘设备属性的I/O指令调度装置,其特征在于,所述驱动层进一步被配置为:
判断所述命令队列是否有空闲槽位,如果有空闲槽位,则从内存中读取I/O指令,将所述I/O指令加入所述目标磁盘对应的命令队列中。
8.根据权利要求5所述的基于磁盘设备属性的I/O指令调度装置,其特征在于,所述命令执行状态机进一步被配置为:
如果当前I/O指令派发成功,则对来自内存中的下一I/O指令进行相同的调度处理,直到指令全部执行完成;
在当前I/O指令派发成功前,暂停在其他物理通道中派发当前I/O指令所对应的磁盘的其他I/O指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011399202.XA CN112506431B (zh) | 2020-12-03 | 2020-12-03 | 基于磁盘设备属性的i/o指令调度方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011399202.XA CN112506431B (zh) | 2020-12-03 | 2020-12-03 | 基于磁盘设备属性的i/o指令调度方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112506431A CN112506431A (zh) | 2021-03-16 |
CN112506431B true CN112506431B (zh) | 2021-10-29 |
Family
ID=74968219
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011399202.XA Active CN112506431B (zh) | 2020-12-03 | 2020-12-03 | 基于磁盘设备属性的i/o指令调度方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112506431B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116560842B (zh) * | 2023-05-12 | 2024-04-16 | 无锡众星微系统技术有限公司 | 一种sas存储业务中的i/o队列调度方法 |
CN117389733B (zh) * | 2023-10-25 | 2024-04-26 | 无锡众星微系统技术有限公司 | 一种减少开关链开销的sas i/o调度方法和装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101778389B (zh) * | 2010-01-29 | 2012-05-23 | 华为技术有限公司 | 多制式数据处理方法及装置 |
CN103902463A (zh) * | 2012-12-31 | 2014-07-02 | 杨威锋 | 基于闪存的存储设备的高速物理地址分配的技术 |
CN106126122A (zh) * | 2016-06-22 | 2016-11-16 | 广东睿江云计算股份有限公司 | 一种基于qos的云主机磁盘io指令调度方法及系统 |
CN109062514B (zh) * | 2018-08-16 | 2021-08-31 | 郑州云海信息技术有限公司 | 一种基于命名空间的带宽控制方法、装置和存储介质 |
CN110134365B (zh) * | 2019-05-21 | 2022-10-11 | 合肥工业大学 | 一种多通道并行读出fifo的方法及装置 |
-
2020
- 2020-12-03 CN CN202011399202.XA patent/CN112506431B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112506431A (zh) | 2021-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8555279B2 (en) | Resource allocation for controller boards management functionalities in a storage management system with a plurality of controller boards, each controller board includes plurality of virtual machines with fixed local shared memory, fixed remote shared memory, and dynamic memory regions | |
JP3694273B2 (ja) | 多重パスi/o要求機構を有するデータ処理システム | |
US7191287B2 (en) | Storage system having a plurality of interfaces | |
US6944707B2 (en) | Storage subsystem, information processing system and method of controlling I/O interface | |
CN112506431B (zh) | 基于磁盘设备属性的i/o指令调度方法及装置 | |
KR20120087980A (ko) | 다중 인터페이스 솔리드 스테이트 디스크, 및 다중 인터페이스 솔리드 스테이트 디스크의 처리 방법 및 시스템 | |
US9015111B2 (en) | Storage system and storage system control method | |
JP2003015915A (ja) | 記憶装置の容量自動拡張方法 | |
CN101150485A (zh) | 一种零拷贝缓冲区队列网络数据发送的管理方法 | |
JP2005258918A (ja) | ストレージシステムおよびストレージシステムのキャッシュメモリ制御方法 | |
US8589646B2 (en) | Storage apparatus and method for storage apparatus | |
CN101150486A (zh) | 一种零拷贝缓冲区队列网络数据接收的管理方法 | |
CN108733585B (zh) | 缓存系统及相关方法 | |
CN112463064B (zh) | 基于双链表结构的i/o指令管理方法及装置 | |
US7043603B2 (en) | Storage device control unit and method of controlling the same | |
JP4053208B2 (ja) | ディスクアレイ制御装置 | |
US10671293B2 (en) | Topology aware load optimized multipath I/O scheduler | |
CN101765829B (zh) | 用于管理数据存储系统的逻辑分区中初始程序加载的方法和系统 | |
US20100100676A1 (en) | Systems And Methods Of Presenting Virtual Tape Products To A Client | |
JP6836536B2 (ja) | ストレージシステム及びio処理の制御方法 | |
JPH08212178A (ja) | 並列計算機 | |
US7370157B2 (en) | Systems and methods of sharing removable media storage devices in multi-partitioned systems | |
US7930438B2 (en) | Interrogate processing for complex I/O link | |
CN110413562A (zh) | 一种具有自适应功能的同步系统和方法 | |
CN116149575B (zh) | 面向服务器无感知计算的磁盘冗余阵列写入方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |