CN107818056A - 一种队列管理方法及装置 - Google Patents

一种队列管理方法及装置 Download PDF

Info

Publication number
CN107818056A
CN107818056A CN201610824804.2A CN201610824804A CN107818056A CN 107818056 A CN107818056 A CN 107818056A CN 201610824804 A CN201610824804 A CN 201610824804A CN 107818056 A CN107818056 A CN 107818056A
Authority
CN
China
Prior art keywords
nvme
threshold value
occupancy
queues
equal
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.)
Granted
Application number
CN201610824804.2A
Other languages
English (en)
Other versions
CN107818056B (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.)
Huawei Technologies Co Ltd
Original Assignee
Hangzhou Huawei Digital 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 Hangzhou Huawei Digital Technologies Co Ltd filed Critical Hangzhou Huawei Digital Technologies Co Ltd
Priority to CN201610824804.2A priority Critical patent/CN107818056B/zh
Priority to PCT/CN2017/092817 priority patent/WO2018049899A1/zh
Publication of CN107818056A publication Critical patent/CN107818056A/zh
Application granted granted Critical
Publication of CN107818056B publication Critical patent/CN107818056B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Telephonic Communication Services (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明实施例公开了一种队列管理方法及装置,其中的方法可包括:监控Host端的NVMe队列的占用率,所述NVMe队列包括递交队列SQ或完成队列CQ,其中,所述SQ用于将所述Host端的I/O请求下发至所述NVMe SSD控制器,所述CQ用于将所述NVMe SSD控制器针对所述I/O请求的响应反馈至所述Host端;在所述NVMe队列的占用率大于或等于预设上限阈值的情况下,增加NVMe队列的个数,并通过增加的NVMe队列处理所述Host端的I/O数据。采用本发明可以可以解决现有技术中NVMe协议的服务器***中由于NVMe队列数目固定导致的服务器***数据处理性能下降的问题。

Description

一种队列管理方法及装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种队列管理方法及装置。
背景技术
目前,随着云计算及大数据的迅猛发展,采用快速非易失性存储(Non-VolatileMemory express,NVMe)协议的高速***组件互连(Peripheral Component Interconnectexpress,PCIe)固态硬盘(Solid State Disk,SSD),简称NVMe SSD,以其低延迟、低功耗、高读写速度等优势受到诸多应用领域的青睐。
NVMe是一个可扩展的Host端控制接口,如图1所示,图1为NVMe SSD硬件模块结构图,图1中,Host端中的中央处理器(Central Processing Unit,CPU)利用根端口root port通过一个PCIe交换器(PCIe Switch)扩展出多个PCIe下行口,每个下行口可以连接一块采用NVMe协议的PCIe SSD盘(NVMe SSD),从而完成对该CPU的存储空间扩展。其中,每块NVMeSSD内部存在一个SSD控制器,用于解析NVMe协议以及处理输入/输出(Input/Output,I/O)等。
在现有的NVMe协议中,NVMe队列分为管理队列和I/O队列两种,其中管理队列主要用于设备的控制和管理,如I/O队列的创建、删除等;I/O队列主要用于磁盘的访问。I/O队列的递交队列(SubmissIon Queue,SQ)和完成队列(CompletIon Queue,CQ)不是固定一一对应的,可以在创建SQ队列时灵活配置,可以一个SQ对应一个CQ,也可以多个SQ对应一个CQ。
目前,NVMe驱动已经集成到标准Linux内核中,其为了避免对称多处理(Symmetrical Multi-Processing,SMP)环境对队列加锁进行CPU之间的互斥、提高CPU核的高速缓冲存储器Cache的利用率,在每个CPU核上面分别创建一个I/O SQ和一个I/O CQ(即一个SQ对应一个CQ),如图2所示,图2为NVMe驱动中的NVMe队列模型图,Host端可包括多个CPU,CPU可包括多个CPU核,(图2中以一个Host端包含一个CPU,一个CPU包含3个CPU核为例),图2中,主机Host端与NVMe SSD控制器之间的信息交互是基于NVMe队列中的SQ和CQ来实现的,Host端通过SQ下发命令(例如I/O请求),NVMe SSD控制器通过CQ返回命令响应(例如I/O请求响应)。即每个CPU核上的I/O数据都递交到该核对应的SQ中,NVMe SSD控制器从所有SQ中取出I/O数据,处理完成之后,再把处理结果写到对应的CQ中,同时,每个CQ会绑定一个中断,当把处理结果写到CQ之后,会对Host端产生一个中断,以提醒Host端进行处理结果的读取。如此一来,当Host端中的CPU核数量固定之后,则对应的SQ和CQ也就固定了,如果发生某些CPU核上的I/O请求过大时,则很有可能会因为SQ和CQ的个数的固定而导致SQ队列的溢出,只能等待,同时导致NVMe SSD控制器无法发挥最大的并发能力,最终导致Host端整体的数据处理性能下降。
发明内容
本发明实施例提供一种队列管理方法及装置,可以解决现有技术中NVMe协议的服务器***中由于NVMe队列数目固定导致的服务器***数据处理性能下降的问题。
第一方面,本发明实施例提供了一种队列管理方法,应用于采用快速非易失性存储NVMe协议的服务器***中,其特征在于,所述服务器***包括主机Host端和NVMe固态硬盘SSD控制器,所述队列管理方法可包括:
监控所述Host端的NVMe队列的占用率,所述NVMe队列包括递交队列SQ或完成队列CQ,其中,所述SQ用于将所述Host端的I/O请求下发至所述NVMe SSD控制器,所述CQ用于将所述NVMe SSD控制器针对所述I/O请求的响应反馈至所述Host端;在所述NVMe队列的占用率大于或等于预设上限阈值的情况下,增加NVMe队列的个数,并通过增加的NVMe队列处理所述Host端的I/O数据。
结合第一方面,在第一种可能的实现方式中,所述方法还包括:在所述NVMe队列的占用率小于或等于预设下限阈值的情况下,减少NVMe队列的个数。
结合第一方面,或者,结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述NVMe队列当前包括M个SQ,所述M为大于0的整数;所述预设上限阈值为第一预设阈值;所述在所述NVMe队列的占用率大于或等于预设上限阈值的情况下,增加NVMe队列的个数,并通过增加的NVMe队列处理所述Host端的I/O数据,包括:在所述M个SQ的平均占用率大于或等于第一预设阈值的情况下,增加至少一个SQ,并通过增加的所述至少一个SQ向所述NVMe SSD控制器下发所述Host端的I/O请求。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述方法还包括:将增加的所述至少一个SQ绑定至已有的CQ。
结合第一方面的第一种可能的实现方式,在第四种可能的实现方式中,所述NVMe队列包括M个SQ,所述M为大于0的整数;所述预设下限阈值为第二预设阈值;所述在所述NVMe队列的占用率小于或等于预设下限阈值的情况下,减少NVMe队列的个数,包括:在所述M个SQ的平均占用率小于或等于第二预设阈值的情况下,删除至少一个SQ。
结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,所述删除至少一个SQ之前,还包括:等待删除的所述至少一个SQ的占用率降为0。
结合第一方面的第二种可能的实现方式,或者,结合第一方面的第三种可能的实现方式,或者,结合第一方面的第四种可能的实现方式,或者,结合第一方面的第五种可能的实现方式,在第六种可能的实现方式中,所述方法还包括:在所述M个SQ中的任意一个SQ的占用率大于或等于第三预设阈值的情况下,禁止通过所述SQ进行I/O请求的下发。
结合第一方面的第六种可能的实现方式,在第七种可能的实现方式中,所述方法还包括:在被禁止进行I/O请求的下发的所述SQ的占用率小于或等于第四预设阈值的情况下,恢复通过所述SQ进行I/O请求的下发。
结合第一方面,或者结合第一方面的第一种可能的实现方式,或者,结合第一方面的第二种可能的实现方式,或者,结合第一方面的第三种可能的实现方式,或者,结合第一方面的第四种可能的实现方式,或者,结合第一方面的第五种可能的实现方式,或者,结合第一方面的第六种可能的实现方式,或者,结合第一方面的第七种可能的实现方式,在第八种可能的实现方式中,所述NVMe队列包括N个CQ,所述N为大于0的整数;所述预设上限阈值为第五预设阈值;所述在所述NVMe队列的占用率大于或等于预设上限阈值的情况下,增加NVMe队列的个数,并通过增加的NVMe队列处理所述Host端的I/O数据,包括:在所述N个CQ的平均占用率大于或等于第五预设阈值的情况下,增加至少一个CQ,并通过增加的所述至少一个CQ向所述Host端反馈所述I/O请求的响应。
结合第一方面的第一种可能的实现方式,在第九种可能的实现方式中,所述NVMe队列包括N个CQ,所述N为大于0的整数;所述预设下限阈值为第六预设阈值;所述在所述NVMe队列的占用率小于或等于预设下限阈值的情况下,减少NVMe队列的个数的情况下,包括:在所述N个CQ的平均占用率小于或等于第六预设阈值的情况下,删除至少一个CQ。
结合第一方面的第九种可能的实现方式,在第十种可能的实现方式中,所述删除至少一个CQ之前,还包括:等待删除的所述至少一个CQ的占用率降为0。
结合第一方面的第九种可能的实现方式,或者,结合第一方面的第十种可能的实现方式,在第十一种可能的实现方式中,所述方法还包括:删除与删除的所述至少一个CQ进行了绑定的所有SQ,并在删除所述所有SQ之前等待所述所有SQ的占用率降为0。
结合第一方面,或者结合第一方面的第一种可能的实现方式,或者,结合第一方面的第二种可能的实现方式,或者,结合第一方面的第三种可能的实现方式,或者,结合第一方面的第四种可能的实现方式,或者,结合第一方面的第五种可能的实现方式,或者,结合第一方面的第六种可能的实现方式,或者,结合第一方面的第七种可能的实现方式,或者,结合第一方面的第八种可能的实现方式,或者,结合第一方面的第九种可能的实现方式,或者,结合第一方面的第十种可能的实现方式,或者,结合第一方面的第十一种可能的实现方式,在第十二种可能的实现方式中,所述Host端当前包括M个SQ和N个CQ,且所述M个SQ分别与所述N个CQ中的任意一个建立了对应的绑定关系,所述M与所述N均为正整数,且M大于或等于N;所述方法还包括:接收所述Host端的I/O请求;根据预设规则从所述M个SQ中任意选择一个目标SQ进行所述I/O请求的下发,并通过与所述目标SQ绑定的CQ进行所述I/O请求的响应的反馈,所述预设规则包括轮询规则或者占用率低优先的规则。
第二方面,本发明实施例提供了一种队列管理装置,应用于采用快速非易失性存储NVMe协议的服务器***中,所述服务器***包括主机Host端和NVMe固态硬盘SSD控制器,所述装置可包括:存储单元和处理单元;
其中,所述存储单元用于存储程序代码,所述处理单元用于调用所述存储单元存储的程序代码执行如下步骤:
监控所述Host端的NVMe队列的占用率,所述NVMe队列包括递交队列SQ或完成队列CQ,其中,所述SQ用于将所述Host端的I/O请求下发至所述NVMe SSD控制器,所述CQ用于将所述NVMe SSD控制器针对所述I/O请求的响应反馈至所述Host端;在所述NVMe队列的占用率大于或等于预设上限阈值的情况下,增加NVMe队列的个数,并通过增加的NVMe队列处理所述Host端的I/O数据。
结合第二方面,在第一种可能的实现方式中,所述处理单元还用于:在所述NVMe队列的占用率小于或等于预设下限阈值的情况下,减少NVMe队列的个数。
结合第二方面,或者,结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述NVMe队列当前包括M个SQ,所述M为大于0的整数;所述预设上限阈值为第一预设阈值;所述处理单元用于在所述NVMe队列的占用率大于或等于预设上限阈值的情况下,增加NVMe队列的个数,并通过增加的NVMe队列处理所述Host端的I/O数据,具体为:在所述M个SQ的平均占用率大于或等于第一预设阈值的情况下,增加至少一个SQ,并通过增加的所述至少一个SQ向所述NVMe SSD控制器下发所述Host端的I/O请求。
结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述处理单元还用于:将增加的所述至少一个SQ绑定至已有的CQ。
结合第二方面的第一种可能的实现方式,在第四种可能的实现方式中,所述NVMe队列包括M个SQ,所述M为大于0的整数;所述预设下限阈值为第二预设阈值;所述处理单元用于在所述NVMe队列的占用率小于或等于预设下限阈值的情况下,减少NVMe队列的个数,具体为:在所述M个SQ的平均占用率小于或等于第二预设阈值的情况下,删除至少一个SQ。
结合第二方面的第四种可能的实现方式,在第五种可能的实现方式中,所述处理单元用于删除至少一个SQ之前,还用于:等待删除的所述至少一个SQ的占用率降为0。
结合第二方面的第二种可能的实现方式,或者,结合第二方面的第三种可能的实现方式,或者,结合第二方面的第四种可能的实现方式,或者,结合第二方面的第五种可能的实现方式,在第六种可能的实现方式中,所述处理单元还用于:在所述M个SQ中的任意一个SQ的占用率大于或等于第三预设阈值的情况下,禁止通过所述SQ进行I/O请求的下发。
结合第二方面的第六种可能的实现方式,在第七种可能的实现方式中,所述处理单元还用于:在被禁止进行I/O请求的下发的所述SQ的占用率小于或等于第四预设阈值的情况下,恢复通过所述SQ进行I/O请求的下发。
结合第二方面,或者结合第二方面的第一种可能的实现方式,或者,结合第二方面的第二种可能的实现方式,或者,结合第二方面的第三种可能的实现方式,或者,结合第二方面的第四种可能的实现方式,或者,结合第二方面的第五种可能的实现方式,或者,结合第二方面的第六种可能的实现方式,或者,结合第二方面的第七种可能的实现方式,在第八种可能的实现方式中,所述NVMe队列包括N个CQ,所述N为大于0的整数;所述预设上限阈值为第五预设阈值;所述处理单元用于在所述NVMe队列的占用率大于或等于预设上限阈值的情况下,增加NVMe队列的个数,并通过增加的NVMe队列处理所述Host端的I/O数据,具体为:在所述N个CQ的平均占用率大于或等于第五预设阈值的情况下,增加至少一个CQ,并通过增加的所述至少一个CQ向所述Host端反馈所述I/O请求的响应。
结合第二方面的第一种可能的实现方式,在第九种可能的实现方式中,所述NVMe队列包括N个CQ,所述N为大于0的整数;所述预设下限阈值为第六预设阈值;所述处理单元用于在所述NVMe队列的占用率小于或等于预设下限阈值的情况下,减少NVMe队列的个数的情况下,具体为:在所述N个CQ的平均占用率小于或等于第六预设阈值的情况下,删除至少一个CQ。
结合第二方面的第九种可能的实现方式,在第十种可能的实现方式中,所述处理单元用于删除至少一个CQ之前,还具体用于:等待删除的所述至少一个CQ的占用率降为0。
结合第二方面的第九种可能的实现方式,或者,结合第二方面的第十种可能的实现方式,在第十一种可能的实现方式中,所述处理单元还用于:删除与删除的所述至少一个CQ进行了绑定的所有SQ,并在删除所述所有SQ之前等待所述所有SQ的占用率降为0。
结合第二方面,或者结合第二方面的第一种可能的实现方式,或者,结合第二方面的第二种可能的实现方式,或者,结合第二方面的第三种可能的实现方式,或者,结合第二方面的第四种可能的实现方式,或者,结合第二方面的第五种可能的实现方式,或者,结合第二方面的第六种可能的实现方式,或者,结合第二方面的第七种可能的实现方式,或者,结合第二方面的第八种可能的实现方式,或者,结合第二方面的第九种可能的实现方式,或者,结合第二方面的第十种可能的实现方式,或者,结合第二方面的第十一种可能的实现方式,在第十二种可能的实现方式中,所述装置还包括输入单元;所述Host端当前包括M个SQ和N个CQ,且所述M个SQ分别与所述N个CQ中的任意一个建立了对应的绑定关系,所述M与所述N均为正整数,且M大于或等于N;所述处理单元还用于:通过所述和输入单元接收所述Host端的I/O请求;根据预设规则从所述M个SQ中任意选择一个目标SQ进行所述I/O请求的下发,并通过与所述目标SQ绑定的CQ进行所述I/O请求的响应的反馈,所述预设规则包括轮询规则或者占用率低优先的规则。
实施本发明实施例,具有如下有益效果:
本发明实施例,通过监控Host端的NVMe队列的占用率,在NVMe队列的占用率大于或等于预设上限阈值的情况下,增加NVMe队列的个数,并通过增加的NVMe队列处理Host端的I/O数据。可以解决现有技术中NVMe协议的服务器***中由于NVMe队列数目固定导致的服务器***数据处理性能下降的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的NVMe SSD硬件模块结构图;
图2是本发明实施例提供的NVMe驱动中的NVMe队列模型图;
图3是本发明实施例提供的Host端的软件架构图;;
图4是本发明实施例提供的一种队列管理方法的流程示意图;
图5是本发明实施例提供的另一种队列管理方法的流程示意图;
图6为本发明实施例提供的SQ列表的软件结构示意图;
图7是本发明实施例提供的CQ列表的软件结构示意图;
图8是本发明实施例提供的一种队列管理装置的结构示意图;
图9是本发明实施例提供的一种队列管理装置的另一实施例的结构示意图;
图10是本发明实施例提供的另一种队列管理装置的结构示意图;
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
以下,对本申请中的部分用语进行解释说明,以便于本领域技术人员理解。
1)递交队列(SubmissIon Queue,SQ)和完成队列(CompletIon Queue,CQ),都是一个先进先出队列(First Input First Output,FIFO)的管道,用于连通主机(Host)端和NVMe SSD控制器。都是一段内存,通常位于主机Host端的双倍速率同步动态随机存储器(Double Data Rate,DDR)空间里。这段内存划分成若干等长的内存块,每一块用于存储一个定常的消息(NVMe的发送消息和完成消息都是定常的)。在使用的时候,对于这个队列,有一个头指针和一个尾指针。当两者相等时,队列是空的。随着新的消息加入到队列中来,尾指针不停向前移动。因为内存是定常的,因此指针一旦移动到队内存的最后一个存储空间,之后再移动的话需要环回到内存的起始位置。因此内存在使用上实际上当作一个环来循环使用。当尾指针的下一个指针就是头指针的时候,这个队列不能再接收新的消息,即队列已经满了。
2)固态硬盘(Solid State Disk,SSD)可以包括,但不仅限于各种类型的非易失性存储器,诸如3维交叉点存储器、闪存、铁电存储器、硅氧化物氮化物氧化物硅(SONOS)存储器、聚合物存储器、纳米线、铁电晶体管随机存取存储器(FeTRAM或FeRAM)、纳米线或电可擦可编程只读存储器(EEPROM)。
3)术语“服务器”、“存储器服务器”或“远程服务器”或“云服务器”可以可互换地使用,并可以表示例如但不限于:可被“主机计算机”、“主机设备”、“主机”、“客户端设备”、“客户端”、“网络节点”,以及“节点”远程访问的(例如,通过网络连接)的服务器。
4)“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
下面结合附图对本申请的实施例进行描述。
为了便于理解本发明实施例,下面先对本发明实施例所基于的Host端的软件架构进行描述。请参阅图3,图3为本发明实施例提供的Host端的软件架构图,该软件架构中包含了CPU中的多个CPU核001,NVMe驱动002以及M个SQ 003和N个CQ 004,在该软件架构中将CPU中的各个CPU核看做一个整体001(多个CPU核),SQ或CQ不再是与单个的CPU核进行绑定,SQ和CQ之间也无需是一一对应的关系,而是一个CPU中的所有CPU核都可以共用该CPU下的所有SQ或CQ,因此可以进一步均匀该CPU上的各个CPU核的I/O请求。可以理解的是,可以是一个SQ对应一个CQ,也可以是多个SQ对应一个CQ,可以进行灵活设置。其中,NVMe驱动用来维护该驱动中的SQ列表,当某个CPU核上的业务需要下发I/O时,先从该NVMe驱动维护的SQ列表中获取一个SQ序号,然后把I/O下发到该序号的SQ队列中。并在此过程中,监控单个SQ或CQ、整体SQ、整体CQ的占用率,当达到预设的阈值时,增加或删除SQ或CQ队列,以及维护SQ和CQ的对应关系。可以理解的是,本发明中的队列管理方法可以应用在图3中在Host端的NVMe驱动中,以上图3中的软件架构只是本发明实施例中较优的一种实施方式,本发明实施例中的软件架构包括但不仅限于以上软件架构。
可以理解的是,本发明所提供的Host端可以应用于采用快速非易失性存储NVMe协议的服务器***中,该服务器***可以包括应用了本发明提供的队列管理方法的主机Host端、通过NVMe协议扩展出的多个NVMe SSD,以及NVMe SSD控制器等,本发明对本发明提供的队列管理方法所应用的服务器***的具体结构不作限定。所述Host端通过NVMe队列与所述NVMe SSD控制器进行信息交互,
参见图4,图4是本发明实施例提供的一种队列管理方法的流程示意图,下面将结合附图4从Host端的NVMe驱动侧对本发明实施例中的队列管理方法进行详细描述。如图4所示,该方法可以包括以下步骤S401-步骤S402。
步骤S401:监控所述Host端的NVMe队列的占用率。
具体地,NVMe队列包括递交队列SQ或完成队列CQ,其中,SQ用于将所述Host端的I/O请求下发至所述NVMe SSD控制器,CQ用于将所述NVMe SSD控制器针对所述I/O请求的响应反馈至所述Host端。本发明实施例中,监控NVMe队列的作用在于,便于后续根据所述NVMe队列的占用率动态地调整所述NVMe队列的个数。其中,NVMe队列包括SQ或CQ的原因在于,针对现有技术中SQ和CQ的数目是固定的缺陷,调整SQ或者是CQ都可以在一定程度上解决I/O压力过大的问题,前者是解决I/O请求压力过大的问题,后者是解决I/O请求的响应压力过大的问题,两者若结合则可以既解决I/O请求压力过大的问题,又可以解决I/O请求的响应压力过大的问题。因此,本发明实施例中的NVMe队列只要至少包括SQ和CQ中的至少一种,都可以带来极大的有益效果。并且调整SQ的与调整CQ不必然相关联,可以是分开进行的。
步骤S402:在所述NVMe队列的占用率大于或等于预设上限阈值的情况下,增加NVMe队列的个数,并通过增加的NVMe队列处理所述Host端的I/O数据。
具体地,当Host端的NVMe队列中的SQ队列的占用率达到预设上限阈值,证明此时I/O请求的处理已经达到极限,需要对SQ队列进行调整,本发明实施例通过动态调整并增加SQ队列来增加容纳和处理I/O请求的能力。当Host端的NVMe队列中的CQ的占用率达到预设上限阈值,证明此时I/O请求的响应的存放已经达到极限,需要对CQ进行调整,即通过动态调整并增加CQ队列来增加容纳和处理I/O请求的响应的能力。需要说明的是,SQ的监控与CQ之间的监控互不干扰,即可以只监控SQ,也可以只监控CQ,还可以同时监控SQ和CQ。此处的预设上限阈值是指一类取值,并不是一个具体的取值,也就是说,针对SQ或者针对CQ时,其取值可以相同,也可以不同,即可以灵活设定,本发明对此不作具体限定。
本发明实施例,不需要针对不同的使用场景去设计队列管理方案或者手动调节队列,而会根据***的I/O压力会动态调整NVMe队列,自动达到最佳性能,且资源开销最少。同时又可以充分利用NVMe SSD控制器的最大并发能力,提供现有技术无法提供的队列个数,提高性能。
参见图5,图5是本发明实施例提供的另一种队列管理方法的流程示意图。下面将结合附图5从Host端的NVMe驱动侧对本发明实施例中的队列管理方法进行详细描述。该方法可以包括以下步骤S501-步骤S503。
步骤S501:监控所述Host端的NVMe队列的占用率,所述NVMe队列包括递交队列SQ或完成队列CQ,其中,所述SQ用于将所述Host端的I/O请求下发至所述NVMe SSD控制器,所述CQ用于将所述NVMe SSD控制器针对所述I/O请求的响应反馈至所述Host端。
步骤S502:在所述NVMe队列的占用率大于或等于预设上限阈值的情况下,增加NVMe队列的个数,并通过增加的NVMe队列处理所述Host端的I/O数据。
具体地,步骤S501至步骤S502可以对应地参考图4提供的实施例中的步骤S401至步骤S402,具体的实现方式,这里不再赘述。
针对步骤S502,在一种可能的实现方式中,所述NVMe队列当前包括M个SQ,所述M为大于0的整数;所述预设上限阈值为第一预设阈值;所述在所述NVMe队列的占用率大于或等于预设上限阈值的情况下,增加NVMe队列的个数,并通过增加的NVMe队列处理所述Host端的I/O数据,包括:在所述M个SQ的平均占用率大于或等于第一预设阈值的情况下,增加至少一个SQ,并通过增加的所述至少一个SQ向所述NVMe SSD控制器下发所述Host端的I/O请求。当Host端的所有SQ的平均占用率,大于或等于第一预设阈值(例如80%,即100个队列当前被80个I/O请求所占用),则说明此时当前存在的SQ的数量与I/O的请求数已经接近承受的边缘。因此需要通过增加即创建至少一个SQ,来缓解当前的I/O压力,至于具体增加多少个,可以根据当前的具体的I/O请求数,进行灵活调控。
进一步地,将增加的所述至少一个SQ绑定至已有的CQ。由于SQ将I/O请求下发至SQ后,其最终目的是需要CQ配合将该I/O请求的响应反馈至Host端,所以SQ必须绑定到某个CQ上,才能进行一次完整的I/O请求以及对应的I/O请求的响应,具体的按照何种原则来进行绑定,可以按照轮询的原则或者是当前占用率低的CQ优先进行绑定的顺序,本发明对此不作具体限定。
在一种可能的实现方式中,所述NVMe队列包括M个SQ,所述M为大于0的整数;所述预设下限阈值为第二预设阈值;所述在所述NVMe队列的占用率小于或等于预设下限阈值的情况下,减少NVMe队列的个数,包括:在所述M个SQ的平均占用率小于或等于第二预设阈值的情况下,删除至少一个SQ。当Host端的所有SQ的平均占用率,小于或等于第二预设阈值(例如20%,即100个队列当前只有20个I/O请求在占用),则说明此时当前存在的SQ的数量与I/O的请求数可能严重不匹配。因此需要通过减少即删除至少一个SQ,以释放内存空间来减少***资源的浪费,包括内存空间等资源,可以理解的是,假设当前Host端只有一个SQ,则可以不删除,以免有I/O请求时又需要重新创建。
进一步地,所述删除至少一个SQ之前,还包括:等待删除的所述至少一个SQ的占用率降为0。可以理解的是,在删除SQ之前需要确保SQ中的I/O请求已经处理完成,即SQ当前的占用率为0,否则为误删除SQ中还没有处理完成的I/O请求,产生I/O请求丢失,导致***错误。
在一种可能的实现方式中,在所述M个SQ中的任意一个SQ的占用率大于或等于第三预设阈值的情况下,禁止通过所述SQ进行I/O请求的下发。若在监控的过程中,还对具体的每一个SQ的占用率进行监控,以保证每一个SQ上的I/O请求的占用率都可以的到平均分配,以避免在某些场景中,所有SQ的平均占用率较低,但是其中的一个或多个SQ的占用率超高的情况,即通过监控每一个SQ的占用率,使其保证在一个第三阈值范围内,当等于或超过第三预设阈值时,则停止或禁止通过该SQ进行I/O请求的下发,让该SQ“消化”一段时间,进一步地,在被禁止进行I/O请求的下发的所述SQ的占用率小于或等于第四预设阈值的情况下,恢复通过所述SQ进行I/O请求的下发。即当超负荷的SQ消化完I/O请求,回到正常占用率时(小于或等于第四预设阈值),又恢复通过该SQ进行I/O请求的下发。以灵活调控SQ队列开启与禁止。
步骤S503:在所述NVMe队列的占用率小于或等于预设下限阈值的情况下,减少NVMe队列的个数。
在一种可能的实现方式中,所述NVMe队列包括N个CQ,所述N为大于0的整数;所述预设上限阈值为第五预设阈值;所述在所述NVMe队列的占用率大于或等于预设上限阈值的情况下,增加NVMe队列的个数,并通过增加的NVMe队列处理所述Host端的I/O数据,包括:在所述N个CQ的平均占用率大于或等于第五预设阈值的情况下,增加至少一个CQ,并通过增加的所述至少一个CQ向所述Host端反馈所述I/O请求的响应。当Host端的所有CQ的平均占用率,大于或等于第五预设阈值(例如80%,即100个CQ队列当前被80个I/O请求的响应所占用),则说明此时当前存在的CQ的数量与I/O的请求的响应数已经接近承受的边缘。因此需要通过增加即创建至少一个CQ,来缓解当前的I/O请求的响应的存放的压力,至于具体增加多少个,可以根据当前的具体的I/O请求的响应数,进行灵活调控。可以理解的是本发明实施例中的预设下限阈值与步骤S702中的预设下限阈值虽然从字面上来看是相同的,但是本发明中的预设下限阈值只是一个概念,并非具体指某个具体值,只有具体接到实际的队列时,才赋予其具体的取值,并且其取值也可以根据实际情况进行灵活设置,本发明对此不作具体限定。
在一种可能的实现方式中,所述NVMe队列包括N个CQ,所述N为大于0的整数;所述预设下限阈值为第六预设阈值;所述在所述NVMe队列的占用率小于或等于预设下限阈值的情况下,减少NVMe队列的个数的情况下,包括:在所述N个CQ的平均占用率小于或等于第六预设阈值的情况下,删除至少一个CQ。当Host端的所有SQ的平均占用率,小于或等于第六预设阈值(例如20%,即100个队列当前只有20个I/O请求的响应在占用),则说明此时当前存在的CQ的数量与I/O的请求的响应数可能严重不匹配。因此需要通过减少即删除至少一个CQ,以释放内存空间来减少***资源的浪费,包括内存空间以及中断等资源,可以理解的是,假设当前Host端只有一个CQ,则可以不删除,以免当有I/O请求的响应时又需要重新创建。进一步地,所述删除至少一个CQ之前,还包括:等待删除的所述至少一个CQ的占用率降为0,即在删除CQ之前也必须等待该CQ中的所有I/O请求的响应被相对应的CPU所取出(读取),否则会导致I/O请求的响应的丢失,导致***错误。再进一步地,删除与删除的所述至少一个CQ进行了绑定的所有SQ,并在删除所述所有SQ之前等待所述所有SQ的占用率降为0,因为每个SQ都必须和某一个CQ进行绑定,因此删除CQ的同时必然也会影响到与该CQ进行了绑定的SQ,因而也需要等待这些SQ的占用率降为0,才可以删除该CQ,否则会导致部分SQ都没有CQ进行对应的I/O请求的响应的反馈的局面,最终导致***错误。
在一种可能的实现方式中,所述Host端当前包括M个SQ和N个CQ,且所述M个SQ分别与所述N个CQ中的任意一个建立了对应的绑定关系,所述M与所述N均为正整数,且M大于或等于N;所述方法还包括:接收所述Host端的I/O请求;根据预设规则从所述M个SQ中任意选择一个目标SQ进行所述I/O请求的下发,并通过与所述目标SQ绑定的CQ进行所述I/O请求的响应的反馈,所述预设规则包括轮询规则或者占用率低优先的规则。具体实施方式中,可以是Host端存储有SQ和CQ的列表,然后Host驱动根据SQ和CQ的列表并结合相关规则进行SQ和CQ的分配与调控,其中,SQ列表的具体形式可以如图6所示,图6为本发明实施例提供的SQ列表的软件结构示意图,其本质是一个单向循环链表,每个节点中存储了SQ序号,该SQ是否使能,该SQ关联的CQ序号。另外,这里还涉及到两个全局指针,一个用来指示新的节点添加到哪个节点后面,并在加入新增节点之后指向新增节点;一个用来指示下一个I/O应该发往哪个节点,并在读取之后自动移到下一个节点。SQ列表的主要功能是为各CPU核上的业务选择一个SQ用于I/O的下发,并保证了SQ队列使用的均匀性;CQ列表的具体形式可以如图7所示,图7为本发明实施例提供的CQ列表的软件结构示意图,其本质是一个二维单向链表,每个节点中存储了CQ序号,当前关联的SQ个数,下一个CQ指针,以及指向SQ链表的指针。当新增SQ时,添加到当前关联SQ个数最少的CQ上,如图6所示,则新增SQ关联到CQ1上面。关系列表的主要功能是维护SQ和CQ的对应关系,保证CQ队列使用的均匀性。
本发明实施例除了可以兼顾上述步骤S401和步骤S402对应的实施例带来的有益效果,还解决了不同CPU核上I/O不均匀导致的性能下降问题,通过把每个CPU核上的I/O分散到所有的队列中去,达到I/O均匀分布的效果。同时,本发明实施例可以适合任何场景,既可以适用于小压力的使用场景,又可以适用于多CPU核、多NVMe硬盘情况下的大压力的使用场景,且保持优良的性能。
本发明实施例还提供了一种队列管理装置10,如图8所示,图8是本发明实施例中的一种队列管理装置的结构示意图,下面将结合附图8,对通信装置10的结构进行详细介绍。该装置10可包括:监控模块101和第一管理模块102,其中
监控模块101,监控所述Host端的NVMe队列的占用率,所述NVMe队列包括递交队列SQ或完成队列CQ,其中,所述SQ用于将所述Host端的I/O请求下发至所述NVMe SSD控制器,所述CQ用于将所述NVMe SSD控制器针对所述I/O请求的响应反馈至所述Host端;
第一管理模块102,用于在所述NVMe队列的占用率大于或等于预设上限阈值的情况下,增加NVMe队列的个数,并通过增加的NVMe队列处理所述Host端的I/O数据。
具体地,如图9所示的本发明提供的一种队列管理装置的另一实施例的结构示意图,装置10,还可以包括:第二管理模块103,其中
第二管理模块103,用于在所述NVMe队列的占用率小于或等于预设下限阈值的情况下,减少NVMe队列的个数。
进一步地,所述NVMe队列当前包括M个SQ,所述M为大于0的整数;所述预设上限阈值为第一预设阈值;第一管理模块102,具体用于:在所述M个SQ的平均占用率大于或等于第一预设阈值的情况下,增加至少一个SQ,并通过增加的所述至少一个SQ向所述NVMe SSD控制器下发所述Host端的I/O请求。
再进一步地,如图9所示,装置10还可以包括:
第三管理模块104,用于将增加的所述至少一个SQ绑定至已有的CQ。
再进一步地,所述NVMe队列包括M个SQ,所述M为大于0的整数;所述预设下限阈值为第二预设阈值;第二管理模块103,具体用于:在所述M个SQ的平均占用率小于或等于第二预设阈值的情况下,删除至少一个SQ。
再进一步地,第二管理模块103,具体用于:在所述M个SQ的平均占用率小于或等于第二预设阈值的情况下,等待删除的所述至少一个SQ的占用率降为0,删除至少一个SQ。
再进一步地,如图9所示,装置10还可以包括:
第四管理模块105,用于在所述M个SQ中的任意一个SQ的占用率大于或等于第三预设阈值的情况下,禁止通过所述SQ进行I/O请求的下发。
再进一步地,如图9所示,装置10还可以包括:
第五管理模块106,用于在被禁止进行I/O请求的下发的所述SQ的占用率小于或等于第四预设阈值的情况下,恢复通过所述SQ进行I/O请求的下发。
再进一步地,所述NVMe队列包括N个CQ,所述N为大于0的整数;所述预设上限阈值为第五预设阈值;第一管理模块102,具体用于:在所述N个CQ的平均占用率大于或等于第五预设阈值的情况下,增加至少一个CQ,并通过增加的所述至少一个CQ向所述Host端反馈所述I/O请求的响应。
再进一步地,所述NVMe队列包括N个CQ,所述N为大于0的整数;所述预设下限阈值为第六预设阈值;第二管理模块103,具体用于:在所述N个CQ的平均占用率小于或等于第六预设阈值的情况下,删除至少一个CQ。
再进一步地,第二管理模块103,具体用于:
在所述N个CQ的平均占用率小于或等于第六预设阈值的情况下,等待删除的所述至少一个CQ的占用率降为0,删除至少一个CQ。
再进一步地,如图9所示,装置10还可以包括:
第六管理模块107,用于删除与删除的所述至少一个CQ进行了绑定的所有SQ,并在删除所述所有SQ之前等待所述所有SQ的占用率降为0。
再进一步地,所述Host端当前包括M个SQ和N个CQ,且所述M个SQ分别与所述N个CQ中的任意一个建立了对应的绑定关系,所述M与所述N均为正整数,且M大于或等于N;如图9所示,装置10还可以包括:
第七管理模块108,用于接收所述Host端的I/O请求,并根据预设规则从所述M个SQ中任意选择一个目标SQ进行所述I/O请求的下发,并通过与所述目标SQ绑定的CQ进行所述I/O请求的响应的反馈,所述预设规则包括轮询规则或者占用率低优先的规则。
可理解的是,队列管理装置10中各模块的功能可对应参考上述图2-图7对应的方法实施例中的具体实现方式,这里不再赘述。
请参见图10,图10是本发明实施例提供的另一种队列管理装置20,应用于采用快速非易失性存储NVMe协议的服务器***中,所述服务器***包括主机Host端和NVMe固态硬盘SSD控制器,队列管理装置20可以包括:输入单元201、输出单元202、存储单元203和处理单元204,在本发明的一些实施例中。其中,总线用于实现这些组件之间的通信连接;输入单元201具体可为终端的触控面板,包括触摸屏和触控屏,用于检测终端触控面板上的操作指令;输出单元202可以包括终端的显示屏(Display),用于输出、显示图像或者数据;存储单元203可以是高速RAM显示器,也可以是非不稳定的显示器(non-volatile memory),例如至少一个磁盘显示器,存储单元203可选的还可以是至少一个位于远离前述处理单元201的显示装置。如图10所示,作为一种计算机显示介质的存储单元203中可以包括操作***、网络通信模块、用户接口模块以及数据处理程序。
其中,所述存储单元203用于存储程序代码,处理单元204用于调用所述存储单元203存储的程序代码执行如下步骤:
监控所述Host端的NVMe队列的占用率,所述NVMe队列包括递交队列SQ或完成队列CQ,其中,所述SQ用于将所述Host端的I/O请求下发至所述NVMe SSD控制器,所述CQ用于将所述NVMe SSD控制器针对所述I/O请求的响应反馈至所述Host端;
在所述NVMe队列的占用率大于或等于预设上限阈值的情况下,增加NVMe队列的个数,并通过增加的NVMe队列处理所述Host端的I/O数据。
具体地,处理单元204还用于:
在所述NVMe队列的占用率小于或等于预设下限阈值的情况下,减少NVMe队列的个数。
进一步地,所述NVMe队列当前包括M个SQ,所述M为大于0的整数;所述预设上限阈值为第一预设阈值;
处理单元204用于在所述NVMe队列的占用率大于或等于预设上限阈值的情况下,增加NVMe队列的个数,并通过增加的NVMe队列处理所述Host端的I/O数据,具体为:
在所述M个SQ的平均占用率大于或等于第一预设阈值的情况下,增加至少一个SQ,并通过增加的所述至少一个SQ向所述NVMe SSD控制器下发所述Host端的I/O请求。
再进一步地,处理单元204还用于:
将增加的所述至少一个SQ绑定至已有的CQ。
再进一步地,所述NVMe队列包括M个SQ,所述M为大于0的整数;所述预设下限阈值为第二预设阈值;
处理单元204用于在所述NVMe队列的占用率小于或等于预设下限阈值的情况下,减少NVMe队列的个数,具体为:
在所述M个SQ的平均占用率小于或等于第二预设阈值的情况下,删除至少一个SQ。
再进一步地,处理单元204用于删除至少一个SQ之前,还用于:
等待删除的所述至少一个SQ的占用率降为0。
再进一步地,处理单元204还用于:
在所述M个SQ中的任意一个SQ的占用率大于或等于第三预设阈值的情况下,禁止通过所述SQ进行I/O请求的下发。
再进一步地,处理单元204还用于:
在被禁止进行I/O请求的下发的所述SQ的占用率小于或等于第四预设阈值的情况下,恢复通过所述SQ进行I/O请求的下发。
再进一步地,所述NVMe队列包括N个CQ,所述N为大于0的整数;所述预设上限阈值为第五预设阈值;
处理单元204用于在所述NVMe队列的占用率大于或等于预设上限阈值的情况下,增加NVMe队列的个数,并通过增加的NVMe队列处理所述Host端的I/O数据,具体为:
在所述N个CQ的平均占用率大于或等于第五预设阈值的情况下,增加至少一个CQ,并通过增加的所述至少一个CQ向所述Host端反馈所述I/O请求的响应。
再进一步地,所述NVMe队列包括N个CQ,所述N为大于0的整数;所述预设下限阈值为第六预设阈值;处理单元204用于在所述NVMe队列的占用率小于或等于预设下限阈值的情况下,减少NVMe队列的个数的情况下,具体为:
在所述N个CQ的平均占用率小于或等于第六预设阈值的情况下,删除至少一个CQ。
再进一步地,处理单元204用于删除至少一个CQ之前,还具体用于:
等待删除的所述至少一个CQ的占用率降为0。
再进一步地,处理单元204还用于:
删除与删除的所述至少一个CQ进行了绑定的所有SQ,并在删除所述所有SQ之前等待所述所有SQ的占用率降为0。
再进一步地,所述Host端当前包括M个SQ和N个CQ,且所述M个SQ分别与所述N个CQ中的任意一个建立了对应的绑定关系,所述M与所述N均为正整数,且M大于或等于N;所述处理单元还用于:处理单元204还用于:
通过输入单元201接收所述Host端的I/O请求;
根据预设规则从所述M个SQ中任意选择一个目标SQ进行所述I/O请求的下发,并通过与所述目标SQ绑定的CQ进行所述I/O请求的响应的反馈,所述预设规则包括轮询规则或者占用率低优先的规则。
可理解的是,队列管理装置20中各单元的功能可对应参考上述图2-图7对应的方法实施例中的具体实现方式,这里不再赘述。
本发明实施例还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时包括上述方法实施例中记载的任意一种队列管理方法的部分或全部步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可能可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以为个人计算机、服务器或者网络设备等,具体可以是计算机设备中的处理器)执行本发明各个实施例上述方法的全部或部分步骤。其中,而前述的存储介质可包括:U盘、移动硬盘、磁碟、光盘、只读存储器(英文:Read-Only Memory,缩写:ROM)或者随机存取存储器(英文:Random Access Memory,缩写:RAM)等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (26)

1.一种队列管理方法,应用于采用快速非易失性存储NVMe协议的服务器***中,其特征在于,所述服务器***包括主机Host端和NVMe固态硬盘SSD控制器,所述方法包括:
监控所述Host端的NVMe队列的占用率,所述NVMe队列包括递交队列SQ或完成队列CQ,其中,所述SQ用于将所述Host端的I/O请求下发至所述NVMe SSD控制器,所述CQ用于将所述NVMe SSD控制器针对所述I/O请求的响应反馈至所述Host端;
在所述NVMe队列的占用率大于或等于预设上限阈值的情况下,增加NVMe队列的个数,并通过增加的NVMe队列处理所述Host端的I/O数据。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
在所述NVMe队列的占用率小于或等于预设下限阈值的情况下,减少NVMe队列的个数。
3.如权利要求1或2所述的方法,其特征在于,所述NVMe队列当前包括M个SQ,所述M为大于0的整数;所述预设上限阈值为第一预设阈值;
所述在所述NVMe队列的占用率大于或等于预设上限阈值的情况下,增加NVMe队列的个数,并通过增加的NVMe队列处理所述Host端的I/O数据,包括:
在所述M个SQ的平均占用率大于或等于第一预设阈值的情况下,增加至少一个SQ,并通过增加的所述至少一个SQ向所述NVMe SSD控制器下发所述Host端的I/O请求。
4.如权利要求3所述的方法,其特征在于,所述方法还包括:
将增加的所述至少一个SQ绑定至已有的CQ。
5.如权利要求2所述的方法,其特征在于,所述NVMe队列包括M个SQ,所述M为大于0的整数;所述预设下限阈值为第二预设阈值;
所述在所述NVMe队列的占用率小于或等于预设下限阈值的情况下,减少NVMe队列的个数,包括:
在所述M个SQ的平均占用率小于或等于第二预设阈值的情况下,删除至少一个SQ。
6.如权利要求5所述的方法,其特征在于,所述删除至少一个SQ之前,还包括:
等待删除的所述至少一个SQ的占用率降为0。
7.如权利要求3-6任意一项所述的方法,其特征在于,所述方法还包括:
在所述M个SQ中的任意一个SQ的占用率大于或等于第三预设阈值的情况下,禁止通过所述SQ进行I/O请求的下发。
8.如权利要求7所述的方法,其特征在于,所述方法还包括:
在被禁止进行I/O请求的下发的所述SQ的占用率小于或等于第四预设阈值的情况下,恢复通过所述SQ进行I/O请求的下发。
9.如权利要求1-8任意一项所述的方法,其特征在于,所述NVMe队列包括N个CQ,所述N为大于0的整数;所述预设上限阈值为第五预设阈值;
所述在所述NVMe队列的占用率大于或等于预设上限阈值的情况下,增加NVMe队列的个数,并通过增加的NVMe队列处理所述Host端的I/O数据,包括:
在所述N个CQ的平均占用率大于或等于第五预设阈值的情况下,增加至少一个CQ,并通过增加的所述至少一个CQ向所述Host端反馈所述I/O请求的响应。
10.如权利要求2所述的方法,其特征在于,所述NVMe队列包括N个CQ,所述N为大于0的整数;所述预设下限阈值为第六预设阈值;所述在所述NVMe队列的占用率小于或等于预设下限阈值的情况下,减少NVMe队列的个数的情况下,包括:
在所述N个CQ的平均占用率小于或等于第六预设阈值的情况下,删除至少一个CQ。
11.如权利要求10所述的方法,其特征在于,所述删除至少一个CQ之前,还包括:
等待删除的所述至少一个CQ的占用率降为0。
12.如权利要求10或11所述的方法,其特征在于,所述方法还包括:
删除与删除的所述至少一个CQ进行了绑定的所有SQ,并在删除所述所有SQ之前等待所述所有SQ的占用率降为0。
13.如权利要求1-12任意一项所述的方法,其特征在于,所述Host端当前包括M个SQ和N个CQ,且所述M个SQ分别与所述N个CQ中的任意一个建立了对应的绑定关系,所述M与所述N均为正整数,且M大于或等于N;所述方法还包括:
接收所述Host端的I/O请求;
根据预设规则从所述M个SQ中任意选择一个目标SQ进行所述I/O请求的下发,并通过与所述目标SQ绑定的CQ进行所述I/O请求的响应的反馈,所述预设规则包括轮询规则或者占用率低优先的规则。
14.一种队列管理装置,应用于采用快速非易失性存储NVMe协议的服务器***中,其特征在于,所述服务器***包括主机Host端和NVMe固态硬盘SSD控制器,所述装置包括:存储单元和处理单元;
其中,所述存储单元用于存储程序代码,所述处理单元用于调用所述存储单元存储的程序代码执行如下步骤:
监控所述Host端的NVMe队列的占用率,所述NVMe队列包括递交队列SQ或完成队列CQ,其中,所述SQ用于将所述Host端的I/O请求下发至所述NVMe SSD控制器,所述CQ用于将所述NVMe SSD控制器针对所述I/O请求的响应反馈至所述Host端;
在所述NVMe队列的占用率大于或等于预设上限阈值的情况下,增加NVMe队列的个数,并通过增加的NVMe队列处理所述Host端的I/O数据。
15.如权利要求14所述的装置,其特征在于,所述处理单元还用于:
在所述NVMe队列的占用率小于或等于预设下限阈值的情况下,减少NVMe队列的个数。
16.如权利要求14或15所述的装置,其特征在于,所述NVMe队列当前包括M个SQ,所述M为大于0的整数;所述预设上限阈值为第一预设阈值;
所述处理单元用于在所述NVMe队列的占用率大于或等于预设上限阈值的情况下,增加NVMe队列的个数,并通过增加的NVMe队列处理所述Host端的I/O数据,具体为:
在所述M个SQ的平均占用率大于或等于第一预设阈值的情况下,增加至少一个SQ,并通过增加的所述至少一个SQ向所述NVMe SSD控制器下发所述Host端的I/O请求。
17.如权利要求16所述的装置,其特征在于,所述处理单元还用于:
将增加的所述至少一个SQ绑定至已有的CQ。
18.如权利要求15所述的装置,其特征在于,所述NVMe队列包括M个SQ,所述M为大于0的整数;所述预设下限阈值为第二预设阈值;
所述处理单元用于在所述NVMe队列的占用率小于或等于预设下限阈值的情况下,减少NVMe队列的个数,具体为:
在所述M个SQ的平均占用率小于或等于第二预设阈值的情况下,删除至少一个SQ。
19.如权利要求18所述的装置,其特征在于,所述处理单元用于删除至少一个SQ之前,还用于:
等待删除的所述至少一个SQ的占用率降为0。
20.如权利要求16-19任意一项所述的装置,其特征在于,所述处理单元还用于:
在所述M个SQ中的任意一个SQ的占用率大于或等于第三预设阈值的情况下,禁止通过所述SQ进行I/O请求的下发。
21.如权利要求20所述的装置,其特征在于,所述处理单元还用于:
在被禁止进行I/O请求的下发的所述SQ的占用率小于或等于第四预设阈值的情况下,恢复通过所述SQ进行I/O请求的下发。
22.如权利要求14-21任意一项所述的装置,其特征在于,所述NVMe队列包括N个CQ,所述N为大于0的整数;所述预设上限阈值为第五预设阈值;
所述处理单元用于在所述NVMe队列的占用率大于或等于预设上限阈值的情况下,增加NVMe队列的个数,并通过增加的NVMe队列处理所述Host端的I/O数据,具体为:
在所述N个CQ的平均占用率大于或等于第五预设阈值的情况下,增加至少一个CQ,并通过增加的所述至少一个CQ向所述Host端反馈所述I/O请求的响应。
23.如权利要求15所述的装置,其特征在于,所述NVMe队列包括N个CQ,所述N为大于0的整数;所述预设下限阈值为第六预设阈值;所述处理单元用于在所述NVMe队列的占用率小于或等于预设下限阈值的情况下,减少NVMe队列的个数的情况下,具体为:
在所述N个CQ的平均占用率小于或等于第六预设阈值的情况下,删除至少一个CQ。
24.如权利要求23所述的装置,其特征在于,所述处理单元用于删除至少一个CQ之前,还具体用于:
等待删除的所述至少一个CQ的占用率降为0。
25.如权利要求23或24所述的装置,其特征在于,所述处理单元还用于:
删除与删除的所述至少一个CQ进行了绑定的所有SQ,并在删除所述所有SQ之前等待所述所有SQ的占用率降为0。
26.如权利要求14-25任意一项所述的装置,其特征在于,所述装置还包括输入单元;所述Host端当前包括M个SQ和N个CQ,且所述M个SQ分别与所述N个CQ中的任意一个建立了对应的绑定关系,所述M与所述N均为正整数,且M大于或等于N;所述处理单元还用于:
通过所述输入单元接收所述Host端的I/O请求;
根据预设规则从所述M个SQ中任意选择一个目标SQ进行所述I/O请求的下发,并通过与所述目标SQ绑定的CQ进行所述I/O请求的响应的反馈,所述预设规则包括轮询规则或者占用率低优先的规则。
CN201610824804.2A 2016-09-14 2016-09-14 一种队列管理方法及装置 Active CN107818056B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201610824804.2A CN107818056B (zh) 2016-09-14 2016-09-14 一种队列管理方法及装置
PCT/CN2017/092817 WO2018049899A1 (zh) 2016-09-14 2017-07-13 一种队列管理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610824804.2A CN107818056B (zh) 2016-09-14 2016-09-14 一种队列管理方法及装置

Publications (2)

Publication Number Publication Date
CN107818056A true CN107818056A (zh) 2018-03-20
CN107818056B CN107818056B (zh) 2021-09-07

Family

ID=61600852

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610824804.2A Active CN107818056B (zh) 2016-09-14 2016-09-14 一种队列管理方法及装置

Country Status (2)

Country Link
CN (1) CN107818056B (zh)
WO (1) WO2018049899A1 (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108549610A (zh) * 2018-03-27 2018-09-18 深圳忆联信息***有限公司 一种NVMe扩展的实现方法及固态硬盘
CN108897491A (zh) * 2018-05-30 2018-11-27 郑州云海信息技术有限公司 一种异构混合内存快速访问优化方法及***
CN111277616A (zh) * 2018-12-04 2020-06-12 中兴通讯股份有限公司 一种基于rdma的数据传输方法和分布式共享内存***
CN111858011A (zh) * 2020-07-31 2020-10-30 深圳大普微电子科技有限公司 一种多数据流任务处理方法、装置、设备及存储介质
CN112068768A (zh) * 2019-06-10 2020-12-11 三星电子株式会社 基于队列对的NVMeoF启动器-目标***中I/O传输的***和方法
CN112463028A (zh) * 2020-10-29 2021-03-09 苏州浪潮智能科技有限公司 一种i/o处理方法、***、设备及计算机可读存储介质
CN114265797A (zh) * 2021-12-01 2022-04-01 杭州海康存储科技有限公司 存储访问控制装置、硬盘设备及方法
WO2022143774A1 (zh) * 2020-12-31 2022-07-07 华为技术有限公司 一种数据访问方法及相关设备
CN116795298A (zh) * 2023-08-28 2023-09-22 麒麟软件有限公司 一种Linux下NVME存储器的IO优化方法及***

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11030107B2 (en) 2019-04-19 2021-06-08 Hewlett Packard Enterprise Development Lp Storage class memory queue depth threshold adjustment
CN111208948B (zh) * 2020-01-13 2022-08-09 华东师范大学 一种基于混合式存储的请求分发方法
CN111857579B (zh) * 2020-06-30 2024-02-09 广东浪潮大数据研究有限公司 一种ssd盘片控制器复位方法、***、装置及可读存储介质
US11604743B2 (en) 2020-08-31 2023-03-14 International Business Machines Corporation Input/output queue hinting for resource utilization
US11599271B2 (en) 2021-02-12 2023-03-07 Hewlett Packard Enterprise Development Lp Controlling I/O Q-connections in NVMe devices

Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1773458A (zh) * 2004-11-10 2006-05-17 国际商业机器公司 用于管理资源元素队列的方法和控制器
US20080091890A1 (en) * 2003-11-05 2008-04-17 Steven Shrader Reactive Placement Controller for Interfacing with Banked Memory Storage
CN101620618A (zh) * 2009-07-24 2010-01-06 中兴通讯股份有限公司 内存存储数据的维护方法与装置
CN101690022A (zh) * 2007-06-28 2010-03-31 汤姆森特许公司 用于对等直播流的基于队列的自适应块调度
CN101876950A (zh) * 2009-04-28 2010-11-03 三星电子株式会社 计算机***中保护硬盘驱动器的队列溢出防止设备和方法
CN102088395A (zh) * 2009-12-02 2011-06-08 杭州华三通信技术有限公司 一种调整媒体数据缓存的方法和装置
CN102377682A (zh) * 2011-12-12 2012-03-14 西安电子科技大学 基于定长单元存储变长分组的队列管理方法及设备
CN102591715A (zh) * 2012-01-05 2012-07-18 北京航空航天大学 一种使用多队列技术的虚拟机网络性能优化的实现方法
CN103945548A (zh) * 2014-04-29 2014-07-23 西安电子科技大学 一种c-ran网络中的资源分配***及任务/业务调度方法
CN104125166A (zh) * 2014-07-31 2014-10-29 华为技术有限公司 一种队列调度方法及计算***
CN104407820A (zh) * 2014-12-12 2015-03-11 华为技术有限公司 基于固态硬盘存储***的数据处理方法、装置以及***
CN104426790A (zh) * 2013-08-26 2015-03-18 中兴通讯股份有限公司 对多队列的缓存空间进行分配控制的方法及装置
CN104750543A (zh) * 2013-12-26 2015-07-01 杭州华为数字技术有限公司 线程创建方法、业务请求处理方法及相关设备
CN104854831A (zh) * 2012-12-07 2015-08-19 思科技术公司 基于输入队列的设备的输出队列延迟行为
CN105068953A (zh) * 2014-05-07 2015-11-18 Hgst荷兰公司 用于对等高速***组件互联存储传输的***和方法
US20160224248A1 (en) * 2015-02-04 2016-08-04 Samsung Electronics Co., Ltd. Storage device and user device supporting virtualization function

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4388713B2 (ja) * 2001-03-29 2009-12-24 富士通株式会社 日配品発注最適化支援システム、その方法、及びプログラム
CN105892945B (zh) * 2016-03-30 2019-09-20 深圳忆联信息***有限公司 一种信息更新方法及电子设备

Patent Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080091890A1 (en) * 2003-11-05 2008-04-17 Steven Shrader Reactive Placement Controller for Interfacing with Banked Memory Storage
CN1773458A (zh) * 2004-11-10 2006-05-17 国际商业机器公司 用于管理资源元素队列的方法和控制器
CN101690022A (zh) * 2007-06-28 2010-03-31 汤姆森特许公司 用于对等直播流的基于队列的自适应块调度
CN101876950A (zh) * 2009-04-28 2010-11-03 三星电子株式会社 计算机***中保护硬盘驱动器的队列溢出防止设备和方法
CN101620618A (zh) * 2009-07-24 2010-01-06 中兴通讯股份有限公司 内存存储数据的维护方法与装置
CN102088395A (zh) * 2009-12-02 2011-06-08 杭州华三通信技术有限公司 一种调整媒体数据缓存的方法和装置
CN102377682A (zh) * 2011-12-12 2012-03-14 西安电子科技大学 基于定长单元存储变长分组的队列管理方法及设备
CN102591715A (zh) * 2012-01-05 2012-07-18 北京航空航天大学 一种使用多队列技术的虚拟机网络性能优化的实现方法
CN104854831A (zh) * 2012-12-07 2015-08-19 思科技术公司 基于输入队列的设备的输出队列延迟行为
CN104426790A (zh) * 2013-08-26 2015-03-18 中兴通讯股份有限公司 对多队列的缓存空间进行分配控制的方法及装置
CN104750543A (zh) * 2013-12-26 2015-07-01 杭州华为数字技术有限公司 线程创建方法、业务请求处理方法及相关设备
CN103945548A (zh) * 2014-04-29 2014-07-23 西安电子科技大学 一种c-ran网络中的资源分配***及任务/业务调度方法
CN105068953A (zh) * 2014-05-07 2015-11-18 Hgst荷兰公司 用于对等高速***组件互联存储传输的***和方法
CN104125166A (zh) * 2014-07-31 2014-10-29 华为技术有限公司 一种队列调度方法及计算***
CN104407820A (zh) * 2014-12-12 2015-03-11 华为技术有限公司 基于固态硬盘存储***的数据处理方法、装置以及***
US20160224248A1 (en) * 2015-02-04 2016-08-04 Samsung Electronics Co., Ltd. Storage device and user device supporting virtualization function

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108549610B (zh) * 2018-03-27 2021-02-23 深圳忆联信息***有限公司 一种NVMe扩展的实现方法及固态硬盘
CN108549610A (zh) * 2018-03-27 2018-09-18 深圳忆联信息***有限公司 一种NVMe扩展的实现方法及固态硬盘
CN108897491A (zh) * 2018-05-30 2018-11-27 郑州云海信息技术有限公司 一种异构混合内存快速访问优化方法及***
CN111277616A (zh) * 2018-12-04 2020-06-12 中兴通讯股份有限公司 一种基于rdma的数据传输方法和分布式共享内存***
CN111277616B (zh) * 2018-12-04 2023-11-03 中兴通讯股份有限公司 一种基于rdma的数据传输方法和分布式共享内存***
CN112068768B (zh) * 2019-06-10 2023-03-28 三星电子株式会社 基于队列对的NVMeoF启动器-目标***中I/O传输的***和方法
CN112068768A (zh) * 2019-06-10 2020-12-11 三星电子株式会社 基于队列对的NVMeoF启动器-目标***中I/O传输的***和方法
CN111858011A (zh) * 2020-07-31 2020-10-30 深圳大普微电子科技有限公司 一种多数据流任务处理方法、装置、设备及存储介质
CN112463028A (zh) * 2020-10-29 2021-03-09 苏州浪潮智能科技有限公司 一种i/o处理方法、***、设备及计算机可读存储介质
CN112463028B (zh) * 2020-10-29 2023-01-10 苏州浪潮智能科技有限公司 一种i/o处理方法、***、设备及计算机可读存储介质
WO2022143774A1 (zh) * 2020-12-31 2022-07-07 华为技术有限公司 一种数据访问方法及相关设备
CN114265797A (zh) * 2021-12-01 2022-04-01 杭州海康存储科技有限公司 存储访问控制装置、硬盘设备及方法
CN114265797B (zh) * 2021-12-01 2024-02-27 杭州海康存储科技有限公司 存储访问控制装置、硬盘设备及方法
CN116795298A (zh) * 2023-08-28 2023-09-22 麒麟软件有限公司 一种Linux下NVME存储器的IO优化方法及***
CN116795298B (zh) * 2023-08-28 2023-11-24 麒麟软件有限公司 一种Linux下NVME存储器的IO优化方法及***

Also Published As

Publication number Publication date
CN107818056B (zh) 2021-09-07
WO2018049899A1 (zh) 2018-03-22

Similar Documents

Publication Publication Date Title
CN107818056A (zh) 一种队列管理方法及装置
EP3612942B1 (en) Queue management for direct memory access
CN109725829B (zh) 用于数据存储***的端到端QoS解决方案的***和方法
CN106547492B (zh) 一种nand闪存设备的操作指令调度方法及装置
DE602004012106T2 (de) Multikanal-DMA mit gemeinsamem FIFO-Puffer
US8893146B2 (en) Method and system of an I/O stack for controlling flows of workload specific I/O requests
DE102008022080B4 (de) Nachrichten-Warteschlangensystem für eine parallel integrierte Schaltkreisarchitektur und zugehöriges Betriebsverfahren
US20170177221A1 (en) Dynamic core allocation for consistent performance in a non-preemptive scheduling environment
CN103827842B (zh) 向控制器存储器空间写入消息
US20170293426A1 (en) Flow control for unaligned writes in network storage device
CN109558344B (zh) 一种适用于网络传输的dma传输方法及dma控制器
CN107223264A (zh) 一种渲染方法及装置
DE112013000601T5 (de) Techniken für die Befehlsbestätigung für den Zugriff auf ein Speichergerät durch einen entfernten Client
CN105446653B (zh) 一种数据合并方法和设备
CN101150485A (zh) 一种零拷贝缓冲区队列网络数据发送的管理方法
CN101150488A (zh) 一种零拷贝网络报文接收方法
CN106571978B (zh) 数据包捕获方法及装置
CN109408243A (zh) 一种基于rdma的数据处理方法、装置和介质
CN103955436A (zh) 一种数据处理装置和终端
CN107402902A (zh) 一种异构计算平台与基于异构计算平台的加速方法
DE102020114142A1 (de) Technologien für unterbrechungs-disassoziierte warteschlangenbildung für multi-warteschlangen-i/o-vorrichtungen
WO2016008338A1 (zh) 一种i/o请求处理方法及存储***
CN107632780A (zh) 一种基于分布式存储***的条带卷实现方法及其存储架构
CN109002286A (zh) 基于同步编程的数据异步处理方法及装置
CN113347238A (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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20200423

Address after: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Applicant after: HUAWEI TECHNOLOGIES Co.,Ltd.

Address before: 301, A building, room 3, building 301, foreshore Road, No. 310053, Binjiang District, Zhejiang, Hangzhou

Applicant before: Huawei Technologies Co.,Ltd.

GR01 Patent grant
GR01 Patent grant