CN116483286B - NVMe SSD的IO资源管理方法、装置、存储介质及设备 - Google Patents
NVMe SSD的IO资源管理方法、装置、存储介质及设备 Download PDFInfo
- Publication number
- CN116483286B CN116483286B CN202310717631.4A CN202310717631A CN116483286B CN 116483286 B CN116483286 B CN 116483286B CN 202310717631 A CN202310717631 A CN 202310717631A CN 116483286 B CN116483286 B CN 116483286B
- Authority
- CN
- China
- Prior art keywords
- queue
- virtual queue
- controller
- virtual
- configuration information
- 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
- 238000007726 management method Methods 0.000 title claims abstract description 31
- 238000000034 method Methods 0.000 claims abstract description 53
- 238000004590 computer program Methods 0.000 claims description 19
- 230000008569 process Effects 0.000 claims description 19
- 230000000694 effects Effects 0.000 claims description 12
- 238000013468 resource allocation Methods 0.000 claims description 12
- 238000001514 detection method Methods 0.000 claims description 4
- 238000013500 data storage Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 13
- 230000001133 acceleration Effects 0.000 description 9
- 230000004044 response Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 4
- 239000004973 liquid crystal related substance Substances 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- 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/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及数据存储技术领域,提供了一种NVMe SSD的IO资源管理方法、装置、存储介质及设备,该方法包括:在为各个控制器进行虚拟队列资源分配时,根据预设的配置结构为已分配的虚拟队列生成队列配置信息,队列配置信息包括控制器编号和寄存器编号,控制器编号用于标识虚拟队列对应的IO命令所属的控制器,寄存器编号与存储当前虚拟队列对应IO命令的主机地址一一对应;进行命令处理时,对已分配的虚拟队列的队列配置信息进行轮询,根据控制器编号查找下一待进行命令处理的目标控制器的虚拟队列,从中选取待处理的目标虚拟队列;根据寄存器编号读取目标虚拟队列对应的IO命令。本发明能够有效降低所有控制器的命令总数对命令处理延迟的影响。
Description
技术领域
本发明涉及数据存储技术领域,尤其涉及一种NVMe SSD的IO资源管理方法、装置、存储介质及设备。
背景技术
NVMe SSD(NVMe固态硬盘)凭借低延迟和高吞吐量的特点,已经取代机械硬盘,成为企业级市场和消费级市场的主要存储介质。作为NVMe固态硬盘的重要组成部分,NVMe硬盘控制器芯片对NVMe固态硬盘的整体性能极其重要的影响。
目前SRIOV(Single Root IO Virtualization)作为一种硬件虚拟化技术已经在NVMe SSD中得到越来越多的应用。NVMe标准在虚拟化环境中定义了两种NVMe控制器资源,即VQ(Virtual Queue,虚拟队列,对应于1对IO寄存器)和VI(Virtual Interrupt,虚拟中断,对应于1个PCIe内MSIX中断)。以现有控制器的资源分配模型来说,在物理功能(PF)上的控制器是主控制器(Primary Controller)、在虚拟功能(VF)上的控制器是从控制器(Secondary Controller)。每种控制器资源,比如VQ,被分成两类:不可分配的资源(Private Resource)和可分配的资源(Flexible Resource)。从控制器需要首先由主控制器分配资源,然后由主机进行初始化并进行IO操作。从控制器的配置过程如下:主机发送命令将从控制器设置到离线状态Offline,主机不能使用在Offline状态的从控制器。主机发送命令为从控制器分配VQ资源和VI资源,即配置从控制器拥有的VQ和VI的数量。主机复位从控制器然后发送命令将其配置到在线状态Online,主机可以使用在Online状态的从控制器,此时的从控制器就是1个标准的NVMe SSD。
综上,当前实现NVMe SSD的IO资源管理方式未对SRIOV提供支持,每个NVMe控制器只能作为1个设备在同一时刻供1个主机使用。而且,当NVMe设备上有多个控制器,且一个控制器的读写命令较少而其他控制器的读写命令很多时,则由于总的读写数量大NVMe控制器处理命令的延迟会变长。也就是说,在支持SRIOV的NVMe SSD中,1个控制器上的读写延迟会受到NVMe SSD上所有控制器的读写总量的影响。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的NVMe SSD的IO资源管理方法、装置、存储介质及设备。
本发明的一个方面,提供了一种NVMe SSD的IO资源管理方法,所述方法包括:
在为各个控制器进行虚拟队列资源分配时,根据预设的配置结构为已分配的各个虚拟队列生成各自的队列配置信息,所述队列配置信息包括控制器编号和寄存器编号,所述控制器编号用于标识当前虚拟队列对应的IO命令所属的控制器,所述寄存器编号与存储当前虚拟队列对应IO命令的主机地址一一对应;
在进行IO命令处理时,对各个已分配的虚拟队列的队列配置信息进行轮询,根据队列配置信息中的控制器编号查找下一待进行命令处理的目标控制器的虚拟队列,并从所述目标控制器的虚拟队列中选取待处理的目标虚拟队列;
根据所述目标虚拟队列的寄存器编号查找并读取所述目标虚拟队列对应的IO命令。
进一步地,所述队列配置信息还包括处理标志,所述处理标志为待处理标识时表示当前虚拟队列是所属控制器的虚拟队列中需要优先处理的队列;
所述从所述目标控制器的虚拟队列中选取待处理的目标虚拟队列,包括:
在所述目标控制器的虚拟队列中按照队列顺序查找处理标志为待处理标识的虚拟队列作为所述待处理的目标虚拟队列。
进一步地,所述在所述目标控制器的虚拟队列中按照队列顺序查找处理标志为待处理标识的虚拟队列作为所述待处理的目标虚拟队列,包括:
查找所述目标控制器的第一个虚拟队列,并记录目标控制器的第一个虚拟队列的序号;
从目标控制器的第一个虚拟队列开始按照队列顺序进行轮询以查找处理标志为待处理标识的虚拟队列作为所述待处理的目标虚拟队列;
若轮询过程中查找到了属于第二控制器的虚拟队列则停止本次轮询,并记录当前找到的虚拟队列作为第二控制器的第一个虚拟队列,并记录第二控制器的第一个虚拟队列的序号,以在轮询到所述第二控制器时根据第二控制器的第一个虚拟队列的序号查找所述第二控制器的第一个虚拟队列。
进一步地,在根据所述目标虚拟队列的寄存器编号查找并读取所述目标虚拟队列对应的IO命令之后,所述方法还包括
将所述目标虚拟队列的下一个虚拟队列的处理标志设置为待处理标识。
进一步地,所述方法还包括:根据主机的分配命令为各个控制器进行虚拟队列资源分配;
所述根据主机的分配命令为各个控制器进行虚拟队列资源分配包括:
查找队列资源中分配标志为已分配的最后一个虚拟队列,根据各个控制器的资源数量需求从已经分配的虚拟队列的下一个虚拟队列开始为对应控制器分配队列资源,以使完成分配的所有虚拟队列连续分布的且属于每一控制器的虚拟队列均是连续分布。
进一步地,所述队列配置信息还包括更新逻辑、分配标志和使能标志,所述使能标志表示当前虚拟队列已经被所属的控制器使用,所述分配标志用于表示当前虚拟队列是否被分配给控制器,所述更新逻辑用于读取当前虚拟队列的下一个虚拟队列分配标志,若当前虚拟队列的分配标志为未分配且当前虚拟队列的下一个虚拟队列的分配标志为已分配时,则将当前虚拟队列的下一个虚拟队列的队列配置信息作为当前虚拟队列的队列配置信息,并将当前虚拟队列的下一个虚拟队列的分配标志设置为未分配,或所述更新逻辑用于读取当前虚拟队列的上一个虚拟队列分配标志,若当前虚拟队列的分配标志为已分配且当前虚拟队列的上一个虚拟队列的分配标志为未分配时,则将当前虚拟队列的队列配置信息作为当前虚拟队列的上一个虚拟队列的队列配置信息,并将当前虚拟队列的分配标志设置为未分配。
进一步地,所述方法还包括:
当接收到主机下发的控制器删除命令时,将待删除控制器的虚拟队列作为待删除虚拟队列,并将待删除虚拟队列对应队列配置信息中的分配标志设置为未分配以实现待删除虚拟队列的释放,基于分布在所述待删除虚拟队列之后的处于已分配状态的虚拟队列对应队列配置信息中的更新逻辑实现虚拟队列的移动,以使完成分配的所有虚拟队列连续分布;或
当接收到主机下发的队列资源重新分配命令时,将待重新分配队列资源的控制器的虚拟队列作为待删除虚拟队列,并将待删除虚拟队列对应队列配置信息中的分配标志设置为未分配以实现待删除虚拟队列的释放,基于分布在所述待删除虚拟队列之后的处于已分配状态的虚拟队列对应队列配置信息中的更新逻辑实现虚拟队列的移动,以使完成分配的所有虚拟队列连续分布,并在完成虚拟队列的移动之后从当前已经分配的虚拟队列的下一个虚拟队列开始为所述待重新分配队列资源的控制器重新分配队列资源。
进一步地,所述将待删除虚拟队列对应队列配置信息中的分配标志设置为未分配以实现待删除虚拟队列的释放包括:
按照队列从后到前的顺序依次将待删除虚拟队列中各个虚拟队列对应队列配置信息中的分配标志设置为未分配,以按照从后到前的顺序实现待删除虚拟队列的依次释放;或
控制更新逻辑在将待删除虚拟队列对应队列配置信息中的分配标志设置为未分配过程中禁止执行虚拟队列的移动操作,直到所有待删除虚拟队列全部完成释放时控制更新逻辑执行虚拟队列的移动操作。
进一步地,所述队列配置信息还包括检查逻辑和IO寄存器,当所述队列配置信息对应虚拟队列对应主机地址中有待处理IO命令时,所述IO寄存器的值更新为命令指示标识,所述检查逻辑通过检查对应IO寄存器的值判断当前虚拟队列对应主机地址中是否有待处理IO命令并产生状态信息;
所述对各个已分配的虚拟队列的队列配置信息进行轮询,包括:
通过检查各个已分配的虚拟队列的检测逻辑输出的状态信息查找有待处理IO命令的虚拟队列,对查找到的有待处理IO命令的虚拟队列进行轮询。
第二方面,本发明还提供了一种NVMe SSD的IO资源管理装置,所述装置包括用于实现如上所述NVMe SSD的IO资源管理方法的功能模块。
第三方面,本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上NVMe SSD的IO资源管理方法的步骤。
第四方面,本发明还提供了一种电子设备,包括存储控制器,所述存储控制器包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上NVMe SSD的IO资源管理方法的步骤。
本发明实施例提供的NVMe SSD的IO资源管理方法、装置、存储介质及设备,能够支持硬件虚拟化技术SRIOV,支持对虚拟队列资源的分配,当NVMe设备上有多个控制器时,本发明对不同控制器的IO命令的读取顺序进行了优化,在控制器级别进行IO命令读写调度,通过轮流处理属于不同控制器的虚拟队列,并在每个控制器的虚拟队列上读取部分的命令,降低总的读写压力对控制器命令响应时间的影响,达到了降低NVMe SSD上的IO命令总量对IO命令处理延迟的影响的效果。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明实施例提供的NVMe SSD的IO资源管理方法的流程图;
图2为本发明实施例提供的虚拟队列的队列配置信息的结构示意图;
图3为本发明实施例提供的虚拟队列资源按顺序分配的示意图;
图4为本发明实施例提供的释放虚拟队列资源的实现示意图;
图5a是使用现有技术处理支持SRIOV的NVMe SSD的多个控制器的命令的处理效果示意图;
图5b是采用本发明实现读取命令的处理效果示意图;
图6为本发明实施例提供的控制器级别命令处理流程示意图;
图7为本发明实施例提供的主控制器内部进行虚拟队列处理的示意图;
图8为本发明实施例提供的主控制器内部进行虚拟队列轮询的流程图;
图9为本发明实施例提供的命令读取处理流程示意图;
图10为本发明实施例提供的NVMe SSD的IO资源管理装置的结构框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非被特定定义,否则不会用理想化或过于正式的含义来解释。
图1示意性示出了本发明一个实施例的NVMe SSD的IO资源管理方法的流程图。参照图1,本发明实施例的NVMe SSD的IO资源管理方法具体包括以下步骤:
S11、在为各个控制器进行虚拟队列资源分配时,根据预设的配置结构为已分配的各个虚拟队列生成各自的队列配置信息,所述队列配置信息包括控制器编号和寄存器编号,所述控制器编号用于标识当前虚拟队列对应的IO命令所属的控制器,所述寄存器编号与存储当前虚拟队列对应IO命令的主机地址一一对应。
本发明实施例中,NVMe SSD设备能够支持硬件虚拟化技术SRIOV,支持对虚拟队列资源的分配。NVMe SSD包括主控制器和多个从控制器,主控制器根据主机的分配命令为各个控制器进行虚拟队列资源分配。本发明中预先设置了虚拟队列VQ的配置结构,在主控制器根据主机的分配命令为各个控制器进行虚拟队列资源分配时,根据预设的配置结构为已分配的各个虚拟队列生成各自的队列配置信息。
主机发送命令为从控制器分配VQ资源,即配置从控制器拥有的VQ数量。主机复位从控制器然后发送命令将其配置到在线状态Online,主机可以使用在线状态的从控制器,此时的从控制器就是1个标准的NVMe SSD。
S12、在进行IO命令处理时,对各个已分配的虚拟队列的队列配置信息进行轮询,根据队列配置信息中的控制器编号查找下一待进行命令处理的目标控制器的虚拟队列,并从所述目标控制器的虚拟队列中选取待处理的目标虚拟队列。
本发明实施例中,按照预设的控制器轮询顺序确定下一待进行命令处理的目标控制器,然后根据队列配置信息中的控制器编号查找下一待进行命令处理的目标控制器。
S13、根据所述目标虚拟队列的寄存器编号查找并读取所述目标虚拟队列对应的IO命令。
本发明中提出的虚拟队列VQ的配置结构如图2所示,需要说明的是,图2中每个VQ对应1组IO寄存器,图2中只示出了5个VQ,但实际应用中使用本发明的系统可以包括上百个VQ或更多VQ。虚拟队列VQ队列配置信息的配置结构可以包括但不限于以下配置信息,其中:
分配标志:表示当前的VQ是否被分配给某一个控制器(主控制器、或从控制器);除队列资源的第一个VQ(图2中的VQ1)和最后一个VQ(图2中为VQ5)外,其他每个VQ的分配标志连接到上一个VQ和下一个VQ的更新逻辑;VQ的其他配置信息、状态或功能仅在分配标志为1时有效。
使能标志:表示当前虚拟队列已经被所属的控制器使用,也即VQ所属的控制器使用了这个VQ;控制器在收到主机的使能命令后将自己的VQ的使能标志置1。
处理标志:处理标志为待处理标识时表示当前虚拟队列是所属控制器的虚拟队列中需要优先处理的队列。当主控制器的轮询模块在处理当前VQ所属控制器的IO请求时,应该从处理标志为待处理标识,如“1”,的VQ逐个查找VQ的状态;每个控制器的所有VQ中必须有且只有一个VQ的处理标志为待处理标识,在主控制为控制器分配VQ时可以从分配的VQ中任意选择一个,也可以固定选择第一个VQ,对此本发明不作具体限定。
控制器编号:保存当前VQ所属控制器的编号,用于标识当前虚拟队列对应的IO命令所属的控制器;每个主机使用控制器编号访问自己使用的控制器。
寄存器编号:保存当前VQ在所属控制中的编号,与存储当前虚拟队列对应IO命令的主机地址一一对应。在NVMe协议中,这个寄存器编号和主机访问IO寄存器的地址是一一对应的,主机使用控制器编号和寄存器编号访问IO寄存器通知控制器进行命令读写。
IO寄存器:保存了一个数值,主机通过更新该值通知控制器有待处理的IO命令,具体的,当所述队列配置信息对应虚拟队列对应主机地址中有待处理IO命令时,所述IO寄存器的值更新为命令指示标识。IO命令保存在和寄存器编号对应的主机地址中,该地址由主机在使能VQ时发送给控制器。
检查逻辑:通过检查对应IO寄存器的值判断当前虚拟队列对应主机地址中是否有待处理IO命令并产生相应的状态信息,例如,可以将“1”作为命令指示标识,当IO寄存器的值更新为1时,判定当前虚拟队列对应主机地址中有待处理IO命令。主控制器的轮询模块检查各个VQ的检测逻辑输出的状态信息找到有待处理命令的VQ然后请求主控制器的命令读取逻辑处理。
更新逻辑:用于读取当前虚拟队列VQ的下一个虚拟队列VQ分配标志,若当前VQ的分配标志为未分配且当前VQ的下一个VQ的分配标志为已分配时,则将当前VQ的下一个VQ的队列配置信息作为当前VQ的队列配置信息,并将当前VQ的下一个VQ的分配标志设置为未分配,或所述更新逻辑用于读取当前VQ的上一个VQ分配标志,若当前VQ的分配标志为已分配且当前VQ的上一个VQ的分配标志为未分配时,则将当前VQ的队列配置信息作为当前VQ的上一个VQ的队列配置信息,并将当前VQ的分配标志设置为未分配。被移动到上一个VQ的配置信息包括分配标志、使能标志、处理标志、控制器编号、寄存器编号、IO寄存器。
本发明实施例提供的NVMe SSD的IO资源管理方法,能够支持硬件虚拟化技术SRIOV,支持对虚拟队列资源的分配,当NVMe设备上有多个控制器时,本发明对不同控制器的IO命令的读取顺序进行了优化,在控制器级别进行IO命令读写调度,通过轮流处理属于不同控制器的虚拟队列,并在每个控制器的虚拟队列上读取部分的命令,降低总的读写压力对控制器命令响应时间的影响,达到了降低NVMe SSD上的IO命令总量对IO命令处理延迟的影响的效果。
本发明实施例提供的NVMe SSD的IO资源管理方法,还包括VQ资源分配的操作流程:主控制器根据主机的分配命令为各个控制器进行虚拟队列资源分配。本实施例中,如图3所示,当主控制器收到主机命令为某个控制器分配VQ时,则主控制器分配的全部VQ是连续的,并位于已经分配的VQ之后。具体的,根据主机的分配命令为各个控制器进行虚拟队列资源分配包括:查找队列资源中分配标志为已分配的最后一个虚拟队列,根据各个控制器的资源数量需求从已经分配的虚拟队列的下一个虚拟队列开始为对应控制器分配队列资源,以使完成分配的所有虚拟队列连续分布的且属于每一控制器的虚拟队列均是连续分布。
本实施例中,队列配置信息还包括更新逻辑、分配标志和使能标志。进一步地,所述方法还包括:当接收到主机下发的控制器删除命令时,将待删除控制器的虚拟队列作为待删除虚拟队列,并将待删除虚拟队列对应队列配置信息中的分配标志设置为未分配以实现待删除虚拟队列的释放,如可将清0状态作为未分配,置1状态作为已分配,基于分布在所述待删除虚拟队列之后的处于已分配状态的虚拟队列对应队列配置信息中的更新逻辑实现虚拟队列的移动,以使完成分配的所有虚拟队列连续分布;或
当接收到主机下发的队列资源重新分配命令时,将待重新分配队列资源的控制器的虚拟队列作为待删除虚拟队列,并将待删除虚拟队列对应队列配置信息中的分配标志设置为未分配以实现待删除虚拟队列的释放,基于分布在所述待删除虚拟队列之后的处于已分配状态的虚拟队列对应队列配置信息中的更新逻辑实现虚拟队列的移动,以使完成分配的所有虚拟队列连续分布,并在完成虚拟队列的移动之后从当前已经分配的虚拟队列的下一个虚拟队列开始为所述待重新分配队列资源的控制器重新分配队列资源。
在一个可选实施例中,所述将待删除虚拟队列对应队列配置信息中的分配标志设置为未分配以实现待删除虚拟队列的释放包括:按照队列从后到前的顺序依次将待删除虚拟队列中各个虚拟队列对应队列配置信息中的分配标志设置为未分配,以按照从后到前的顺序实现待删除虚拟队列的依次释放。
在另一个可选实施例中,所述将待删除虚拟队列对应队列配置信息中的分配标志设置为未分配以实现待删除虚拟队列的释放包括:控制更新逻辑在将待删除虚拟队列对应队列配置信息中的分配标志设置为未分配过程中禁止执行虚拟队列的移动操作,直到所有待删除虚拟队列全部完成释放时控制更新逻辑执行虚拟队列的移动操作。
需要注意的是,由于VQ中的配置信息会移动,则主控制器需要按照从后到前的顺序释放VQ,否则会出现其他VQ移动到刚刚释放的VQ的位置的情况。此外,实际实现中,可以增加控制信息,在释放VQ过程中禁止VQ更新逻辑工作直到所有待删除VQ全部完成释放时控制更新逻辑执行虚拟队列的移动操作。
本发明实施例中,如果是首次为某个控制器分配虚拟队列VQ,则主控制器从已经分配的VQ的下一个VQ开始分配,以保证完成分配后的VQ是连续的。如果需要修改某个控制器被分配的VQ的数量,则主控制器需要首先释放该控制器的全部已经分配的VQ,然后重新分配。
实际应用中,当主控制器收到主机命令需要删除某个控制器或为某个控制器重新分配资源,可以通过将分配标志设置为未分配,释放属于该控制器的所有VQ;在待删除的VQ被删除后,VQ的更新逻辑会自动将后续的已分配的VQ移动到删除VQ后空出的位置,保证未分配的VQ都位于分配的VQ之后。这样,VQ分配流程和释放流程保证了所有控制器(包括主控制器、从控制器)使用的VQ都是连续的。图4示出了释放虚拟队列资源的实现示意图,下面结合图4对VQ释放流程进行说明。
其中:
1. 在释放VQ前,前面的6个VQ被分配,后面的2个VQ未分配;待释放的VQ在所有已经分配的VQ的中间,显然待释放的VQ一定是连续的;
2. 主控制器通过将分配标志清0完成VQ的释放,并造成被分配的VQ被分为两段(不连续);
3. 如果VQ(X)已经被释放,而它的下一个VQ即VQ(X+1)没有被释放,则VQ(X)和VQ(X+1)都会检查到这一状态;在下一个时钟周期,VQ(X+1)会将自己的全部配置信息(包括使能状态置1)写入VQ(X),并将自己的分配标志清0。
4. 通过多次使用上一条的流程,释放VQ后两段已分配VQ的第二段的第一个VQ会移动到第一段的最后;类似的,第二段的其他VQ最终也会移动到和第一段VQ连续的位置。显然,无论释放VQ后被分配的VQ的间隔有多大、第二段的VQ数量有多少,最终被分配的VQ都会占据从第一个VQ开始的连续的一段。假设删除了M个VQ,第二段有N个VQ,则整个过程中最后一个移动的VQ,即第二段的最后一个VQ,只需要经过(M+N-1)个时钟周期就能够移动到最终的位置。
在本发明的一个实施例中,队列配置信息还包括处理标志。进一步地,步骤S12中的从所述目标控制器的虚拟队列中选取待处理的目标虚拟队列,包括:在所述目标控制器的虚拟队列中按照队列顺序查找处理标志为待处理标识的虚拟队列作为所述待处理的目标虚拟队列。具体可以按照虚拟队列序号从小到大的顺序查找所述目标控制器的虚拟队列资源中处理标志为待处理标识的虚拟队列。具体实现方式如下:查找所述目标控制器的第一个虚拟队列,并记录目标控制器的第一个虚拟队列的序号;从目标控制器的第一个虚拟队列开始按照队列顺序进行轮询以查找处理标志为待处理标识的虚拟队列作为所述待处理的目标虚拟队列;若轮询过程中查找到了属于第二控制器的虚拟队列则停止本次轮询,并记录当前找到的虚拟队列作为第二控制器的第一个虚拟队列,并记录第二控制器的第一个虚拟队列的序号,以在轮询到所述第二控制器时根据第二控制器的第一个虚拟队列的序号查找所述第二控制器的第一个虚拟队列。
进一步地,在根据所述目标虚拟队列的寄存器编号查找并读取所述目标虚拟队列对应的IO命令之后,所述方法还包括:将所述目标虚拟队列的下一个虚拟队列的处理标志设置为待处理标识。
本发明实施例采用控制器级别的命令读取调度方式实现IO资源的管理。主控模块的轮询模块的作用是找到下一个有待处理命令的VQ。不同于一般的轮询模块按IO寄存器(对应于本发明中的VQ)的顺序检查IO寄存器的状态,本发明按照控制器的顺序检查VQ的状态。
下面结合图5a和图5b对有多个控制器时轮询模块的工作过程进行说明。图5a,是使用现有的方式处理支持SRIOV的NVMe SSD的多个控制器的命令的处理效果示意图;图中有3个控制器,控制器命令个数的比例关系是4:4:1,可以看出控制器1的命令处理延迟很小,控制器2命令处理延迟略大,而控制器3命令数量最少但却因为控制器1和控制器2命令个数多造成处理延迟很大;通常SRIOV设备支持的控制器个数很多,命令总数对控制器处理命令的延迟的影响会更大。
图5b是采用本发明实现读取命令的处理效果示意图,轮询模块轮流处理属于不同控制器的VQ,并在每个控制器的VQ上读去部分、少量的命令,达到了降低控制器的命令总数对命令处理延迟的影响的效果。
本发明中控制器3的命令仍然需要在控制器1和控制器2的部分命令后处理,由于控制器间需要共享PCIe链路等资源,所以这个延迟是不可避免的;但是本发明消除了控制器命令队列中的命令个数对控制器延迟的影响。可以看出,现有方法中一个控制器的第一个命令的最大处理延迟为等待其他全部控制器的全部命令执行的时间,而本发明中该延迟最多可以缩短为其他全部控制器各执行1个命令的时间。
轮询模块在控制器的整体处理流程如图6所示。其中,
1. 在初始状态(比如在模块使能后)或完成上一个控制器的处理后,轮询模块首先找到下一个待处理的控制器;在初始状态这个控制器就是第一个VQ对应的控制器,在完成对最后一个控制器的处理后也需要处理第一个VQ对应的控制器。轮询模块使用队列配置信息中的控制器编号(FunctionNumber)查找待处理的控制器作为目标控制器。
2. 如果轮询模块在当前目标控制器的VQ中找到了待处理的VQ,则通知命令读取加速模块,从该VQ中读取命令;如果收到了来自命令加速模块的响应,或者轮询模块在当前控制器没有找到待处理的VQ,则结束当前控制器的处理并开始下一个控制器的处理。
本发明实施例中,由于每次只处理一个控制器的部分命令,所以轮询模块也只处理一个控制器的部分VQ且每次处理的VQ的数量和序号都不是固定的,具体的,可以预先配置每次可以处理的VQ的最大数量,实际每次处理的VQ数量小于或等于该最大数量。图7对一个控制器内部VQ的处理进行了说明,在这个例子包含了两次对控制器X的处理,第一次轮询模块处理了资源2到资源4(所以下一次从VQ5开始处理),第二次轮询模块处理了从资源5和资源6(所以下一次从VQ1开始处理)。其中,
1. 由于轮询模块不一定是从控制器X的第一个资源开始,所以每个VQ都需要包含1个处理标志表示它是所属控制器第一个需要处理的VQ;轮询模块按照序号从小到大的顺序查找当前控制器的处理标志为待处理标识的VQ,可选地,可将置1状态作为待处理标识。
2. 轮询模块在找到控制器X的第一个VQ时记录第一个VQ的序号;如果轮询模块找到了属于其他控制器的VQ则记录其为下一个控制器的第一个VQ,如果找到了NVMe SSD的最后1个VQ资源或者下一个VQ资源没有被分配,则下一个控制器的第一个VQ为NVMe SSD的所有VQ中的第一个VQ;如果控制器X的第一个VQ不是第一个待处理的VQ,则需要从控制器X的第一个VQ继续查找。
3. 如果轮询模块找到了待处理的VQ则通知命令读取加速模块从当前VQ读取IO命令,当收到命令读取模块的响应后则将当前VQ的下一个VQ的处理标志置1供轮询模块下一次服务控制器X时使用。
4. 如果控制器轮询了控制器X的所有VQ(下一个待轮询的VQ是当前处理标志为1的VQ)仍没有找到待处理的VQ,则此时处理标志为1的VQ没有改变,也即当前控制器的所有VQ中没有待处理的命令。
图8对一个控制器内部的轮询流程进行了说明。其中:
1. 轮询模块总是从某个控制器的处理标志为1的VQ开始查询VQ的状态;该VQ是上一次处理中轮询的最后一个VQ的下一个。
2. 由于处理过程中轮询模块可能需要从最后1个VQ跳转到第1个VQ,所以轮询模块需要记录当前控制器第一个VQ的位置。
3. 如果出现了从最后1个VQ回到第一个VQ进行处理的情况,则轮询模块需要记录下一个控制器的第一个VQ的位置并在完成当前控制器的处理后直接跳转到下一个控制器的第一个VQ。
4. 如果轮询模块完成当前控制器的处理时没有到达当前控制器最后一个VQ,则轮询模块不再检查当前控制器VQ的状态,并继续按照顺序查找到下一个待处理的控制器的第一个VQ。
本实施例中,主控制器的命令读取加速模块的功能是处理来自轮询模块的请求信息,从主机地址读取IO命令;命令读取加速模块的命令读取处理流程如图9所示,其中:
1. 在收到来自轮询模块的请求后保存请求信息并发送响应;请求信息包括控制器编号、VQ编号等信息,命令读取加速模块可以使用这些信息找到该VQ的配置信息。
2. 根据配置信息得到保存命令的主机地址,发送请求读取命令。
在本发的一个实施例中,所述队列配置信息还包括检查逻辑和IO寄存器。进一步地,所述对各个已分配的虚拟队列的队列配置信息进行轮询,包括:通过检查各个已分配的虚拟队列的检测逻辑输出的状态信息查找有待处理IO命令的虚拟队列,对查找到的有待处理IO命令的虚拟队列进行轮询。
本发明实施例提供的NVMe SSD的IO资源管理方法,能够支持对VQ的分配,在IO寄存器和命令读取模块支持SRIOV;命令释放时能够对VQ进行整理,保证控制器的VQ连续;在控制器级别进行IO命令读写调度,降低总的读写压力对控制器命令响应时间的影响。
对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
此外,本发明实施例还提供了一种NVMe SSD的IO资源管理装置,所述装置包括用于实现如上NVMe SSD的IO资源管理方法的功能模块。图10示意性示出了本发明一个实施例的NVMe SSD的IO资源管理装置的结构示意图。参照图10,本发明实施例的NVMe SSD的IO资源管理装置具体包括资源分配模块201、轮询模块202以及命令读取加速模块203,其中:
资源分配模块201,用于在为各个控制器进行虚拟队列资源分配时,根据预设的配置结构为已分配的各个虚拟队列生成各自的队列配置信息,所述队列配置信息包括控制器编号和寄存器编号,所述控制器编号用于标识当前虚拟队列对应的IO命令所属的控制器,所述寄存器编号与存储当前虚拟队列对应IO命令的主机地址一一对应;
轮询模块202,用于在进行IO命令处理时,对各个已分配的虚拟队列的队列配置信息进行轮询,根据队列配置信息中的控制器编号查找下一待进行命令处理的目标控制器的虚拟队列,并从所述目标控制器的虚拟队列中选取待处理的目标虚拟队列;
命令读取加速模块203,用于根据所述目标虚拟队列的寄存器编号查找并读取所述目标虚拟队列对应的IO命令。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可,且具有相应的技术效果。
此外,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上NVMe SSD的IO资源管理方法的步骤。
本实施例中,所述NVMe SSD的IO资源管理方法如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
此外,本发明实施例还提供了一种电子设备,包括存储控制器,所述存储控制器包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上NVMe SSD的IO资源管理方法的步骤。例如图1所示的步骤S11~S13。或者,所述处理器执行所述计算机程序时实现上述NVMe SSD的IO资源管理装置实施例中各模块/单元的功能,例如图10所示的资源分配模块201、轮询模块202以及命令读取加速模块203。
在一个具体实施例中,所述电子设备可以是NVMe SSD设备。
本发明实施例提供的NVMe SSD的IO资源管理方法、装置、存储介质及设备,能够支持硬件虚拟化技术SRIOV,支持对虚拟队列资源的分配,当NVMe设备上有多个控制器时,本发明对不同控制器的IO命令的读取顺序进行了优化,在控制器级别进行IO命令读写调度,通过轮流处理属于不同控制器的虚拟队列,并在每个控制器的虚拟队列上读取部分的命令,降低总的读写压力对控制器命令响应时间的影响,达到了降低NVMe SSD上的IO命令总量对IO命令处理延迟的影响的效果。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (12)
1.一种NVMe SSD的IO资源管理方法,其特征在于,所述方法包括:
在为各个控制器进行虚拟队列资源分配时,根据预设的配置结构为已分配的各个虚拟队列生成各自的队列配置信息,所述队列配置信息包括控制器编号和寄存器编号,所述控制器编号用于标识当前虚拟队列对应的IO命令所属的控制器,所述寄存器编号与存储当前虚拟队列对应IO命令的主机地址一一对应;
在进行IO命令处理时,对各个已分配的虚拟队列的队列配置信息进行轮询,根据队列配置信息中的控制器编号查找下一待进行命令处理的目标控制器的虚拟队列,并从所述目标控制器的虚拟队列中选取待处理的目标虚拟队列;
根据所述目标虚拟队列的寄存器编号查找并读取所述目标虚拟队列对应的IO命令。
2.根据权利要求1所述的方法,其特征在于,所述队列配置信息还包括处理标志,所述处理标志为待处理标识时表示当前虚拟队列是所属控制器的虚拟队列中需要优先处理的队列;
所述从所述目标控制器的虚拟队列中选取待处理的目标虚拟队列,包括:
在所述目标控制器的虚拟队列中按照队列顺序查找处理标志为待处理标识的虚拟队列作为所述待处理的目标虚拟队列。
3.根据权利要求2所述的方法,其特征在于,所述在所述目标控制器的虚拟队列中按照队列顺序查找处理标志为待处理标识的虚拟队列作为所述待处理的目标虚拟队列,包括:
查找所述目标控制器的第一个虚拟队列,并记录目标控制器的第一个虚拟队列的序号;
从目标控制器的第一个虚拟队列开始按照队列顺序进行轮询以查找处理标志为待处理标识的虚拟队列作为所述待处理的目标虚拟队列;
若轮询过程中查找到了属于第二控制器的虚拟队列则停止本次轮询,并记录当前找到的虚拟队列作为第二控制器的第一个虚拟队列,并记录第二控制器的第一个虚拟队列的序号,以在轮询到所述第二控制器时根据第二控制器的第一个虚拟队列的序号查找所述第二控制器的第一个虚拟队列。
4.根据权利要求2所述的方法,其特征在于,在根据所述目标虚拟队列的寄存器编号查找并读取所述目标虚拟队列对应的IO命令之后,所述方法还包括:
将所述目标虚拟队列的下一个虚拟队列的处理标志设置为待处理标识。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:根据主机的分配命令为各个控制器进行虚拟队列资源分配;
所述根据主机的分配命令为各个控制器进行虚拟队列资源分配包括:
查找队列资源中分配标志为已分配的最后一个虚拟队列,根据各个控制器的资源数量需求从已经分配的虚拟队列的下一个虚拟队列开始为对应控制器分配队列资源,以使完成分配的所有虚拟队列连续分布的且属于每一控制器的虚拟队列均是连续分布。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述队列配置信息还包括更新逻辑、分配标志和使能标志,所述使能标志表示当前虚拟队列已经被所属的控制器使用,所述分配标志用于表示当前虚拟队列是否被分配给控制器,所述更新逻辑用于读取当前虚拟队列的下一个虚拟队列分配标志,若当前虚拟队列的分配标志为未分配且当前虚拟队列的下一个虚拟队列的分配标志为已分配时,则将当前虚拟队列的下一个虚拟队列的队列配置信息作为当前虚拟队列的队列配置信息,并将当前虚拟队列的下一个虚拟队列的分配标志设置为未分配,或所述更新逻辑用于读取当前虚拟队列的上一个虚拟队列分配标志,若当前虚拟队列的分配标志为已分配且当前虚拟队列的上一个虚拟队列的分配标志为未分配时,则将当前虚拟队列的队列配置信息作为当前虚拟队列的上一个虚拟队列的队列配置信息,并将当前虚拟队列的分配标志设置为未分配。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
当接收到主机下发的控制器删除命令时,将待删除控制器的虚拟队列作为待删除虚拟队列,并将待删除虚拟队列对应队列配置信息中的分配标志设置为未分配以实现待删除虚拟队列的释放,基于分布在所述待删除虚拟队列之后的处于已分配状态的虚拟队列对应队列配置信息中的更新逻辑实现虚拟队列的移动,以使完成分配的所有虚拟队列连续分布;或
当接收到主机下发的队列资源重新分配命令时,将待重新分配队列资源的控制器的虚拟队列作为待删除虚拟队列,并将待删除虚拟队列对应队列配置信息中的分配标志设置为未分配以实现待删除虚拟队列的释放,基于分布在所述待删除虚拟队列之后的处于已分配状态的虚拟队列对应队列配置信息中的更新逻辑实现虚拟队列的移动,以使完成分配的所有虚拟队列连续分布,并在完成虚拟队列的移动之后从当前已经分配的虚拟队列的下一个虚拟队列开始为所述待重新分配队列资源的控制器重新分配队列资源。
8.根据权利要求7所述的方法,其特征在于,所述将待删除虚拟队列对应队列配置信息中的分配标志设置为未分配以实现待删除虚拟队列的释放包括:
按照队列从后到前的顺序依次将待删除虚拟队列中各个虚拟队列对应队列配置信息中的分配标志设置为未分配,以按照从后到前的顺序实现待删除虚拟队列的依次释放;或
控制更新逻辑在将待删除虚拟队列对应队列配置信息中的分配标志设置为未分配过程中禁止执行虚拟队列的移动操作,直到所有待删除虚拟队列全部完成释放时控制更新逻辑执行虚拟队列的移动操作。
9.根据权利要求4所述的方法,其特征在于,所述队列配置信息还包括检查逻辑和IO寄存器,当所述队列配置信息对应虚拟队列对应主机地址中有待处理IO命令时,所述IO寄存器的值更新为命令指示标识,所述检查逻辑通过检查对应IO寄存器的值判断当前虚拟队列对应主机地址中是否有待处理IO命令并产生状态信息;
所述对各个已分配的虚拟队列的队列配置信息进行轮询,包括:
通过检查各个已分配的虚拟队列的检测逻辑输出的状态信息查找有待处理IO命令的虚拟队列,对查找到的有待处理IO命令的虚拟队列进行轮询。
10.一种NVMe SSD的IO资源管理装置,其特征在于,所述装置包括用于实现如权利要求1-9任一项所述方法的功能模块。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1-9任一项所述方法的步骤。
12.一种电子设备,其特征在于,包括存储控制器,所述存储控制器包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-9任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310717631.4A CN116483286B (zh) | 2023-06-16 | 2023-06-16 | NVMe SSD的IO资源管理方法、装置、存储介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310717631.4A CN116483286B (zh) | 2023-06-16 | 2023-06-16 | NVMe SSD的IO资源管理方法、装置、存储介质及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116483286A CN116483286A (zh) | 2023-07-25 |
CN116483286B true CN116483286B (zh) | 2023-08-25 |
Family
ID=87223483
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310717631.4A Active CN116483286B (zh) | 2023-06-16 | 2023-06-16 | NVMe SSD的IO资源管理方法、装置、存储介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116483286B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109450809A (zh) * | 2018-11-27 | 2019-03-08 | 华中科技大学 | 一种数据中心调度系统及方法 |
US10452279B1 (en) * | 2016-07-26 | 2019-10-22 | Pavilion Data Systems, Inc. | Architecture for flash storage server |
CN111722786A (zh) * | 2019-03-21 | 2020-09-29 | 阿里巴巴集团控股有限公司 | 基于NVMe设备的存储系统 |
CN111880750A (zh) * | 2020-08-13 | 2020-11-03 | 腾讯科技(深圳)有限公司 | 磁盘读写资源的分配方法、装置、设备及存储介质 |
CN115826872A (zh) * | 2022-12-27 | 2023-03-21 | 上海交通大学 | 完全硬件卸载的NVMe存储加速系统 |
CN116185649A (zh) * | 2021-11-26 | 2023-05-30 | 中兴通讯股份有限公司 | 存储控制方法、存储控制器、存储芯片、网卡、可读介质 |
-
2023
- 2023-06-16 CN CN202310717631.4A patent/CN116483286B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10452279B1 (en) * | 2016-07-26 | 2019-10-22 | Pavilion Data Systems, Inc. | Architecture for flash storage server |
CN109450809A (zh) * | 2018-11-27 | 2019-03-08 | 华中科技大学 | 一种数据中心调度系统及方法 |
CN111722786A (zh) * | 2019-03-21 | 2020-09-29 | 阿里巴巴集团控股有限公司 | 基于NVMe设备的存储系统 |
CN111880750A (zh) * | 2020-08-13 | 2020-11-03 | 腾讯科技(深圳)有限公司 | 磁盘读写资源的分配方法、装置、设备及存储介质 |
CN116185649A (zh) * | 2021-11-26 | 2023-05-30 | 中兴通讯股份有限公司 | 存储控制方法、存储控制器、存储芯片、网卡、可读介质 |
CN115826872A (zh) * | 2022-12-27 | 2023-03-21 | 上海交通大学 | 完全硬件卸载的NVMe存储加速系统 |
Also Published As
Publication number | Publication date |
---|---|
CN116483286A (zh) | 2023-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5530897A (en) | System for dynamic association of a variable number of device addresses with input/output devices to allow increased concurrent requests for access to the input/output devices | |
US9697024B2 (en) | Interrupt management method, and computer implementing the interrupt management method | |
US9852008B2 (en) | Computer-readable recording medium storing execution information notification program, information processing apparatus, and information processing system | |
CN108156823B (zh) | 一种闪存介质的访问方法及控制器 | |
US20110119674A1 (en) | Scheduling method, scheduling apparatus and multiprocessor system | |
US11474712B2 (en) | Method, apparatus, device and storage medium for managing access request | |
CN112765059A (zh) | 一种基于fpga的dma设备及dma数据搬移方法 | |
US8661163B2 (en) | Tag allocation for queued commands across multiple devices | |
US10614542B2 (en) | High granularity level GPU resource allocation method and system | |
EP1426861A2 (en) | Resource management system in user-space | |
CN111522659A (zh) | 一种空间使用方法和装置 | |
CN112925606A (zh) | 一种内存管理方法、装置及设备 | |
US6883171B1 (en) | Dynamic address windowing on a PCI bus | |
CN116483286B (zh) | NVMe SSD的IO资源管理方法、装置、存储介质及设备 | |
JP6974510B2 (ja) | データを処理するための方法、装置、デバイス及び媒体 | |
CN111666036B (zh) | 一种迁移数据的方法、装置及系统 | |
JP2015191604A (ja) | 制御装置、制御プログラム、および制御方法 | |
US10783096B2 (en) | Storage system and method of controlling I/O processing | |
CN113268356A (zh) | 基于LINUX系统的多GPU板卡bounding的系统、方法及介质 | |
CN113010453A (zh) | 一种内存管理的方法、系统、设备及可读存储介质 | |
CN117311833B (zh) | 一种存储控制方法、装置、电子设备及可读存储介质 | |
JP2003263366A (ja) | スワッピング制御方法及びその実施装置並びにその処理プログラム | |
CN110096341B (zh) | 执行资源的动态分区 | |
CN112269542B (zh) | 一种nvme硬盘存储空间分配方法、装置及存储介质 | |
CN114296639B (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 |