CN107870820B - 在固态驱动器中提供服务质量 - Google Patents

在固态驱动器中提供服务质量 Download PDF

Info

Publication number
CN107870820B
CN107870820B CN201610847115.3A CN201610847115A CN107870820B CN 107870820 B CN107870820 B CN 107870820B CN 201610847115 A CN201610847115 A CN 201610847115A CN 107870820 B CN107870820 B CN 107870820B
Authority
CN
China
Prior art keywords
command queue
command
bandwidth
interval
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.)
Active
Application number
CN201610847115.3A
Other languages
English (en)
Other versions
CN107870820A (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
Priority to CN201610847115.3A priority Critical patent/CN107870820B/zh
Publication of CN107870820A publication Critical patent/CN107870820A/zh
Application granted granted Critical
Publication of CN107870820B publication Critical patent/CN107870820B/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

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)

Abstract

本发明提供一种处理IO命令的方法,包括:响应于定时器到时,从与所述定时器相关联的队列中取出一个IO命令进行处理。本发明的技术方案能够有效地调整IO命令队列的带宽,从而使其与处理负载相匹配。

Description

在固态驱动器中提供服务质量
技术领域
本发明涉及存储领域,更具体地,涉及根据处理负载来调整IO命令队列的带宽以提供服务质量的技术。
背景技术
图1以固态存储设备(Solid Storage Device,SSD)为例,展示了存储设备的框图。固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial AdvancedTechnologyAttachment,串行高级技术附件)、SCSI(Small Computer System Interface,小型计算机系统接口)、SAS(SerialAttached SCSI,串行连接SCSI)、IDE(IntegratedDrive Electronics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component Interconnect Express,PCIe,高速外围组件互联)、NVMe(NVMExpress,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个NVM(非易失存储器,Non-Volatile Memory)芯片105以及DRAM(Dynamic Random Access Memory,动态随机访问存储器)110。NAND闪存、相变存储器、FeRAM、MRAM等是常见的NVM。接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。控制部件104用于控制在接口103、NVM芯片105以及DRAM(Dynamic RandomAccess Memory,动态随机访问存储器)110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。可通过软件、硬件、固件或其组合的多种方式实现控制部件104。控制部件104可以是FPGA(Field-programmable gate array,现场可编程门阵列)、ASIC(Application SpecificIntegrated Circuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理IO命令。控制部件104还耦合到DRAM 110,并可访问DRAM 110的数据。在DRAM可存储FTL表和/或缓存的IO命令的数据。
控制部件104包括闪存接口控制器(或称为闪存通道控制器)。闪存接口控制器耦合到NVM芯片105,并以遵循NVM芯片105的接口协议的方式向NVM芯片105发出命令,以操作NVM芯片105,并接收从NVM芯片105输出的命令执行结果。NVM芯片105的接口协议包括“Toggle”、“ONFI”等公知的接口协议或标准。
存储器目标(Target)是NAND闪存封装内的共享芯片使能(CE,Chip Enable)信号的一个或多个逻辑单元(Logic Unit,也称为LUN)。NAND闪存封装内可包括一个或多个管芯(Die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而NAND闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。在可从http://www.micron.com/~/media/Documents/Products/Other%20Documents/ONFI3_0Gold.ashx获得的“Open NAND Flash Interface Specification(Revision 3.0)”中,提供了关于目标(target)、LUN、平面(Plane)的含义,其为现有技术的一部分结合于此。
存储介质上通常按页来存储和读取数据。而按块来擦除数据。块包含多个页。存储介质上的页(称为物理页)具有固定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。
在固态存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在现有技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。
存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL表是固态存储设备中的重要元数据。通常FTL表的数据项记录了固态存储设备中以数据页为单位的地址映射关系。
FTL表包括多个FTL表条目(或称表项)。在一个实施例中,每个FTL表条目中记录了一个逻辑页地址与一个物理页的对应关系。在另一个例子中,每个FTL表条目中记录了连续的多个逻辑页地址与连续的多个物理页的对应关系。在又一个实施例中,每个FTL表条目中记录了逻辑块地址与物理块地址的对应关系。在依然又一个实施例中,FTL表中记录逻辑块地址与物理块地址的映射关系,和/或逻辑页地址与物理页地址的映射关系。
设备之间通过队列交换命令或消息是常用的。命令发送方将命令插入提交队列尾部,命令接收方从队列尾部取出命令并处理,将处理结果插入到完成队列尾部,命令发送方从完成队列头部取出命令处理结果。通过队列交换命令,能够在发送方与接收方直接维护多个并发的命令,并且命令之间的处理速度不必一致。NVMe协议(参见“NVM ExpressRevision 1.2”,2014年11月3日,通过引用将其全文合并于本说明书)定义了主机(Host)与设备(Device)之间交换数据的命令与数据结构(如图1所示)。主机中维护多个队列,每个队列中可填充多个命令。主机与设备基于队列交换数据。主机将命令C填入提交队列,设备从提交队列中取得命令C,并按命令C的内容进行处理,将处理结果填入完成队列。主机从完成队列获取命令C的处理结果以知晓命令C的处理完成。
依据NVMe协议,在设备端维护多个队列的队首与队尾指针。主机与设备都会更新队首与队尾指针。主机向设备发送命令时,主机将命令插入提交队列的队尾,并更新队尾指针。设备端比较提交队列的队首指针与队尾指针,在二者不同时,确定队列中有待处理的命令。设备端从队列中取出命令后,更新队首指针。主机端基于队首指针与队尾指针,可确定队列中是否有空间容纳新的命令。
在软件组件之间、集成电路组件之间以及软件与硬件之间也使用队列交换消息或命令。
NVMe协议中还定义了命名空间NS(namespace)。大小为n的命名空间是具有从0到n-1的逻辑块地址的逻辑块集合。通过命名空间ID(Namespace ID)能够唯一标识命名空间。命名空间可以在主机/NVMe控制器之间共享。主机通过单一NVMe控制器能够访问不同命名空间。不同主机也可通过多个NVMe控制器访问相同的命名空间。
需要为命名空间提供QoS,那么需要为每个命名空间提供限流机制,以及为每个命名空间提供命令队列。
现有技术中采取了多种方式来调整IO命令队列的带宽,但是,现有技术中的带宽控制策略会导致带宽控制不精确,带宽控制抖动剧烈,在带宽较低时控制不精确,在带宽较高时控制不灵敏,以及I/O平均延迟较高等缺点。
发明内容
本发明的目的在于克服现有技术中带宽控制不精确,抖动剧烈,延迟较高等缺点。
根据本发明的第一方面,提供一种处理IO命令的方法,包括:响应于定时器到时,从与所述定时器相关联的队列中取出一个IO命令进行处理。
根据本发明的一个实施方式,其中:响应于第一定时器到时,从与第一定时器相关联的第一队列中取出一个IO命令进行处理;以及响应于第二定时器到时,从与第二定时器相关联的第二队列中取出一个IO命令进行处理。
根据本发明的一个实施方式,进一步包括:调整所述定时器的到时时间间隔以调整与定时器相关联的IO命令队列的实际带宽,从而使得:当负载为高时,降低IO命令队列的实际带宽;以及当负载为低时,增加IO命令队列的实际带宽。
根据本发明的一个实施方式,其中,调整与定时器相关联的IO命令队列的实际带宽包括:缩短定时器的时间间隔以增加实际带宽;或增加定时器的时间间隔以降低实际带宽。
根据本发明的一个实施方式,进一步包括:如果IO命令的平均处理延迟超过第一阈值,则确定负载为高,以及如果IO命令的平均处理延迟低于第二阈值,则确定负载为低。
根据本发明的一个实施方式,进一步包括确定IO命令处理负载,包括:如果指定时间内被处理的IO命令数量数量超过第三阈值,则确定所述负载为高;以及如果指定时间内被处理的IO命令数量低于第四阈值,则确定所述负载为低。
根据本发明的一个实施方式,其中,所述IO命令队列为多个,并且所述方法进一步包括:为每个IO命令队列设置上带宽BH和下带宽BL,以针对每个IO命令队列来形成第一区间,使得能够在所述第一区间之间调整所述每个IO命令队列的带宽,其中所述第一区间的大小等于所述上带宽减去所述下带宽BH-BL
根据本发明的一个实施方式,进一步包括:为每个IO命令队列设置底限带宽Bm,以针对每个IO命令队列来形成第二区间,使得能够在所述第二区间之间调整所述每个IO命令队列的带宽,其中所述第二区间大小等于所述下带宽减去所述底限带宽BL-Bm
根据本发明的一个实施方式,进一步包括:当所述负载为高时,增加与实际带宽处于所述第一区间的IO命令队列相关联的定时器的到时时间间隔;以及当所述负载为低时,降低与实际带宽处于所述第二区间的IO命令队列相关联的定时器的到时时间间隔。
根据本发明的一个实施方式,其中,若第一定时器的到时时间间隔小于与第一定时器相关联第一IO命令队列的IO命令的平均等待时间,不再降低第一定时器的到时时间间隔。
根据本发明的一个实施方式,进一步包括,当所述负载为高时:选择IO命令队列中实际带宽处于第一区间的多个IO命令队列形成第一IO命令队列组;确定第一IO命令队列组的每个IO命令队列的实际带宽同该IO命令队列的下带宽之差与该IO命令队列的第一区间大小的比值;选择所述比值大于第一指定阈值的IO命令队列以获得第一选定IO命令队列组N1;确定所述第一选定IO命令队列组N1中每个IO命令队列N1i的实际带宽B1i与下带宽B1Li的差B1i-B1Li,其中i大于等于1的整数,表示所述第一选定IO命令队列组N1中每个IO命令队列的索引;计算所述第一选定IO命令队列组N中所有IO命令队列的第一区间之和B1All;计算第一选定IO命令队列组N1中每个IO命令队列N1i第一幅度值A1i,所述第一幅度值A1i=(B1i-B1Li)*S1/B1All,其中,所述S1为第一指定步长;将所述第一选定IO命令队列组N1中每个IO命令队列N1i的实际带宽向下调整所述第一幅度值A1i
根据本发明的一个实施方式,进一步包括:当处理所述负载为高时,通过如下方式调整实际带宽:选择IO命令队列中实际带宽处于第二区间的多个IO命令队列形成第二IO命令队列组;确定第二IO命令队列组的每个IO命令队列的实际带宽同该IO命令队列的底限带宽之差与该IO命令队列的第二区间大小的第二比值;选择所述第二比值大于第二指定阈值的IO命令队列以获得第二选定IO命令队列组N2;确定所述第二选定IO命令队列组N2中每个IO命令队列N2i的实际带宽B2i与底限带宽B2mi的差B2i-B2mi,其中i是大于等于1的整数,表示所述第二选定IO命令队列组N2中每个IO命令队列的索引;计算所述第二选定IO命令队列组N2中所有IO命令队列的第二区间之和B2All;计算第二选定IO命令队列组N2中每个IO命令队列N2i第二幅度值A2i,所述第二幅度值A2i=(B2i-Bmi)*S2/B2All,其中,所述S2为第二预定步长;将所述第二选定IO命令队列组N2中每个IO命令队列N2i的实际带宽向下调整所述第二幅度值A2i
根据本发明的一个实施方式,进一步包括:当处理所述负载为低时,通过如下方式调整实际带宽:选择IO命令队列中实际带宽处于第一区间的多个IO命令队列形成第三IO命令队列组;确定第三IO命令队列组的每个IO命令队列的上带宽同该IO命令队列的实际带之差与该IO命令队列的第一区间大小的第三比值;选择所述第三比值大于第三指定阈值的IO命令队列以获得第三选定IO命令队列组N3;确定所述第三选定IO命令队列组N3中每个IO命令队列N3i的上带宽B3Hi与实际带宽B3i的差B3Hi-B3i,其中i是大于等于1的整数,表示所述第三选定IO命令队列组N3中每个IO命令队列的索引;计算所述第三选定IO命令队列组N3中所有IO命令队列的第一区间之和B3All;计算第三选定IO命令队列组N3中每个IO命令队列N3i第三幅度值A3i,所述第三幅度值A3i=(B3Hi-B3i)*S3/B3All,其中,所述S3为第三预定步长;将所述第三选定IO命令队列组N3中每个IO命令队列N3i的实际带宽向上调整所述第三幅度值A3i
根据本发明的一个实施方式,进一步包括:当处理所述负载为低时,通过如下方式调整实际带宽:选择IO命令队列中实际带宽处于第二区间的多个IO命令队列形成第四IO命令队列组;确定第四IO命令队列组的每个IO命令队列的下带宽同该IO命令队列的实际带之差与该IO命令队列的第二区间大小的第四比值;选择所述第四比值大于第四指定阈值的IO命令队列以获得第四选定IO命令队列组N4;确定所述第四选定IO命令队列组N4中每个IO命令队列N4i的下带宽B4Li与实际带宽B4i的差B4Li-B4i,其中i是大于等于1的整数,表示所述第四选定IO命令队列组N4中每个IO命令队列的索引;计算所述第四选定IO命令队列组N4中所有IO命令队列的第二区间之和B4All;计算第四选定IO命令队列组N4中每个IO命令队列N4i第四幅度值A4i,所述第四幅度值A4i=(B4Li-B4i)*S4/B4All,其中,所述S4为第四预定步长;将所述第四选定IO命令队列组N4中每个IO命令队列N4i的实际带宽向上调整所述第四幅度值A4i
根据本发明的一个实施方式,其中,所述IO命令队列同命名空间相关联。
根据本发明的一个实施方式,命令空间或IO命令队列具有优先级,其中,在增大定时器的到时时间间隔时,优先地增加同低优先级的命名空间或IO命令队列相关联的定时器的到时时间间隔;在降低定时器的到时时间间隔时,优先地降低同高优先级的命名空间或IO命令队列相关联的定时器的到时时间间隔。
根据本发明的第二方面,提供一种控制器,包括:一个或者多个处理器;存储器;存储在所述存储器中的程序,当被所述一个或者多个处理器执行时,所述程序使固态驱动器执行如上所述的方法。
根据本发明的第三方面,提供一种用于匹配IO命令处理负载的装置,包括:用于响应于定时器到时,从与所述定时器相关联的队列中取出一个IO命令进行处理的模块。
本发明的技术方案能够有效地调整IO命令队列的带宽,从而使其与处理负载相匹配。
附图说明
图1示出了存储设备的示例性框图;
图2示出了根据本发明一个示例性实施方式的示意图;
图3示出了根据本发明一个实施方式的IO命令队列的区间划分示意图;
图4示出了根据本发明一个实施方式的调整IO命令队列的带宽的流程图;
图5示出了根据本发明上述实施方式的调整IO命令队列的带宽的IO命令队列示意图;
图6示出了根据本发明另一个实施方式的调整IO命令队列的带宽的流程图;
图7示出了根据本发明上述实施方式的调整IO命令队列的带宽的IO命令队列示意图;
图8示出了根据本发明又一个实施方式的调整IO命令队列的带宽的流程图;
图9示出了根据本发明上述实施方式的调整IO命令队列的带宽的IO命令队列示意图;
图10示出了根据本发明再一个实施方式的调整IO命令队列的带宽的流程图;以及
图11示出了根据本发明上述实施方式的调整IO命令队列的带宽的IO命令队列示意图。
具体实施方式
下面结合附图对本发明的具体实施方式进行详细描述。需要理解的是,本公开中“第一”、“第二”仅用于指示对象,而并不用于限制数量和/或顺序。
图2示出了根据本发明一个示例性实施方式的示意图。如图2所示,固态存储设备的控制部件104可以从多个IO命令队列获取主机通过接口103发送给存储设备的IO命令。在图2中,由控制部件104提供多个队列。在另一个例子中,也可以由主机提供多个队列,而控制部件104从主机提供的多个队列中获取命令。
在图2中,以示例的方式展示了4个IO命令队列。根据本发明的一个实施方式,IO命令队列同命名空间(Name Space,简称NS)相关联。如图2所示,这四个IO命令队列分别是用于命名空间1(NS1)的IO命令队列Q1与IO命令队列Q2,以及用于命令空间2(NS2)的IO命令队列Q1与Q2。在NS1 Q1和NS1 Q2中的IO命令是访问NS1的IO命令,在NS2 Q1和NS2 Q2中的IO命令是访问NS2的IO命令。作为举例,Q1中的IO命令是读命令,而Q2中的IO命令是写命令。
需要理解的是,上面仅仅是出于示例的原因给出了4个IO命令队列和两个命名空间NS。本领域技术人员可以理解的是,本发明的范围并不局限于上述特定的数量。例如,这个四个IO命令队列可以处于同一个命名空间中,或者同一个命名空间可以包括更多个IO命令队列。
进一步如图2所示,控制部件104为每个IO命令队列提供定时器(T1-T4),并且响应于每次定时器到时,例如,1μs,从与到时的定时器对应的IO命令队列中取出1个IO命令进行处理。
根据本发明的优选实施方式,每个IO命令队列独占一个单独的定时器,并且当该定时器到时的时候,从IO命令队列中仅取出“1个”IO命令进行处理。例如,响应于定时器T1到时,从与定时器T1相关联的IO命令队列NS1 Q1中取出一个IO命令进行处理;以及响应于另一个定时器T4到时,从与定时器T4相关联的队列NS2 Q2中取出一个IO命令进行处理。
根据本发明的一个实施方式,当控制部件104(如图2所示)的负载不同时,通过调整定时器的到时时间间隔,从而调整与定时器相关联的IO命令队列的实际带宽,从而使其与控制部件104的负载相匹配。IO命令队列的带宽指单位时间内完成处理的该IO命令队列的IO命令的数据量。可选地,命名空间的带宽指指单位时间内完成处理的该命名空间的IO命令的数据量。
例如当控制部件104的负载较高时,则降低IO命令队列的实际带宽,从而缓解控制部件104的处理负担。而当控制部件104的负载较低时,意味着该控制部件104能够处理更多的任务,此时可以增加IO命令队列的实际带宽,从而可以向控制部件104分配更多的任务。
根据本发明的一个实施方式,调整与定时器相关联的IO命令队列的实际带宽包括:缩短定时器的时间间隔以增加实际带宽;或增加定时器的时间间隔以降低实际带宽。可以理解的是,缩短定时器的到时时间间隔,在一定的时间内将会有更多的IO命令要被处理,由此增加了带宽;而增加定时器的到时时间间隔,在一定的时间内将会有更少的IO命令要被处理,从而降低了带宽。
对定时器的到时间隔的调整可以用指定的步长,例如,在增大定时器的到时间隔时,每次使到时间隔增大10us;在减小定时器的到时间隔时,每次使时间间隔减小10us。这里仅仅是示例,其他的时间间隔也是可以的。
可以理解的是,这里所述的负载高或者负载低,可以是同指定阈值相比较的结果。以及本领域技术人员可以根据实际的情况和需求来调整负载高低的判断条件。当满足指定条件时,则认为负载为高,而不满足指定条件时,则认为负载为低。
下面讨论如何来确定控制部件104的负载。
根据本发明的一个实施方式,如果IO命令的平均处理延迟超过第一阈值,则确定负载为高;反之,如果IO命令的平均处理延迟低于第二阈值,则确定负载为低。
对IO命令的处理的延迟如果过大,则意味着控制部件104的负载较大,此时需要降低IO命令队列的带宽;而如果延迟较小,则意味着控制部件104的负载很低,此时可以增加IO命令队列的带宽。需要指出的是,上述的两个阈值,可以是相同的,也可以是不同的。二者相同时,则容易造成需要频繁地调整IO命令队列的带宽,但这种情况下对带宽的调整较为灵敏;二者不同时,那么,如果延迟处于两个阈值之间,则可以不调整IO命令队列的带宽,从而使带宽保持相对的稳定。
类似地,根据本发明的另一个实施方式,可以通过其他方式来确定IO命令处理负载。例如,如果指定时间内被处理的IO命令数量数量超过第三阈值,则确定所述负载为高;以及如果指定时间内被处理的IO命令数量低于第四阈值,则确定所述负载为低。
可以理解的是,指定时间内处理的IO命令数量越多,则意味着控制部件104的负载越大,而处理的IO命令数量越少,则意味着控制部件104的负载越小。同样,上述的第三阈值和第四阈值可以相同或者不同。当二者不同时,如果被处理的IO命令的数量处于第三阈值和第四阈值之间,则保持IO命令队列的带宽不变。
图3示出了根据本发明又一个实施方式的IO命令队列的区间划分示意图。
如图3所示,根据本发明的一个实施方式,为多个IO命令队列中的每个IO命令队列设置其各自的上带宽BH和下带宽BL。上带宽和下带宽确定的范围,本文中称为第一区间。需要理解的是,设置第一区间用于协助对带宽的调节,而并非需要确保IO命令队列的实际带宽处于第一区间中。在固态存储设备工作时,实际带宽可能会超过上带宽,也可能会超过下带宽。
进一步如图3所示,可选地,根据本发明的依然又一个实施方式,还为每个IO命令队列设置底限带宽Bm,以针对每个IO命令队列来形成第二区间,使得能够依据第二区间调整IO命令队列的带宽,其中第二区间大小等于下带宽减去底限带宽(BL-Bm)。
底限带宽Bm为每个IO命令队列保留基本IO命令处理能力,避免因带宽限制严重影响NS或IO命令队列的用户体验。
下面介绍依据第一区间和/或第二区间调整命令处理带宽的多个示例性实施方式。
实施例1
在本实施例中,当负载被确定为高时,增加与实际带宽处于第一区间的IO命令队列相关联的定时器的到时时间间隔。以及优选地,降低那些带宽较高的IO命令队列的带宽。
附加地或者可选地,当负载被确定为低时,降低与实际带宽处于第二区间的IO命令队列相关联的定时器的到时时间间隔。在此情况下,由于处于第二区间的IO命令队列的带宽实际上已经非常低了,因此适当地增加这些IO命令队列的带宽将有助于提高系统的性能。
进一步地,若某一定时器的到时时间间隔小于与该定时器相关联IO命令队列的IO命令的平均等待时间,则不再降低该定时器的到时时间间隔。这将有助于不会过度地提高某些定时器的到时时间间隔。
实施例2
图4示出了根据本发明一个实施方式的调整IO命令队列的带宽的流程图。
如图4所示,当负载为高时,需要降低IO命令队列的带宽。
在步骤S410,选择IO命令队列中实际带宽处于第一区间的多个IO命令队列形成第一IO命令队列组;
在步骤S420,确定第一IO命令队列组的每个IO命令队列的实际带宽同该IO命令队列的下带宽之差与该IO命令队列的第一区间大小的比值;
在步骤S430,选择比值大于第一指定阈值的IO命令队列以获得第一选定IO命令队列组N1;
在步骤S440,确定第一选定IO命令队列组N1中每个IO命令队列N1i的实际带宽B1i与下带宽B1Li的差B1i-B1Li,其中i大于等于1的整数,表示第一选定IO命令队列组N1中的IO命令队列的索引;
在步骤S450,计算第一选定IO命令队列组N中所有IO命令队列的第一区间的大小之和B1All
在步骤S460,计算第一选定IO命令队列组N1中每个IO命令队列N1i第一幅度值A1i,第一幅度值A1i=(B1i-B1Li)*S1/B1All,其中,S1为第一指定步长;以及,
在步骤S470,将第一选定IO命令队列组N1中每个IO命令队列N1i的实际带宽向下调整第一幅度值A1i。通过增加同IO命令队列N1i相关联的定时器的到时时间间隔来IO命令队列N1i的下调实际带宽。依据第一幅度值A1i确定定时器到时时间间隔增加的幅度。
上述的方法步骤针对的是负载较高,且IO命令队列的实际带宽处于第一区间的情形。可以理解的是,在此情况下,将需要降低相应IO命令队列的带宽,以匹配当前的处理负载。
图5示出了根据图4展示的实施方式的调整IO命令队列的带宽的IO命令队列示意图。
如图5所示,存在多个IO命令队列,为便于理解和描述,这些IO命令队列根据其所对应的命名空间分别为NS1 Q1、NS1 Q2、NS2 Q1、NS2 Q2、NS3 Q1以及NS3 Q2。选择实际带宽处于第一区间的IO命令队列。在图5的例子中,所有IO命令队列的实际带宽(由圆圈的位置指出)均处于第一区间。在这些IO命令队列中,计算每个IO命令队列的实际带宽与下带宽的差(BL)占第一区间的比例,例如,在图5中,对于IO命令队列NS1 Q1,实际带宽为B11,实际带宽与下带宽的差占第一区间的比例为A/B,其中A是实际带宽与下带宽的差,而B是上带宽与下带宽的差。对于IO命令队列NS2 Q1,实际带宽与下带宽的差占第一区间的比例为C/D。
在确定了IO命令队列实际带宽与下带宽的差占第一区间的比例之后,对这些比值进行排序,以找到占比较高的那些IO命令队列。在此,为便于描述,在实施例2中将占比高于指定阈值的那些IO命令队列表示为IO命令队列组N1。
然后,用IO命令队列组N1中每个IO命令队列的实际带宽与下带宽之差(B1i-B1Li)除以该IO命令队列组N1中所有IO命令队列的第一区间大小的总和B1All,得到IO命令队列组N1中每个IO命令队列的权重,即(B1i-B1Li)/B1All。例如(B11-B1L1)/B1All表示IO命令队列组N1中的第1个IO命令队列的权重,(B12-B1L2)/B1All表示IO命令队列组N1中的第2个IO命令队列的权重。以及i为指示IO命令队列组N1中的IO命令队列的索引,i的最大值为IO命令队列组N1中IO命令队列的数量。作为另一个例子,若IO命令组N1仅包括IO命令队列NS1 Q1和NS2Q1时,NS1 Q1的权重为A/(B+D)以及NS2 Q2的权重为C/(B+D)。
在获得权重之后,再乘以预设的步长S1,从而得到IO命令组N1中每个IO命令队列的带宽所需要向下调整的幅度。步长S1可以根据实际情况来指定,例如可以是10MB/s,15MB/s,20MB/s等。
可以理解的是,对IO命令队列的带宽调整可能是多次。例如,当IO命令队列经过调整之后,固态存储设备的负载依然较大,可以再次以上述方式对IO命令的带宽进行调整。
实施例3
图6示出了根据本发明另一个实施方式的调整IO命令队列的带宽的流程图。
如图6所示,当负载为高时,需要降低IO命令队列的带宽。
在步骤S610,选择IO命令队列中实际带宽处于第二区间的多个IO命令队列形成第二IO命令队列组;
在步骤S620,确定第二IO命令队列组的每个IO命令队列的实际带宽同该IO命令队列的底限带宽之差与该IO命令队列的第二区间大小的第二比值;
在步骤S630,选择第二比值大于第二指定阈值的IO命令队列以获得第二选定IO命令队列组N2;
在步骤S640,确定第二选定IO命令队列组N2中每个IO命令队列N2i的实际带宽B2i与底限带宽B2mi的差B2i-B2mi,其中i是大于等于1的整数,表示第二选定IO命令队列组N2中的IO命令队列的索引;
在步骤S650,计算第二选定IO命令队列组N2中所有IO命令队列的第二区间之和B2All
在步骤S660,计算第二选定IO命令队列组N2中每个IO命令队列N2i的第二幅度值A2i,第二幅度值A2i=(B2i-Bmi)*S2/B2All,其中S2为第二指定步长;
在步骤S670,将第二选定IO命令队列组N2中每个IO命令队列N2i的实际带宽向下调整第二幅度值A2i
上述的方法步骤主要针对的是负载较高,且IO命令队列的实际带宽处于第二区间的情形。可以理解的是,在此情况下,将需要降低相应IO命令队列的带宽,以匹配当前的处理负载。
图7示出了根据本发明上述实施方式的调整IO命令队列的带宽的IO命令队列示意图。
如图7所示,存在多个IO命令队列,为便于理解和描述,这些IO命令队列根据其所对应的命名空间分别为NS1 Q1、NS1 Q2、NS2 Q1、NS2 Q2、NS3 Q1以及NS3 Q2。选择实际带宽处于第二区间的IO命令队列。在图7的例子中,NS1Q1与NS2 Q2的实际带宽(由圆圈的位置指出)处于第二区间。在这些IO命令队列中,计算每个IO命令队列的实际带宽与底限带宽的差占第二区间的比例,例如,在图7中,对于IO命令队列NS1 Q1,实际带宽与底限带宽的差占第二区间的比例为A/B,对于IO命令队列NS2 Q2,实际带宽与底限带宽的差占第二区间的比例为C/D。
在确定了IO命令队列实际带宽与底限带宽占第二区间的比例之后,对这些比值进行排序,以找到占比较高的那些IO命令队列。在此,为便于描述,实施例3中将占比高于特定阈值的那些IO命令队列表示为IO命令队列组N2。
然后,用IO命令队列组N2中每个IO命令队列的实际带宽与下带宽之差(B2i-B2mi)除以IO命令队列组N2中所有IO命令队列的第二区间的总和B2All,从而得到IO命令队列组N2中每个IO命令队列的权重,即(B2i-B2mi)/B2All。例如(B21-B2L1)/B2All表示IO命令队列组N2中的第一个IO命令队列的权重,(B22-B2L2)/B2All表示IO命令队列组N2中第二个IO命令队列的权重。以及,i为指示IO命令队列组N2中的IO命令队列的索引,i的最大值为IO命令队列组N2中IO命令队列的数量。参看图7,IO命令组N2包括IO命令队列NS1 Q1和NS2 Q2,NS1 Q1的权重为A/(B+D)以及NS2 Q2的权重为C/(B+D)。
在获得权重之后,再乘以预设的步长S2,从而得到IO命令组N2中每个IO命令队列的带宽所需要向下调整的幅度。步长S2可以根据实际情况来设定,例如可以是10MB/s,15MB/s,20MB/s等。
可以理解的是,对IO命令队列的带宽调整可能是多次。例如,当某IO命令队列经过调整之后,固态存储设备的负载仍然较大,可以再次以上述方式对IO命令的带宽进行调整。
实施例4
图8示出了根据本发明又一个实施方式的调整IO命令队列的带宽的流程图。
如图8所示,当负载为低时,需要增加IO命令队列的带宽。
在步骤S810,选择IO命令队列中实际带宽处于第一区间的多个IO命令队列形成第三IO命令队列组;
在步骤S820,确定第三IO命令队列组的每个IO命令队列的上带宽同该IO命令队列的实际带宽之差与该IO命令队列的第一区间大小的第三比值;
在步骤S830,选择第三比值大于第三指定阈值的IO命令队列以获得第三选定IO命令队列组N3;
在步骤S840,确定第三选定IO命令队列组N3中每个IO命令队列N3i的上带宽B3Hi与实际带宽B3i的差B3Hi-B3i,其中i是大于等于1的整数,表示第三选定IO命令队列组N3中IO命令队列的索引;
在步骤S850,计算第三选定IO命令队列组N3中所有IO命令队列的第一区间之和B3All
在步骤S860,计算第三选定IO命令队列组N3中IO命令队列N3i第三幅度值A3i,第三幅度值A3i=(B3Hi-B3i)*S3/B3All,其中,所述S3为第三指定步长;
在步骤S870,将所述第三选定IO命令队列组N3中每个IO命令队列N3i的实际带宽向上调整所述第三幅度值A3i
图9示出了根据本发明上述实施方式的调整IO命令队列的带宽的IO命令队列示意图。
如图9所示,存在多个IO命令队列,为便于理解和描述,这些IO命令队列根据其所对应的命名空间分别为NS1 Q1、NS1 Q2、NS2 Q1、NS2 Q2、NS3 Q1以及NS3 Q2。选择实际带宽处于第一区间的IO命令队列。在图9的例子中,NS1Q1与NS2 Q2的实际带宽(由圆圈的位置指出)处于第一区间。在这些IO命令队列中,计算每个IO命令队列的实际带宽与上带宽的差的绝对值占第一区间的比例,例如,在图9中,对于IO命令队列NS1 Q1,实际带宽(B31)与上带宽的差的绝对值占第一区间的比例为A/B,对于IO命令队列NS2 Q2,实际带宽(B33)与上带宽的差的绝对值占第一区间的比例为C/D。
在确定了每个IO命令队列实际带宽与上带宽的差的绝对值占第一区间的比例之后,对这些比值进行排序,以找到占比较高的那些IO命令队列。在此,为便于描述,实施例4中将占比高于指定阈值的那些IO命令队列表示为第三IO命令队列组N3。
然后,用IO命令队列组N3中每个IO命令队列的上带宽与实际带宽之差(B3Hi-B3i)除以该IO命令队列组N3中所有IO命令队列的第一区间大小的总和B3All,从而得到IO命令队列组N3中每个IO命令队列的权重,即(B3Hi-B3i)/B3All。例如(B3H1-B31)/B3All表示IO命令队列组N3中第一个IO命令队列(NS1Q1)的权重,(B3H2-B32)/B3All表示IO命令队列组N3中第二个IO命令队列(NS2Q2)的权重。以及,i为指示IO命令队列组N3中的IO命令队列的索引,i的最大值为N3中IO命令队列的数量。参看图7,IO命令组N3包括IO命令队列NS1 Q1和NS2 Q2,NS1 Q1的权重为A/(B+D)以及NS2 Q2的权重为C/(B+D)。
在获得权重之后,再乘以指定的步长S3,从而得到IO命令队列组N3的每个IO命令队列的带宽所需要向上调整的幅度。该步长可以根据实际情况来指定,例如可以是10MB/s,15MB/s,20MB/s等。
可以理解的是,对某些IO命令队列的调整可能是多次。例如,当IO命令队列经过调整之后,固态存储设备的当前负载依然较低,可以再次以上述方式对IO命令队列的带宽进行调整。
实施例5
图10示出了根据本发明再一个实施方式的调整IO命令队列的带宽的流程图。
如图10所示,当负载为低时,需要增加IO命令队列的带宽。
在步骤S1010,选择IO命令队列中实际带宽处于第二区间的多个IO命令队列形成第四IO命令队列组;
在步骤S1020,确定第四IO命令队列组的每个IO命令队列的下带宽同该IO命令队列的实际带宽之差与该IO命令队列的第二区间大小的第四比值;
在步骤S1030,选择第四比值大于第四指定阈值的IO命令队列以获得第四选定IO命令队列组N4;
在步骤S1040,确定第四选定IO命令队列组N4中每个IO命令队列N4i的下带宽B4Li与实际带宽B4i的差B4Li-B4i,其中i是大于等于1的整数,表示第四选定IO命令队列组N4中的IO命令队列的索引;
在步骤S1050,计算第四选定IO命令队列组N4中所有IO命令队列的第二区间之和B4All
在步骤S1060,计算第四选定IO命令队列组N4中每个IO命令队列N4i第四幅度值A4i,第四幅度值A4i=(B4Li-B4i)*S4/B4All,其中,S4为第四指定步长;
在步骤S1070,将第四选定IO命令队列组N4中IO命令队列N4i的实际带宽向上调整第四幅度值A4i
图11示出了根据本发明上述实施方式的调整IO命令队列的带宽的IO命令队列示意图。
如图11所示,存在多个IO命令队列,为便于理解和描述,这些IO命令队列根据其所对应的命名空间分别为NS1 Q1、NS1 Q2、NS2 Q1、NS2 Q2、NS3 Q1以及NS3 Q2。选择实际带宽处于第二区间的IO命令队列。在图11的例子中,NS1Q1与NS2 Q2的实际带宽(由圆圈的位置指出)处于第二区间。在这些IO命令队列中,计算每个IO命令队列的下带宽与实际带宽的差与占第二区间的比例,例如,在图11中,对于IO命令队列NS1 Q1,下带宽与实际带宽的差与占第二区间的比例为A/B,对于IO命令队列NS2 Q2,下带宽与实际带宽的差与占第二区间的比例为C/D。
在确定了IO命令队列的下带宽与实际带宽的差与占第二区间的比例之后,对这些比值进行排序,以找到占比较高的那些IO命令队列。在此,为便于描述,在实施例5中将占比高于指定阈值的那些IO命令队列表示为第四IO命令队列组N4。
然后,用IO命令队列组N4中每个IO命令队列的下带宽与实际带宽之差(B4Li-B4i)除以该IO命令队列组N4中所有IO命令队列的第二区间大小的总和B4All,从而得到IO命令队列组N4中每个IO命令队列的权重,即(B4Li-B4i)/B4All。例如(B4L1-B41)/B4All表示IO命令组N4的第一个IO命令队列的权重,(B4L2-B42)/B4All表示IO命令组N4的第二个IO命令队列的权重。以及i为指示IO命令队列组N4中的IO命令队列的索引,i的最大值为IO命令组N4中的IO命令队列的数量。参看图11,IO命令组N3包括IO命令队列NS1 Q1和NS2Q2,IO命令队列NS1Q1的权重为A/(B+D)以及IO命令队列NS1 Q1的权重为C/(B+D)。
在获得该权重之后,再乘以指定的步长S4,从而得到IO命令组N4中每个IO命令队列的带宽所需要向上调整的幅度。该步长可以根据实际情况来设定,例如可以是10MB/s,15MB/s,20MB/s等。
可以理解的是,对IO命令队列的调整可能是多次。例如,当IO命令队列经过调整之后,固态存储设备的负载依然较低,可以再次以上述方式对IO命令的带宽进行调整。
上述实施例详细地描述了对IO命令队列的带宽进行调整,这些是根据IO命令队列的实际带宽的占比情况来调整的。
进一步地,IO命令队列具有优先级,在要增加带宽时,优先增加具有高优先级的IO命令队列的带宽,换言之,降低其定时器的到时时间间隔;而要降低带宽时,优先降低具有低优先级的IO命令队列的带宽,换言之,增加其定时器的到时时间间隔。
本发明的方法和装置可以以硬件、软件、固件以及上述中的任意组合来实现。硬件可以包括数字电路、模拟电路、数字信号处理器(DSP)、应用专用集成电路(ASIC)等。软件可以包括计算机可读程序,这些计算机可读程序在被计算机执行时,实现根据本发明实施例所提供的方法。
例如,本发明可以实施为控制器,该控制器可以包括:一个或者多个处理器;存储器;存储在所述存储器中的程序,当被所述一个或者多个处理器执行时,所述程序使所述固态存储设备执行根据本发明实施例所提供的方法。
本发明的软件还可以存储在计算机可读存储介质,例如硬盘,光盘等中,该计算机可读存储介质存储有程序,当所述程序被一个设备执行时,使得所述设备执行根据本发明实施例所提供的方法。
上面的描述仅仅是对本发明示例性而非穷尽式的描述,本领域技术人员可以对上述方法、设备、装置、模块等进行添加,删减、修改、替换等等,而并不脱离本发明的实质和保护范围。

Claims (10)

1.一种处理IO命令的方法,包括:
响应于定时器到时,从与所述定时器相关联的IO命令队列中取出一个IO命令进行处理;
调整所述定时器的到时时间间隔以调整与定时器相关联的IO命令队列的实际带宽,从而使得:
当负载为高时,降低IO命令队列的实际带宽;以及
当负载为低时,增加IO命令队列的实际带宽;
其中调整与定时器相关联的IO命令队列的实际带宽包括:
缩短定时器的时间间隔以增加实际带宽;或
增加定时器的时间间隔以降低实际带宽;
其中,所述IO命令队列为多个,并且所述方法进一步包括:
为每个IO命令队列设置上带宽BH和下带宽BL,以针对每个IO命令队列来形成第一区间,使得能够在所述第一区间之间调整所述每个IO命令队列的带宽,其中所述第一区间的大小等于所述上带宽减去所述下带宽BH-BL
为每个IO命令队列设置底限带宽Bm,以针对每个IO命令队列来形成第二区间,使得能够在所述第二区间之间调整所述每个IO命令队列的带宽,其中所述第二区间大小等于所述下带宽减去所述底限带宽BL-Bm
当所述负载为高时,增加与实际带宽处于所述第一区间的IO命令队列相关联的定时器的到时时间间隔;以及
当所述负载为低时,降低与实际带宽处于所述第二区间的IO命令队列相关联的定时器的到时时间间隔。
2.根据权利要求1所述的方法,其中:
响应于第一定时器到时,从与第一定时器相关联的第一队列中取出一个IO命令进行处理;以及
响应于第二定时器到时,从与第二定时器相关联的第二队列中取出一个IO命令进行处理。
3.根据权利要求1或2所述的方法,进一步包括:
如果IO命令的平均处理延迟超过第一阈值,则确定负载为高,以及
如果IO命令的平均处理延迟低于第二阈值,则确定负载为低。
4.根据权利要求1或2所述的方法,进一步包括确定IO命令处理负载,包括:
如果指定时间内被处理的IO命令数量超过第三阈值,则确定所述负载为高;以及
如果指定时间内被处理的IO命令数量低于第四阈值,则确定所述负载为低。
5.根据权利要求1所述的方法,进一步包括,当所述负载为高时:
选择IO命令队列中实际带宽处于第一区间的多个IO命令队列形成第一IO命令队列组;
确定第一IO命令队列组的每个IO命令队列的实际带宽同该IO命令队列的下带宽之差与该IO命令队列的第一区间大小的比值;
选择所述比值大于第一指定阈值的IO命令队列以获得第一选定IO命令队列组N;
确定所述第一选定IO命令队列组N1中每个IO命令队列N1i的实际带宽B1i与下带宽B1Li的差B1i-B1Li,其中i大于等于1的整数,表示所述第一选定IO命令队列组N1中每个IO命令队列的索引;
计算所述第一选定IO命令队列组N中所有IO命令队列的第一区间之和B1All
计算第一选定IO命令队列组N1中每个IO命令队列N1i第一幅度值A1i,所述第一幅度值A1i=(B1i-B1Li)*S1/B1All,其中,所述S1为第一指定步长;
将所述第一选定IO命令队列组N1中每个IO命令队列N1i的实际带宽向下调整所述第一幅度值A1i
6.根据权利要求1所述的方法,进一步包括,当处理所述负载为高时,通过如下方式调整实际带宽:
选择IO命令队列中实际带宽处于第二区间的多个IO命令队列形成第二IO命令队列组;
确定第二IO命令队列组的每个IO命令队列的实际带宽同该IO命令队列的底限带宽之差与该IO命令队列的第二区间大小的第二比值;
选择所述第二比值大于第二指定阈值的IO命令队列以获得第二选定IO命令队列组N2;
确定所述第二选定IO命令队列组N2中每个IO命令队列N2i的实际带宽B2i与底限带宽B2mi的差B2i-B2mi,其中i是大于等于1的整数,表示所述第二选定IO命令队列组N2中每个IO命令队列的索引;
计算所述第二选定IO命令队列组N2中所有IO命令队列的第二区间之和B2All
计算第二选定IO命令队列组N2中每个IO命令队列N2i第二幅度值A2i,所述第二幅度值A2i=(B2i-Bmi)*S2/B2All,其中,所述S2为第二预定步长;
将所述第二选定IO命令队列组N2中每个IO命令队列N2i的实际带宽向下调整所述第二幅度值A2i
7.根据权利要求1所述的方法,进一步包括,当处理所述负载为低时,通过如下方式调整实际带宽:
选择IO命令队列中实际带宽处于第一区间的多个IO命令队列形成第三IO命令队列组;
确定第三IO命令队列组的每个IO命令队列的上带宽同该IO命令队列的实际带之差与该IO命令队列的第一区间大小的第三比值;
选择所述第三比值大于第三指定阈值的IO命令队列以获得第三选定IO命令队列组N3;
确定所述第三选定IO命令队列组N3中每个IO命令队列N3i的上带宽B3Hi与实际带宽B3i的差B3Hi-B3i,其中i是大于等于1的整数,表示所述第三选定IO命令队列组N3中每个IO命令队列的索引;
计算所述第三选定IO命令队列组N3中所有IO命令队列的第一区间之和B3All
计算第三选定IO命令队列组N3中每个IO命令队列N3i第三幅度值A3i,所述第三幅度值A3i=(B3Hi-B3i)*S3/B3All,其中,所述S3为第三预定步长;
将所述第三选定IO命令队列组N3中每个IO命令队列N3i的实际带宽向上调整所述第三幅度值A3i
8.根据权利要求1所述的方法,进一步包括:当处理所述负载为低时,通过如下方式调整实际带宽:
选择IO命令队列中实际带宽处于第二区间的多个IO命令队列形成第四IO命令队列组;
确定第四IO命令队列组的每个IO命令队列的下带宽同该IO命令队列的实际带之差与该IO命令队列的第二区间大小的第四比值;
选择所述第四比值大于第四指定阈值的IO命令队列以获得第四选定IO命令队列组N4;
确定所述第四选定IO命令队列组N4中每个IO命令队列N4i的下带宽B4Li与实际带宽B4i的差B4Li-B4i,其中i是大于等于1的整数,表示所述第四选定IO命令队列组N4中每个IO命令队列的索引;
计算所述第四选定IO命令队列组N4中所有IO命令队列的第二区间之和B4All
计算第四选定IO命令队列组N4中每个IO命令队列N4i第四幅度值A4i,所述第四幅度值A4i=(B4Li-B4i)*S4/B4All,其中,所述S4为第四预定步长;
将所述第四选定IO命令队列组N4中每个IO命令队列N4i的实际带宽向上调整所述第四幅度值A4i
9.一种控制器,包括:
一个或者多个处理器;
存储器;
存储在所述存储器中的程序,当被所述一个或者多个处理器执行时,所述程序使固态驱动器执行如权利要求1-8中任意一项所述的方法。
10.一种用于匹配IO命令处理负载的装置,包括:
用于响应于定时器到时,从与所述定时器相关联的IO命令队列中取出一个IO命令进行处理的模块;
调整所述定时器的到时时间间隔以调整与定时器相关联的IO命令队列的实际带宽,从而使得:
当负载为高时,降低IO命令队列的实际带宽;以及
当负载为低时,增加IO命令队列的实际带宽;
其中调整与定时器相关联的IO命令队列的实际带宽包括:
缩短定时器的时间间隔以增加实际带宽;或
增加定时器的时间间隔以降低实际带宽;
其中,所述IO命令队列为多个,并且所述装置进一步执行:
为每个IO命令队列设置上带宽BH和下带宽BL,以针对每个IO命令队列来形成第一区间,使得能够在所述第一区间之间调整所述每个IO命令队列的带宽,其中所述第一区间的大小等于所述上带宽减去所述下带宽BH-BL
为每个IO命令队列设置底限带宽Bm,以针对每个IO命令队列来形成第二区间,使得能够在所述第二区间之间调整所述每个IO命令队列的带宽,其中所述第二区间大小等于所述下带宽减去所述底限带宽BL-Bm
当所述负载为高时,增加与实际带宽处于所述第一区间的IO命令队列相关联的定时器的到时时间间隔;以及
当所述负载为低时,降低与实际带宽处于所述第二区间的IO命令队列相关联的定时器的到时时间间隔。
CN201610847115.3A 2016-09-23 2016-09-23 在固态驱动器中提供服务质量 Active CN107870820B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610847115.3A CN107870820B (zh) 2016-09-23 2016-09-23 在固态驱动器中提供服务质量

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610847115.3A CN107870820B (zh) 2016-09-23 2016-09-23 在固态驱动器中提供服务质量

Publications (2)

Publication Number Publication Date
CN107870820A CN107870820A (zh) 2018-04-03
CN107870820B true CN107870820B (zh) 2023-10-13

Family

ID=61751678

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610847115.3A Active CN107870820B (zh) 2016-09-23 2016-09-23 在固态驱动器中提供服务质量

Country Status (1)

Country Link
CN (1) CN107870820B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108696447A (zh) * 2018-08-03 2018-10-23 中国航空工业集团公司雷华电子技术研究所 一种自适应调节dsp间数据流负载的方法
US10635355B1 (en) 2018-11-13 2020-04-28 Western Digital Technologies, Inc. Bandwidth limiting in solid state drives

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7363451B2 (en) * 2005-10-11 2008-04-22 Lsi Logic Corporation Load balancing of disk drives
CN100471176C (zh) * 2006-09-12 2009-03-18 华为技术有限公司 队列调度方法及装置
US8923157B2 (en) * 2007-11-05 2014-12-30 Qualcomm Incorporated Scheduling QOS flows in broadband wireless communication systems
US8090903B2 (en) * 2008-01-18 2012-01-03 Microsoft Corporation Fair and dynamic disk input/output bandwidth distribution
CN103049215B (zh) * 2012-12-07 2015-11-25 记忆科技(深圳)有限公司 Io命令处理的方法及其固态硬盘

Also Published As

Publication number Publication date
CN107870820A (zh) 2018-04-03

Similar Documents

Publication Publication Date Title
US20200089537A1 (en) Apparatus and method for bandwidth allocation and quality of service management in a storage device shared by multiple tenants
US9639280B2 (en) Ordering memory commands in a computer system
TWI627536B (zh) 用於具有調適分割之一共用快取之系統及方法
US9009397B1 (en) Storage processor managing solid state disk array
US10156994B2 (en) Methods and systems to reduce SSD IO latency
CN107885456A (zh) 减少io命令访问nvm的冲突
JP5922740B2 (ja) メモリデバイスのための装置、メモリデバイスおよびメモリデバイスの制御のための方法
EP3477461A1 (en) Devices and methods for data storage management
US10346039B2 (en) Memory system
US10860225B2 (en) Apparatus and method for routing access based on device load
US9524244B2 (en) Write cache destaging
JP7449063B2 (ja) メモリシステム及びメモリシステムの動作方法
US20180365079A1 (en) Cooperative data migration for storage media
US10310923B1 (en) Probabilistic aging command sorting
WO2015021919A1 (zh) 用于多种存储器间的数据存储调度方法以及装置
CN107870820B (zh) 在固态驱动器中提供服务质量
US9817583B2 (en) Storage system and method for allocating virtual volumes based on access frequency
US9811380B1 (en) Dynamic allocation of CPU resources based on system load trends
JP2013539111A (ja) キャッシングに対応したストレージ装置上における効率的なシーケンシャルロギングのためのシステム及び方法
US10733118B2 (en) Computer system, communication device, and storage control method with DMA transfer of data
US10346070B2 (en) Storage control apparatus and storage control method
KR20240015605A (ko) 데이터 저장 방법 및 데이터 저장 장치
CN107885667A (zh) 降低读命令处理延迟的方法与装置
US20190138465A1 (en) Method to reduce write responses to improve bandwidth and efficiency
CN115328402A (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
CB02 Change of applicant information
CB02 Change of applicant information

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

Applicant after: Beijing yihengchuangyuan Technology Co.,Ltd.

Address before: 100192 room A302 / 303 / 305 / 306 / 307, 3rd floor, B-2, Zhongguancun Dongsheng Science Park, 66 xixiaokou Road, Haidian District, Beijing

Applicant before: BEIJING MEMBLAZE TECHNOLOGY Co.,Ltd.

GR01 Patent grant
GR01 Patent grant