CN107346265A - 实现QoS的方法与装置 - Google Patents

实现QoS的方法与装置 Download PDF

Info

Publication number
CN107346265A
CN107346265A CN201610514453.5A CN201610514453A CN107346265A CN 107346265 A CN107346265 A CN 107346265A CN 201610514453 A CN201610514453 A CN 201610514453A CN 107346265 A CN107346265 A CN 107346265A
Authority
CN
China
Prior art keywords
namespace
quota
command
message
queue
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
CN201610514453.5A
Other languages
English (en)
Other versions
CN107346265B (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.)
Beijing Memblaze Technology Co Ltd
Original Assignee
Beijing Memblaze Technology 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 Beijing Memblaze Technology Co Ltd filed Critical Beijing Memblaze Technology Co Ltd
Publication of CN107346265A publication Critical patent/CN107346265A/zh
Application granted granted Critical
Publication of CN107346265B publication Critical patent/CN107346265B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

提供实现QoS的方法与装置。在处理IO命令中实现QoS。处理IO命令的方法,包括:响应于将第一IO命令填充到提交队列,减少用于第一命名空间的配额,其中所述第一IO命令对应第一命名空间;响应于从完成队列中获取指示第二IO命令完成的消息,增加用于第二命名空间的配额,其中所述第二IO命令对应于第二命名空间,以及所述第二IO命令携带了指示配额的标记。

Description

实现QoS的方法与装置
技术领域
本发明涉及用于处理NVMe命令的生成与处理,特别地,涉及在多个NMVe空间上提供服务质量(QoS,Quality of Service)。
背景技术
设备之间通过队列交换命令或消息是常用的。命令发送方将命令***提交队列尾部,命令接收方从队列尾部取出命令并处理,将处理结果***到完成队列尾部,命令发送方从完成队列头部取出命令处理结果。通过队列交换命令,能够在发送方与接收方直接维护多个并发的命令,并且命令之间的处理速度不必一致。NVMe协议(参见“NVM ExpressRevision 1.2”,2014年11月3日,通过引用将其全文合并于本说明书)定义了主机(Host)与设备(Device)之间交换数据的命令与数据结构(如图1所示)。主机中维护多个队列,每个队列中可填充多个命令。主机与设备基于队列交换数据。主机将命令C填入提交队列,设备从提交队列中取得命令C,并按命令C的内容进行处理,将处理结果填入完成队列。主机从完成队列获取命令C的处理结果以知晓命令C的处理完成。
依据NVMe协议,在设备端维护多个队列的队首与队尾指针。主机与设备都会更新队首与队尾指针。主机向设备发送命令时,主机将命令***提交队列的队尾,并更新队尾指针。设备端比较提交队列的队首指针与队尾指针,在二者不同时,确定队列中有待处理的命令。设备端从队列中取出命令后,更新队首指针。主机端基于队首指针与队尾指针,可确定队列中是否有空间容纳新的命令。
在软件组件之间、集成电路组件之间以及软件与硬件之间也使用队列交换消息或命令。
NVMe协议中还定义了命名空间(namespace)。大小为n的命名空间是具有从0到n-1的逻辑块地址的逻辑块集合。通过命名空间ID(Namespace ID)能够唯一标识命名空间。命名空间可以在主机/NVMe控制器之间共享。主机通过单一NVMe控制器能够访问不同命名空间。不同主机也可通过多个NVMe控制器访问相同的命名空间。
发明内容
需要为命名空间提供QoS,那么需要为每个命名空间提供限流机制,以及为每个命名空间提供等待队列。已经意识到内存资源在CPU核之间的竞争将严重影响主机的性能,因而倾向于在CPU核与内存资源之间实施绑定。在提供32个命令空间与32个主机CPU核的NVMe***中,需要提供32*32(1024)个NVMe提交队列来满足CPU核绑定以及为命名空间提供限流的需求。而提供1024个提交队列需要消耗大量的控制器资源。
根据本发明的第一方面,提供了根据本发明第一方面的第一处理IO命令的方法,包括:响应于将第一IO命令填充到提交队列,减少用于第一命名空间的配额,其中所述第一IO命令对应第一命名空间;响应于从完成队列中获取指示第二IO命令完成的消息,增加用于第二命名空间的配额,其中所述第二IO命令对应于第二命名空间,以及所述第二IO命令携带了指示配额的标记。
根据本发明第一方面的第一处理IO命令的方法,提供了根据本发明第一方面的第二处理IO命令的方法,还包括:若用于第一命名空间的配额不足,将对应于第一命名空间的IO命令***第一等待队列,而不填充到提交队列。
根据本发明第一方面的第一或第二处理IO命令的方法,提供了根据本发明第一方面的第三处理IO命令的方法,还包括:响应于从完成队列获取指示第三IO命令完成的消息,使用于第二空间的配额保持不变,其中所述第三IO命令对应于第二命名空间,以及所述第三IO命令未携带指示配额的标记或所述第三IO命令携带了指示配额为零的标记。
根据本发明第一方面的第一至第三处理IO命令的方法之一,提供了根据本发明第一方面的第四处理IO命令的方法,还包括:响应于从完成队列获取空消息,增加用于第二命名空间的配额,其中所述空消息指示了第二命名空间,且所述空消息不指示任何IO命令的完成。
根据本发明第一方面的第一至第四处理IO命令的方法之一,提供了根据本发明第一方面的第五处理IO命令的方法,还包括:若用于所述第一命名空间的配额充足,从第一等待队列中取出第四IO命令;将第四IO命令填充到提交队列,并减少用于第一命名空间的配额。
根据本发明第一方面的第一至第五处理IO命令的方法之一,提供了根据本发明第一方面的第六处理IO命令的方法,还包括:若第一等待队列为空,从IO请求队列中取出IO请求并生成第五IO命令;将第五IO命令填充到提交队列,减少用于第一命名空间的配额。
根据本发明第一方面的第一至第六处理IO命令的方法之一,提供了根据本发明第一方面的第七处理IO命令的方法,其中所述第一命名空间与所述第二命名空间共享配额。
根据本发明的第二方面,提供了根据本发明第二方面的第一处理IO命令的方法,包括:响应于处理用于第一命名空间的第一IO请求,分配用于第一命名空间的第一配额;基于第一IO请求生成指示所述第一配额的第一命令,并填充到提交队列;响应于从完成队列中获取指示第二命令完成的消息,释放用于第二命名空间的第二配额,其中指示第二命令完成的消息对应第二命名空间,以及指示第二命令完成的消息指示第二配额。
根据本发明的第二方面的第一处理IO命令的方法,提供了根据本发明第二方面的第二处理IO命令的方法,其中响应于分配第一命名空间的第一配额,以第一配额的值递减用于所述第一命名空间的配额;以及响应于释放用于第二命名空间的第二配额,以第二配额的值递增用于所述第二命名空间的配额。
根据本发明的第二方面的第一或第二处理IO命令的方法,提供了根据本发明第二方面的第三处理IO命令的方法,其中若分配用于第一命名空间的第一配额失败,将所述第一IO请求***用于第一命名空间的第一等待队列。
根据本发明的第二方面的第一至第三处理IO命令的方法之一,提供了根据本发明第二方面的第四处理IO命令的方法,其中若指示第二命令完成的消息指示第二配额为空,保持用于第二命名空间的配额不变。
根据本发明的第二方面的第一至第四处理IO命令的方法之一,提供了根据本发明第二方面的第五处理IO命令的方法,其中所述第一命令还包括第一标记,所述第一标记用于指示所述第一命令中携带了所述第一配额。
根据本发明的第二方面的第一至第五处理IO命令的方法之一,提供了根据本发明第二方面的第六处理IO命令的方法,其中所述指示第二命令完成的消息还包括第二标记,所述第二标记用于指示所述指示第二命令完成的消息中携带了所述第二配额。
根据本发明的第二方面的第一至第六处理IO命令的方法之一,提供了根据本发明第二方面的第七处理IO命令的方法,其中若所述指示第二命令完成的消息不包括第二标记,保持用于第二命名空间的配额不变。
根据本发明的第二方面的第一至第七处理IO命令的方法之一,提供了根据本发明第二方面的第八处理IO命令的方法,其中响应于从完成队列中获取空消息,释放用于第二命名空间的第三配额,其中所述空消息指示了第二命名空间与第三配额,且所述空消息不指示任何命令的完成。
根据本发明的第二方面的第一至第八处理IO命令的方法之一,提供了根据本发明第二方面的第九处理IO命令的方法,还包括:响应于处理用于第二命名空间的第二IO请求,分配用于第二命名空间的第一配额;基于第二IO请求生成指示所述第一配额的第三命令,并填充到提交队列;响应于从完成队列中获取指示第一命令完成的消息,释放用于第一命名空间的第一配额。
根据本发明的第二方面的第一至第九处理IO命令的方法之一,提供了根据本发明第二方面的第十处理IO命令的方法,其中所述第一命名空间与所述第二命名空间共享配额。
根据本发明的第三方面,提供了根据本发明第三方面的第一处理IO命令的方法,包括:从提交队列中获取第一IO命令,其中第一IO命令用于第一命名空间;为第一命名空间累积第一命令所指示的配额;生成指示第二IO命令完成的第一消息,在第一消息中设置指示用于第一命名空间的配额的标记,相应地减少为第一命名空间所累积的配额,将第二消息填充到完成队列。
根据本发明的第三方面的第一处理IO命令的方法,提供了根据本发明第三方面的第二处理IO命令的方法,还包括:生成空消息,并在所述空消息中设置指示配额的标记,将所述空消息填充到完成队列,相应地减少为第一命名空间所累积的配额;其中所述空消息用于第一命名空间,以及所述空消息不指示任何IO命令的完成。
根据本发明的第三方面的第一或第二处理IO命令的方法,提供了根据本发明第三方面的第三处理IO命令的方法,还包括:若对应于第一命名空间的QoS水平不低于第一阈值,生成指示第三IO命令完成的第二消息,在第二消息中设置指示配额的标记,所述指示配额的标记指示配额为零。
根据本发明的第三方面的第一至第三处理IO命令的方法之一,提供了根据本发明第三方面的第四处理IO命令的方法,还包括:生成指示第四IO命令完成的第三消息,在第三消息中设置指示配额的标记,所指示的配额大于所述第一命令所指示的配额,并相应地减少为第一命名空间所累积的配额。
根据本发明的第四方面,提供了根据本发明第四方面的第一处理IO命令的方法,包括:从提交队列中获取第一IO命令,其中第一IO命令用于第一命名空间;处理第一IO命令,并生成指示第一IO命令完成的第一消息;在第一消息中设置指示配额的标记,将第一消息填充到完成队列。
根据本发明的第四方面的第一处理IO命令的方法,提供了根据本发明第四方面的第二处理IO命令的方法,还包括:生成空消息,并在所述空消息中设置指示配额的标记,将所述空消息填充到完成队列;其中所述空消息用于第一命名空间,以及所述空消息不指示任何IO命令的完成。
根据本发明的第四方面的第一处理IO命令的方法,提供了根据本发明第四方面的第三处理IO命令的方法,其中所述指示配额的标记指示配额为零。
根据本发明的第四方面的第一至第三处理IO命令的方法之一,提供了根据本发明第四方面的第四处理IO命令的方法,其中若对应于第一命名空间的QoS水平低于第一阈值,依据第一命令所指示的配额在第一消息中设置指示配额的标记。
根据本发明的第四方面的第一至第四处理IO命令的方法之一,提供了根据本发明第四方面的第五处理IO命令的方法,其中若对应于第一命名空间的QoS水平不低于第一阈值,在第一消息中设置指示配额的标记,所述指示配额的标记指示配额为零。
根据本发明的第四方面的第五处理IO命令的方法,提供了根据本发明第四方面的第六处理IO命令的方法,其中若对应于第一命名空间的QoS水平不低于第一阈值,还为第一命名空间累积第一命令所指示的配额。
根据本发明的第四方面的第五处理IO命令的方法,提供了根据本发明第四方面的第七处理IO命令的方法,还包括:生成空消息,并在所述空消息中设置指示配额的标记,将所述空消息填充到完成队列,相应地减少为第一命名空间所累积的配额;其中所述空消息用于第一命名空间,及所述空消息不指示任何IO命令的完成。
根据本发明的第四方面的第一至第七处理IO命令的方法之一,提供了根据本发明第四方面的第八处理IO命令的方法,还包括:在第一消息中设置指示配额的标记,所指示的配额大于所述第一命令所指示的配额,并相应地减少为第一命名空间所累积的配额。
根据本发明的第四方面的第一至第八处理IO命令的方法之一,提供了根据本发明第四方面的第九处理IO命令的方法,还包括:获取第二IO命令,其中第二IO命令用于第一命名空间;处理第二IO命令,并生成指示第二IO命令完成的第二消息;判断第一命令空间的服务质量级别,在第二消息中设置指示配额的标记,将第一消息填充到完成队列。
根据本发明的第五方面,提供了一种处理IO命令的装置,包括:配额申请模块,用于响应于将第一IO命令填充到提交队列,减少用于第一命名空间的配额,其中所述第一IO命令对应第一命名空间;配额释放模块,用于响应于从完成队列中获取指示第二IO命令完成的消息,增加用于第二命名空间的配额,其中所述第二IO命令对应于第二命名空间,以及所述第二IO命令携带了指示配额的标记。
根据本发明的第六方面,提供了根据本发明第六方面的处理IO命令的装置,包括:配额分配模块,用于响应于处理用于第一命名空间的第一IO请求,分配用于第一命名空间的第一配额;命令提交模块,用于基于第一IO请求生成指示所述第一配额的第一命令,并填充到提交队列;配额释放模块,响应于从完成队列中获取指示第二命令完成的消息,释放用于第二命名空间的第二配额,其中指示第二命令完成的消息对应第二命名空间,以及指示第二命令完成的消息指示第二配额。
根据本发明的第七方面,一种处理IO命令的装置,包括:IO命令获取模块,用于获取第一IO命令,其中第一IO命令用于第一命名空间;配额累计模块,用于为第一命名空间累积第一命令所指示的配额;消息生成模块,用于生成指示第二IO命令完成的第一消息,在第一消息中设置指示用于第一命名空间的配额的标记,相应地减少为第一命名空间所累积的配额,将第二消息填充到完成队列。
根据本发明的第八方面,提供了根据本发明第八方面的处理IO命令的装置,包括:IO命令获取模块,用于从提交队列中获取第一IO命令,其中第一IO命令用于第一命名空间;IO命令处理模块,用于处理第一IO命令,并生成指示第一IO命令完成的第一消息;消息填充模块,用于在第一消息中设置指示配额的标记,将第一消息填充到完成队列。
附图说明
当连同附图阅读时,通过参考后面对示出性的实施例的详细描述,将最佳地理解本发明以及优选的使用模式和其进一步的目的和优点,其中附图包括:
图1示出了现有技术中主机与设备间通过队列交换命令的示意图;
图2示出了根据本发明实施例的NVMe***的框图;
图3A是根据本发明实施例的命名空间限流示意图;
图3B是根据本发明另一实施例的命名空间限流示意图;
图4A是根据本发明实施例的处理NVMe命令的流程图;以及
图4B是根据本发明实施例的处理指示NVMe命令完成消息的流程图。
具体实施方式
图2示出了现有技术中主机与设备间通过队列交换命令的示意图。在根据图2的实施例中,主机与设备根据NVMe协议而通过队列交换命令。在设备中包括支持NVMe协议的控制器。设备作为举例可以是支持NVMe协议的固态硬盘。
主机中包括多个应用(例如,应用1、应用2与应用3),通过NVMe协议定义的提交队列(SQ)向设备发出NVMe协议,以及从完成队列(CQ)中接收NVMe命令的处理结果。控制器提供多个命名空间。为了对每个命令空间提供QoS(服务质量,Quality of Service),在根据本发明的实施例中,还提供命名空间限流机制。命名空间限流机制可以实现为软件模块或中间层。在主机中,记录为每个命名空间提供的配额(202、204、206)。作为举例,配额是主机向每个命名空间能够发出的IO命令的数量。在初始化时,可以为每个命名空间分配相同的配额。或者,作为另一个例子,根据每个命令空间的不同属性,为每个命名空间分配配额。
应用发出的IO请求被命名空间限流模块转换为NVMe命令。在NVMe命令中携带了用于所访问的命名空间的配额。当主机中存在用于命名空间NS1的剩余配额,命名空间限流模块才发出访问命名空间NS1的NVMe命令,否则,将NVMe命令临时存储在主机中。
为实现命名空间限流,命令空间限流模块检查应用发出的IO请求,识别IO请求要访问的命令空间,并申请用于该命名空间的配额。例如,应用程序要访问命名空间NS1,命名空间限流模块检查主机中所记录的命名空间NS1的配额(202)的剩余值。若命名空间NS1的配额的剩余值(202)大于0,在生成的NVMe命令中设置配合(例如,配额值1),并将生成的NVMe命令填入提交队列,同时使主机中所记录的命名空间NS1的配额(202)递减(例如,减去在NVMe命令中标记的配额值,为1)。若命名空间NS1的配额(202)的剩余值为0,其指示命名空间NS1的配额已经耗尽,为实现QoS,暂时不向控制器(提交队列)发出访问命名空间NS1的NVMe命令。可选地,在主机中的命名空间限流模块中还提供队列来缓存因限流而暂时不能填充到提交队列的NVMe命令。在主机中提供缓存NVMe命令的队列(非提交队列)是有益的。在命名空间的QoS配额耗尽时,控制器很可能缺乏资源来处理访问该命名空间的更多的NVMe命令。这些NVMe命令若出现在提交队列中,由于得不到有效处理,而可能导致在控制器中的拥堵,甚至影响提交队列的处理速率,进而影响对访问其他命名空间的NVMe命令的处理(即使其他命名空间的QoS配额依然充足)。
在根据本发明的实施例中,限流是针对每个命名空间实施的。即使用于命名空间NS1的配额(202)被用尽,而用于命名空间NS2或NS3的配额(204、206)依然存在,那么应用访问命名空间NS2或NS3的IO请求依然会被填入提交队列。
NVMe命令处理完成时,控制器将指示NVMe命令处理完成的消息填入完成队列(CQ),并在消息中指示所归还的配额。主机的命名空间限流模块从完成队列中中取出消息,识别该消息所对应的命名空间(例如,NS1),并识别消息中是否携带了配额值。若消息中携带了配额值,更新命名空间NS1的配额(202)(例如,加1)。进一步地,命名空间NS1的配额大于0后,可为主机中缓存的用于命名空间NS1的NVMe命令分配配额,并填充到提交队列(SQ)。
在根据本发明的实施例中,主机通过配额提供对每个命名空间的QoS(通过命名空间限流),而控制器参与到命名空间限流中。控制器可检查或测量为每个命名空间提供的QoS,在需要限制例如命名空间NS1的QoS时,控制器截留用于命名空间NS1的配额。控制器在填充到完成队列(CQ)的消息中,可选择提供或不提供配额。控制器通过在完成队列消息中不提供配额,而将用于命名空间NS1的配合截留在控制器中。在此情况下,随着对命名空间NS1的访问,主机中命名空间NS1的配额的剩余值逐步降低,并且得不到恢复。当主机中的NS1配额耗尽,命名空间限流模块不再处理针对命名空间NS1的IO请求,从而实现对命名空间的限流。
需要指出的是,在控制器不实施截留的情况下,若主机与控制器的处理速率不匹配,也会由于在提交队列(SQ)、完成队列(CQ)以及设备(控制器)中缓存了太多未处理完成的NVMe命令,而使用于一个或多个命名空间的配额耗尽。而本发明实施例中,控制器实施截留,加速了命名空间配额耗尽的过程。
在根据本发明的实施例中,控制器填充到完成队列(CQ)的消息包括至少三种。(1)携带了配额,且指示了1条NVMe命令处理完成的消息。命名空间限流模块从完成队列(CQ)中获取此类消息时,相应更新对应于该NVMe命令的命名空间的配额,以完成配额的返还。可以由消息中的1比特、标志或数值来指示消息所携带的配额。在1个例子中,由1比特或标志所指示的配额值为单位值(例如1)。在另一个例子中,在消息中可返还大于1的配额值,并由消息中的数值指示所返还的配额值。(2)(作为另一种消息)未携带配额,且指示了1条NVMe命令处理完成的消息。通过发出此类消息,控制器实现对命名空间的配额的截留。命名空间限流模块从完成队列(CQ)中获取此类消息时,无需更新对应于该NVMe命令的命名空间的配额。为指示此类消息,可以是消息中不存在配额标志,或者存在无效的配额标志,或者存在配额指示,但指示的配额值为0。(3)(作为依然另一种消息)空消息。空消息不对应于任何已经提交的NVMe命令。空消息由控制器主动生成。空消息中携带配额,还指示了所针对的命名空间。空消息中携带的配额可以是单位配额(例如1),也可以是配额值。响应于从完成队列(CQ)取得空消息,命名空间限流模块用空消息所指示的配额值更新(例如增加)空消息所指示的命名空间在主机中的命名空间配额剩余值。其他的消息种类也是可行的,例如,在指示了1条NVMe命令处理完成的消息中,通过额外的比特指示返还配额所对应的命名空间。
在上面的例子中,配额是整数值(例如100),为发出1个NVMe命令,所需要的配额值为1。当NS1配额(202)大于0时,意味着命名空间NS1的配额充足,访问命名空间NS1的NVMe命令被分配配额值并填入提交队列(SQ)。若NS1配额(202)不大于0,意味着命名空间NS1的配额不足,访问命名空间NS1的NVMe命令被临时缓存,以等待配额。作为另一个例子,对于不同的NVMe命令,所需的配额数量是不同的。例如,访问更大数据量的NVMe命令需要更多的配额。作为举例,访问512字节数据的1条NVMe命令,需要的配额值为1,而访问4K字节数据的1条NVMe命令,需要的配额值为8。当NS1配额为1时,对于访问4K字节数据的NVMe命令,配额已不足,而仅能再发出1条访问512字节的NVMe命令。除了NVMe命令所访问的数据长度,NVMe命令的类型也影响其所需的配额。例如,擦除命令、修剪(Trim)命令比读命令需要更长的时间时间和/或更多的资源,为执行这些这些命令所需的配额也更多。作为另一个例子,主机可以调整发出1条NVMe命令所需的配额,和/或调整用于各个命名空间的配额。
可以理解的是,配额的具体数值或表现形式可以是多样的,并且本发明并非限制于此。
图3A是根据本发明实施例的命名空间限流示意图。图3A展示了某一时刻,通过NVMe协议交换数据的主机与设备中的多个NVMe命令的执行情况。主机中包括正在运行的应用1、应用2与应用3。主机中包括根据NVMe协议的提交队列(SQ)与完成队列(CQ)。主机中还包括根据本发明实施例的命名空间限流模块。命名空间限流模块接收来自应用程序的IO请求,并决定是否将IO命令填充到提交队列(SQ)。
设备中的控制器提供了3个命名空间(NS1、NS2与NS3)。主机中还记录为每个命名空间提供的配额(NS1配额302、NS2配额304与NS3配额306)。如图3A所示,当前命名空间NS1的配额值为15,命名空间NS2的配额值为20而命名空间NS3的配额值为0。在图3的例子中,命名空间NS1与命名空间NS2的配额相对于对这两个空间的IO请求是充足的,而命名空间NS3的配额是不足的,当前不能向命名空间NS3发出IO请求。主机中还为每个命名空间提供IO命令缓冲区(NS1等待列表312、NS2等待列表314与NS3等待列表316),用于在命名空间的配额不足时,临时存储针对配额不足的命名空间的IO命令。
继续参看图3A,当前在提交队列(SQ)中包括先后填充到提交队列的5个NVMe命令。CMD5-NS1(1)代表命令ID为CMD5的访问命名空间NS1的NVMe命令,并且携带的配额值为1;CMD4-NS3(1)代表命令ID为CMD4的访问命名空间NS3的NVMe命令,并且携带的配额值为1;CMD3-NS1(1)代表命令ID为CMD3的访问命名空间NS1的NVMe命令,并且携带的配额值为1。在图3A中,提交队列(SQ)的下方是队头,而上方是队尾,NVMe命令被从队尾***队列而从队头取出。
图3A的设备的控制器从提交队列(SQ)的队头取出NVMe命令,对NVMe命令进行处理,并将指示命令执行完成的消息填入完成队列(CQ)。控制器测量对于每个命名空间的服务质量,并对从提交队列(SQ)中取得的NVMe命令中的配额实施截留。在图3A中,控制器已经为命令空间NS1截留了值为4的配额,而为命名空间截留了值为18的配额。作为举例,控制器从提交队列(SQ)的队头取出NVMe命令CMD5-NS1(1)。控制器判断为命名空间NS1提供的服务质量已经超出了期望的水平,决定为命名空间NS1实施截留。为实施截留,控制器将NVMe命令CMD5-NS1(1)所携带的配额值保留在控制器内。在控制器内,记录为每个命名空间所截留的配额值。作为举例,用NVMe命令CMD5-NS1(1)所携带的配额值“1”来使控制器内所记录的用于命名空间NS1的配额值递增(加1)。
进一步地,为实施截留,控制器向完成队列(CQ)填入消息时,标记该消息未携带配额。作为举例,参看图3,消息CMD9-NS1(0)指示用于指示命令ID为CMD9的NVMe命令的处理完成的消息,命令ID为CMD9的NVMe命令访问的命令空间为NS1,而该消息中的“(0)”指示该消息未携带配额(换句话说,携带的配额值为0)。即,为对命名空间NS1实施截留,控制器从截留了在NVMe命令中携带的配额,而不将配额返还给主机。从而主机中用于命名空间NS1的配额随着对命名空间NS1的访问而逐步消耗,却得不到补充。在主机中用于命名空间NS1的配额耗尽后,主机不再向提交队列(SQ)发出访问命名空间NS1的NVMe命令。需要指出的是,携带配额的NVMe命令与返还配额的消息无需对应。在图3的例子中,NVMe命令CMD5-NS1(1)携带了用于命名空间NS1的配额,而消息CMD7-NS1(1)返还了用于命名空间NS1的配额,消息CMD7-NS1(1)是用于指示命令ID为CMD7的NVMe命令执行完成的消息,而并非用于指示命令ID为CMD5的NVMe命令执行完成的消息。
控制器可能判断不需要对命名空间NS1实施截留。在此情况下,控制器在用于指示访问命名空间NS1的NVMe命令执行完成的消息中,标记该消息携带了配额,以指示将配额值返还给主机。配额指示了控制器能够为每个命名空间同时处理的NVMe命令的数量(或者,考虑到NVMe命令之间的差异,配额对应于控制器为每个命名空间提供的同时处理NVMe命令的最大能力)。在一个实施方式中,控制器在添加到完成队列(CQ)的用于命名空间NS1的消息中标记配额,并使控制器中为命名空间NS1所记录的配额值递减。换句话说,控制器不会产生配额值,而是将从NVMe命令中截留的用于指定命令空间的配额值返还给主机。
继续参看图3A,在完成队列(CQ)的队尾是由0-(NS1)(1)指示的消息,其消息不对应于任何有效的NVMe命令,而是控制器产生的特殊消息(称为“空消息”)。在空消息中,指示命名空间(NS1)与返还的配额值(1)。通过向完成队列填充空消息,控制器主动向主机返还所截留的配额。在图3A的例子中,提交队列(SQ)中的NVMe命令携带的配额值均为1,而完成队列(CQ)中的消息中携带的配额值为1或0。由于NVMe命令与指示命令完成的消息相对应,在控制器实施了配额截留后,需要额外的消息来将配额返还给主机。为此目的,控制器生成空消息,并在空消息中指示命名空间与返还的配额值。在另一个实施方式中,NVMe命令和/或消息中携带的配额可具有不同值,从而通过修改配额值,可在消息中将所截留的配额返还给主机,而无需使用空消息。
在图3A的例子中,主机为每个命名空间提供配额,控制器为每个命名空间截留配额。而作为另一个例子,控制器在多个命名空间之间分享或“借用”配额。例如,控制器为命名空间NS1截留了值为20的配额,为命名空间NS2截留了值为10的配额。控制器可根据需要将为命名空间NS2截留的配额返还给命名空间NS1。可选地,控制器可生成额外的配额值并“借用”给命名空间(例如,NS1),使得主机发现控制器对命名空间NS1的服务质量等级(临时地)提升。在依然另一个例子中,多个命名空间共享配额。例如,命名空间NS1与命名空间NS2共享配额。在主机中,为命名空间NS1与命名空间NS2记录单一的命名空间配额。无论向提交队列(SQ)中填充访问命名空间NS1的NVMe命令还是访问命名空间NS2的NVMe命令,都使用该单一的命名空间配额。以及控制器可以知晓或不知晓命名空间NS1与命名空间NS2共享配额。在控制器知晓命名空间NS1与命名空间NS2共享配额的情况下,控制器为两个命名空间记录单一的配额截留值,并测量两个命名空间整体的服务质量等级。在在控制器不知晓命名空间NS1与命名空间NS2共享配额的情况下,控制器为两个命名空间各自记录的配额截留值,并测量两个命名空间各自的服务质量等级。
控制器控制是否为命名空间返还配额,以及返还配额的方式。在一个例子中,控制器测量各个命名空间的服务质量等级或水平。可以用一段时间内为某个命名空间提供服务的量(处理NVMe命令的数量,或为NVMe命令而使用的资源(例如,内存空间、CPU时间、数据传输带宽、能量等))来指示该命名空间的服务质量等级。各个命名空间具有服务质量阈值。控制器测量各个命名空间的服务质量等级,在某个命令空间(例如,NS1)的服务质量等级低于阈值时,不对命名空间NS1的配额实施截留,将访问命名空间NS1的NVMe命令中携带的配额,都通过对应于命名空间NS1的消息返还给主机,或者在每个对应于命名空间NS1的消息中都携带配额。在某个命令空间(例如,NS1)的服务质量等级高于或不低于阈值时,对命名空间NS1的配额实施截留,在在对应于命名空间NS1的消息中都不携带配额(或携带的配额值为0)。进一步地,在必要时,控制器通过向完成队列填充空消息来返还配额。例如,控制器检测到命名空间NS1的服务质量已经长时间低于阈值,而控制器中又存在为命名空间NS1截留的配额值,控制器通过空消息向主机返还用于命名空间NS1的配额值。在另一个例子中,提供低于前面的阈值的第二阈值,当控制器检测到命名空间NS1的服务质量已经低于第二阈值时,通过空消息向主机返还用于命名空间NS1的配额值。在依然另一个例子中,主机能够调整控制器中用于各个命名空间的服务质量的阈值和/或第二阈值和/或测量服务质量等级的策略。
在图3A的例子中,主机中命名空间NS1配额(15)(302)指示了命名空间NS1配额的剩余值为15,NS2配额(20)(304)指示了命名空间NS2配额的剩余值为20,而NS3配额(0)(306)指示了命名空间NS3配额的剩余值为0,即其配额已经耗尽。在此情况下,若再接收到对命名空间NS3的访问请求,命名空间限流模块根据对命名空间NS3的访问请求生成NVMe命令,并将其放入NS3等待列表(316)以临时存储该NVMe命令。若接收到对命名空间NS1或NS2的访问请求,由于命名空间NS1与NS2的配额充足,根据访问请求生成NVMe命令,在NVMe命令中标记所携带的配额,将NVMe命令填入提交队列(SQ),使主机中记录的命名空间NS1配额(302)与NS2配额(304)相应递减。
待命名空间NS3的配额充足后,命名空间限流模块再从NS3等待列表(316)中取出缓存的NVMe命令,在该NVMe命令中标记所携带的配额,并填入提交队列(SQ)。
图3B是根据本发明另一实施例的命名空间限流示意图。同图3A示出的实施例相比,图3的实施例还包括等待队列(322、324与326)。在图3的例子中,为每个命名空间提供一个与之对应的等待队列。等待队列322用于存储对命名空间NS1的IO请求,等待队列324用于存储对命名空间NS2的IO请求,等待队列326用于存储对命名空间NS3的IO请求。应用程序对命名空间的访问请求被填入等待队列。命名空间限流模块从等待队列中取出IO请求并进行处理。
命名空间限流模块可根据命名空间配额实施多种调度策略。例如,命名空间限流模块对各个命名空间实施轮转调度。命名空间限流模块检查命名空间NS1的配额是否充足(具有用于处理访问该命名空间的NVMe命令的配额值),在配额充足时,从等待队列322中取出IO请求,生成NVMe命令,填充到提交队列(SQ),在NVMe命令中设置配额,从NS1配额(302)中减去设置给NVMe命令的配额值(例如1)。接下来,命名空间限流模块依次对命名空间NS2与NS3的IO请求进行处理。
在根据本发明的另一实施例中,提供不同数量的等待队列,例如1个等待队列,其中包括访问各个命名空间的IO请求。命名空间限流模块从等待队列中取出IO请求,识别其访问的命名空间,检查所访问的命名空间的配额是否充足。在配额充足时,为该IO请求生成NVMe命令,填入提交队列(SQ),在NVMe命令中设置配额值,并从主机中记录的对应命名空间的配额值中减去设置给NVMe命令的配额值。在配额值不足时,为该IO请求生成NVMe命令,填入同命名空间对应的等待列表中。
在根据本发明的依然另一实施例中,命名空间限流模块在配额值充足时,(同等待队列322、324或326相比)优先从命名空间等待列表(312、314或316)中获取NVMe命令并填入提交队列(SQ)。
进一步地,等待队列(322、324与326)还同CPU核相绑定。使得对于一个等待队列,由同其绑定的特定CPU核处理对该等待队列的操作。
图4A是根据本发明实施例的处理NVMe命令的流程图。主机通过将NVMe命令填入提交队列来向设备发出NVMe命令。为获取NVMe命令,在图3A的例子中,主机的命名空间限流模块接收来自应用程序的对设备的访问请求。在图3B的例子中,命名空间限流模块从等待队列中获取对设备的访问请求。作为举例,对设备的访问请求访问第一命名空间(例如,NS1)。根据对存储设备的访问请求生成NVMe命令。在步骤410,命名空间限流模块检查第一命名空间的配额是否充足。例如,检查主机中记录的NS1配额(参看图3A,NS1配额302)是否大于0。若第一命名空间(NS1)的配额不足,将生成的NVMe命令填入用于第一命名空间空间的等待列表(参见图3A或3B,NS1等待列表312)(412)。在检测到命名空间NS1的配额充足时,可从NS1等待列表(312)中取出NVMe命令,并填入提交队列(SQ)。在步骤410,若第一命名空间(NS1)的配额重组,将生成的NVMe命令填入提交队列(SQ)(414)。在一个例子中,在该NVMe命令中设置标记,以指示该NVMe命令中携带了配额。一般地,NVMe命令中携带的配额的默认值为1。配额的默认值可以为其他值。在NVM命令中还可携带配额的其他值。在另一个例子中,访问指定命名空间的NVMe命令默认携带了配额,而无需由额外的标记来指示。在步骤416,更新主机中记录的NS1配额(图3A,NS1配额302)。例如,减少NS1配额302的值,减少的幅度相当于在NVMe命令中携带的配额值。
响应于在步骤401主机将NVMe命令填入提交队列(SQ),设备从提交队列中获取NVMe命令(420)。设备识别并截留NVMe命令中携带的配额(422)。在一个例子中,在NVMe命令中提供了配额标志时,设备从该NVMe命令中截留配额的默认值。在另一个例子中,在NVMe命令中提供了配额的值,设备从该NVMe命令中截留在该NVMe命令中提供的配额值。在依然另一个例子中,根据NVMe命令访问指定的命名空间,访问该命名空间NVMe命令默认携带配额,则设备截留配额的默认值。在设备中为每个命名空间记录所截留的配额值。响应于截留配额值,将所截留的配额值增加设备中为相应命名空间所记录的所截留的配额值。在步骤424,设备(的控制器)对NVMe命令进行处理。步骤422与步骤424的执行顺序不做限制,这两个步骤可以并行执行或以任意顺序执行。
图4B是根据本发明实施例的处理指示NVMe命令完成消息的流程图。设备针对在步骤424(参看图4A)中处理完成的NVMe命令生成消息,用于向主机指示对应的NVMe命令处理完成。在一个例子中,设备处理完成了用于访问第一命名空间(例如NS1)的NVMe命令,为该NVMe命令生成消息。在步骤450,设备的控制器检查在设备中记录的用于第一命名空间(NS1)的服务质量(QoS)等级是否低于阈值。若用于第一命名空间(NS1)的服务质量等级低于阈值,控制器在所生成消息中设置配额,以指示通过该消息,向主机返还用于第一命名空间(NS1)的配额(452)。在一个例子中,在消息中设置配额标志,以指示向第一命名空间(NS1)返回默认值的配额。在另一个例子中,在消息中设置配置值,以指示向第一命名空间(NS1)返回所设置的配额值。控制器还根据所返还的配额值来相应减少在设备中为第一命名空间(NS1)所截留的配额(454)。步骤452与步骤454的执行顺序不做限制,这两个步骤可以并行执行或以任意顺序执行。在步骤450,若用于第一命名空间(NS1)的服务质量等级不低于阈值,为指示主机限制对第一命名空间(NS1)的访问限流,控制器在所生成的消息中设置无效配额(456),以指示在该消息中未向主机返还配额。在一个例子中,在消息中设置无效的配额标志,以指示该消息中未携带配额。在另一个例子中,在消息中设置值为0的配额,以指示该消息中未携带配额。
主机从完成队列中获取消息(460)。主机(例如,命名空间限流模块)检查所获取的消息类型。若消息是对应已提交的NVMe命令的完成消息(462),还检查消息中是否携带了配额(463)。若消息中携带了配额,获取消息所对应的命名空间(消息所对应的NVMe命令所访问的命名空间),并将消息中携带的配额值归还给对应的命名空间(464)。例如,消息对应的命名空间是NS3,消息携带的配额值为1,则递增主机中记录的NS3配额(参看图3B,306)。若在步骤463判断消息中未携带配额或所携带的配额值为0,则无需修改对应命名空间的配额。
若判断消息是空消息(该消息不对应于任何有效的NVMe命令)(462、464),获取空消息所对应的命名空间以及消息所携带的配额值,并将配额值返还给对应的命名空间(466)。作为举例,在空消息中包括字段,用于指示空消息所对应的命名空间。
响应于在步骤464将配额归还给命名空间(例如,NS3),主机中记录的NS3配额(参看图3B,306)的值变得大于0,从而对命名空间NS3的限流被暂时取消,命名空间限流模块将访问命名空间S3的NVMe命令填充到提交队列(SQ)。返回参看图4A,在步骤410,检查发现第一命名空间(例如,NS3)的配额充足,从而将NVMe命令填入提交队列(414)。NVMe命令来自用于命名空间NS3等待列表(图3A或3B的NS3等待列表316),或者来自访问命名空间NS3的应用程序(图3A的应用1、应用2或应用3),或者等待队列(图3B的等待队列322、等待队列324或等待队列326)。
所属领域技术人员将意识到,除应用于根据NVMe协议交换数据的信息,根据本发明的实施例还可应用于其他基于提交队列与完成队列访问具有多个命名空间的设备的场合。
本发明实施例还提供一种包含程序代码的程序,当被载入主机CPU并在CPU中执行时,所述程序代码使所述CPU执行上面的由主机执行的方法。
本发明实施例还提供一种包括程序代码的程序,当被载入存储设备并在存储设备上执行时,所述程序使所述存储设备的处理器执行上面由设备执行的方法之一。
应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以分别由包括计算机程序指令的各种装置来实施。这些计算机程序指令可以加载到通用计算机、专用计算机或其他可编程数据控制设备上以产生机器,从而在计算机或其他可编程数据控制设备上执行的指令创建了用于实现一个或多个流程图框中指定的功能的装置。
这些计算机程序指令还可以存储在可以引导计算机或其他可编程数据控制设备的计算机可读存储器中从而以特定方式起作用,从而能够利用存储在计算机可读存储器中的指令来制造包括用于实现一个或多个流程图框中所指定功能的计算机可读指令的制品。计算机程序指令还可以加载到计算机或其他可编程数据控制设备上以使得在计算机或其他可编程数据控制设备上执行一系列的操作操作,从而产生计算机实现的过程,进而在计算机或其他可编程数据控制设备上执行的指令提供了用于实现一个或多个流程图框中所指定功能的操作。
因而,框图和流程图的框支持用于执行指定功能的装置的组合、用于执行指定功能的操作的组合和用于执行指定功能的程序指令装置的组合。还应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以由执行指定功能或操作的、基于硬件的专用计算机***实现,或由专用硬件和计算机指令的组合实现。
虽然当前发明参考的示例被描述,其只是为了解释的目的而不是对本发明的限制,对实施方式的改变,增加和/或删除可以被做出而不脱离本发明的范围。
这些实施方式所涉及的、从上面描述和相关联的附图中呈现的教导获益的领域中的技术人员将认识到这里记载的本发明的很多修改和其他实施方式。因此,应该理解,本发明不限于公开的具体实施方式,旨在将修改和其他实施方式包括在所附权利要求书的范围内。尽管在这里采用了特定的术语,但是仅在一般意义和描述意义上使用它们并且不是为了限制的目的而使用。

Claims (10)

1.一种处理IO命令的方法,包括:
响应于将第一IO命令填充到提交队列,减少用于第一命名空间的配额,其中所述第一IO命令对应第一命名空间;
响应于从完成队列中获取指示第二IO命令完成的消息,增加用于第二命名空间的配额,其中所述第二IO命令对应于第二命名空间,以及所述第二IO命令携带了指示配额的标记。
2.根据权利要求1所述的方法,还包括:
若用于第一命名空间的配额不足,将对应于第一命名空间的IO命令***第一等待队列,而不填充到提交队列。
3.根据权利要求1-2之一所述的方法,还包括:
响应于从完成队列获取指示第三IO命令完成的消息,使用于第二空间的配额保持不变,其中所述第三IO命令对应于第二命名空间,以及所述第三IO命令未携带指示配额的标记或所述第三IO命令携带了指示配额为零的标记。
4.根据权利要求1-3之一所述的方法,还包括:
响应于从完成队列获取空消息,增加用于第二命名空间的配额,其中所述空消息指示了第二命名空间,且所述空消息不指示任何IO命令的完成。
5.根据权利要求1-4之一所述的方法,还包括:
若用于所述第一命名空间的配额充足,从第一等待队列中取出第四IO命令;
将第四IO命令填充到提交队列,并减少用于第一命名空间的配额。
6.一种处理IO命令的方法,包括:
获取第一IO命令,其中第一IO命令用于第一命名空间;
为第一命名空间累积第一命令所指示的配额;
生成指示第二IO命令完成的第一消息,在第一消息中设置指示用于第一命名空间的配额的标记,相应地减少为第一命名空间所累积的配额,将第二消息填充到完成队列。
7.根据权利要求5所述的方法,还包括:
生成空消息,并在所述空消息中设置指示配额的标记,将所述空消息填充到完成队列,相应地减少为第一命名空间所累积的配额;其中所述空消息用于第一命名空间,以及所述空消息不指示任何IO命令的完成。
8.根据权利要求5-7之一所述的方法,还包括:
若对应于第一命名空间的QoS水平不低于第一阈值,生成指示第三IO命令完成的第二消息,在第二消息中设置指示配额的标记,所述指示配额的标记指示配额为零。
9.根据权利要求5-8之一所述的方法,还包括:
生成指示第四IO命令完成的第三消息,在第三消息中设置指示配额的标记,所指示的配额大于所述第一命令所指示的配额,并相应地减少为第一命名空间所累积的配额。
10.一种处理IO命令的装置,包括:
配额申请模块,用于响应于将第一IO命令填充到提交队列,减少用于第一命名空间的配额,其中所述第一IO命令对应第一命名空间;
配额释放模块,用于响应于从完成队列中获取指示第二IO命令完成的消息,增加用于第二命名空间的配额,其中所述第二IO命令对应于第二命名空间,以及所述第二IO命令携带了指示配额的标记。
CN201610514453.5A 2016-05-05 2016-06-30 实现QoS的方法与装置 Active CN107346265B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201610292857 2016-05-05
CN2016102928574 2016-05-05

Publications (2)

Publication Number Publication Date
CN107346265A true CN107346265A (zh) 2017-11-14
CN107346265B CN107346265B (zh) 2021-05-18

Family

ID=60253270

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610514453.5A Active CN107346265B (zh) 2016-05-05 2016-06-30 实现QoS的方法与装置

Country Status (1)

Country Link
CN (1) CN107346265B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108848037A (zh) * 2018-05-31 2018-11-20 平安医疗科技有限公司 业务请求处理方法、装置、计算机设备和存储介质
CN109388596A (zh) * 2018-09-29 2019-02-26 上海依图网络科技有限公司 一种数据操作方法和装置
CN111176553A (zh) * 2018-11-13 2020-05-19 西部数据技术公司 固态驱动器中的带宽限制
CN111381941A (zh) * 2018-12-27 2020-07-07 北京忆恒创源科技有限公司 并发任务处理***中提供QoS的方法与装置
US10866740B2 (en) 2018-10-01 2020-12-15 Western Digital Technologies, Inc. System and method for performance-based multiple namespace resource allocation in a memory

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020184446A1 (en) * 2001-04-11 2002-12-05 Michael Kagan Queue pair context cache
CN102263701A (zh) * 2011-08-19 2011-11-30 中兴通讯股份有限公司 队列调整方法及装置
CN102567089A (zh) * 2011-10-25 2012-07-11 曙光信息产业(北京)有限公司 一种分布式文件***中元数据服务器线程池的设计方法
US20140331001A1 (en) * 2013-05-02 2014-11-06 Lsi Corporation Command Barrier for a Solid State Drive Controller
CN104246742A (zh) * 2012-01-17 2014-12-24 英特尔公司 用于远程客户端访问存储设备的命令验证的技术
CN104301430A (zh) * 2014-10-29 2015-01-21 北京麓柏科技有限公司 软件定义存储***、方法及其集中控制设备
CN104407820A (zh) * 2014-12-12 2015-03-11 华为技术有限公司 基于固态硬盘存储***的数据处理方法、装置以及***
US20150186074A1 (en) * 2013-12-30 2015-07-02 Sandisk Technologies Inc. Storage Module and Method for Configuring Command Attributes
CN105335235A (zh) * 2015-11-24 2016-02-17 浪潮电子信息产业股份有限公司 一种基于IaaS模式的资源管理***及方法
CN105556930A (zh) * 2013-06-26 2016-05-04 科内克斯实验室公司 针对远程存储器访问的nvm express控制器

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020184446A1 (en) * 2001-04-11 2002-12-05 Michael Kagan Queue pair context cache
CN102263701A (zh) * 2011-08-19 2011-11-30 中兴通讯股份有限公司 队列调整方法及装置
CN102567089A (zh) * 2011-10-25 2012-07-11 曙光信息产业(北京)有限公司 一种分布式文件***中元数据服务器线程池的设计方法
CN104246742A (zh) * 2012-01-17 2014-12-24 英特尔公司 用于远程客户端访问存储设备的命令验证的技术
US20140331001A1 (en) * 2013-05-02 2014-11-06 Lsi Corporation Command Barrier for a Solid State Drive Controller
CN105556930A (zh) * 2013-06-26 2016-05-04 科内克斯实验室公司 针对远程存储器访问的nvm express控制器
US20150186074A1 (en) * 2013-12-30 2015-07-02 Sandisk Technologies Inc. Storage Module and Method for Configuring Command Attributes
CN104301430A (zh) * 2014-10-29 2015-01-21 北京麓柏科技有限公司 软件定义存储***、方法及其集中控制设备
CN104407820A (zh) * 2014-12-12 2015-03-11 华为技术有限公司 基于固态硬盘存储***的数据处理方法、装置以及***
CN105335235A (zh) * 2015-11-24 2016-02-17 浪潮电子信息产业股份有限公司 一种基于IaaS模式的资源管理***及方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108848037A (zh) * 2018-05-31 2018-11-20 平安医疗科技有限公司 业务请求处理方法、装置、计算机设备和存储介质
CN109388596A (zh) * 2018-09-29 2019-02-26 上海依图网络科技有限公司 一种数据操作方法和装置
CN109388596B (zh) * 2018-09-29 2019-12-31 上海依图网络科技有限公司 一种数据操作方法和装置
US10866740B2 (en) 2018-10-01 2020-12-15 Western Digital Technologies, Inc. System and method for performance-based multiple namespace resource allocation in a memory
CN111176553A (zh) * 2018-11-13 2020-05-19 西部数据技术公司 固态驱动器中的带宽限制
CN111176553B (zh) * 2018-11-13 2023-06-27 西部数据技术公司 固态驱动器中的带宽限制
CN111381941A (zh) * 2018-12-27 2020-07-07 北京忆恒创源科技有限公司 并发任务处理***中提供QoS的方法与装置

Also Published As

Publication number Publication date
CN107346265B (zh) 2021-05-18

Similar Documents

Publication Publication Date Title
CN107346265A (zh) 实现QoS的方法与装置
CN105718364B (zh) 一种云计算平台中计算资源能力动态评估方法
CN108153757A (zh) 一种哈希表管理的方法和装置
CN103282889A (zh) 用于数据储存***的端点高速缓存
CN109408590B (zh) 分布式数据库的扩容方法、装置、设备及存储介质
US8966217B2 (en) Lightweight random memory allocation
CN107451853A (zh) 一种红包实时派发的方法、装置、***及存储介质
CN103294609B (zh) 信息处理装置和存储器管理方法
CN109558250A (zh) 一种基于fpga的通信方法、设备、主机及异构加速***
CN107949837A (zh) 用于i/o数据包压缩的寄存器文件
CN108205469A (zh) 一种基于MapReduce的资源分配方法及服务器
CN106569874B (zh) 存储设备的操作方法及物理服务器
CN107341081A (zh) 测试***及方法
CN109542600B (zh) 分布式任务调度***及方法
DE112017001800T5 (de) Technologien für dynamisches arbeitswarteschlangenmanagement
CN103218322B (zh) 片上***、电子***以及操作其的方法
CN110187832A (zh) 一种数据操作的方法、设备和***
CN108228076A (zh) 访问磁盘的方法和主机
CN105354153B (zh) 一种紧耦合异构多处理器数据交换缓存的实现方法
JP6191695B2 (ja) 仮想リソース制御システムおよび仮想リソース制御方法
CN105320676A (zh) 一种客户数据查询服务方法及装置
US10678192B1 (en) Optimization of production systems
CN104216834B (zh) 一种内存访问的方法、缓冲调度器和内存模块
CN106209681A (zh) 一种队列管理方法和装置
CN113452546A (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
CP01 Change in the name or title of a patent holder

Address after: 100192 room A302, building B-2, Dongsheng Science Park, Zhongguancun, 66 xixiaokou Road, Haidian District, Beijing

Patentee after: Beijing yihengchuangyuan Technology Co.,Ltd.

Address before: 100192 room A302, building B-2, Dongsheng Science Park, Zhongguancun, 66 xixiaokou Road, Haidian District, Beijing

Patentee before: MEMBLAZE TECHNOLOGY (BEIJING) Co.,Ltd.

CP01 Change in the name or title of a patent holder