CN109844714A - 用于在存储系统中分配输入/输出带宽的系统和方法 - Google Patents

用于在存储系统中分配输入/输出带宽的系统和方法 Download PDF

Info

Publication number
CN109844714A
CN109844714A CN201780063255.4A CN201780063255A CN109844714A CN 109844714 A CN109844714 A CN 109844714A CN 201780063255 A CN201780063255 A CN 201780063255A CN 109844714 A CN109844714 A CN 109844714A
Authority
CN
China
Prior art keywords
input
output
application program
output operations
band width
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
CN201780063255.4A
Other languages
English (en)
Other versions
CN109844714B (zh
Inventor
S·保罗扎加德
P·瓦克哈雷
N·潘德哈克
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.)
China Ruitai Technology LLC
Original Assignee
China Ruitai Technology LLC
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 China Ruitai Technology LLC filed Critical China Ruitai Technology LLC
Publication of CN109844714A publication Critical patent/CN109844714A/zh
Application granted granted Critical
Publication of CN109844714B publication Critical patent/CN109844714B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0667Virtualisation aspects at data level, e.g. file, record or object virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/068Hybrid storage device

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

用于在存储系统中分配输入/输出带宽的所公开的计算机实现的方法可以包括:(1)根据预定义的服务等级协议将指派的输入/输出带宽量分配给应用程序,所述应用程序在存储系统上执行动作;(2)从所述应用程序接收对在所述存储系统上执行输入/输出操作的请求;(3)识别与履行所述输入/输出操作相关联的延迟量;(4)至少部分地基于与履行所述输入/输出操作相关联的所述延迟量来计算由所述输入/输出操作消耗的输入/输出带宽量;(5)从分配给所述应用程序的所述指派的输入/输出带宽量扣减由所述输入/输出操作消耗的所述输入/输出带宽量;以及(6)从分配给所述应用程序的所述剩余的输入/输出带宽量将带宽分配给来自所述应用程序的未来输入/输出请求。本发明还公开了各种其他方法、系统和计算机可读介质。

Description

用于在存储系统中分配输入/输出带宽的系统和方法
背景技术
数字存储系统为各种计算系统提供了集成服务。例如,企业可以运行存储系统来管理关键计算系统的备份映像。其他存储系统托管从数据库管理到内容托管的在各种在线活动中使用的数据库。较大的存储系统可以为许多不同的应用程序或实体托管和/或管理数据,通常基于系统容量、需求和/或适用服务等级协议利用各种服务质量系统在此类应用程序/实体之间分配存储系统带宽。
遗憾的是,传统服务质量系统通常仅基于所请求的操作的大小来估计在存储系统上执行输入/输出操作的“成本”。例如,传统服务质量系统通常假设64KB输入/输出操作的执行“成本”是32KB操作的两倍,因为64KB操作的大小是32KB操作的两倍。然而,因为操作的实际影响可能无法随其大小线性地缩放,所以传统服务质量系统可能浪费显著量的处理带宽。因此,本公开识别并解决了对用于在存储系统中分配输入/输出带宽的改进的系统和方法的需要。
发明内容
如下面将更详细地描述的,本公开描述了用于基于输入/输出操作的实际影响(例如,由其引起的延迟)而不是仅基于此类输入/输出操作的大小来在存储系统中分配输入/输出带宽的各种系统和方法。在一个示例中,用于执行这种任务的计算机实现的方法可以包括:(i)根据预定义的服务等级协议将指派的输入/输出带宽量分配给应用程序,应用程序在存储系统上执行动作;(ii)从应用程序接收对在存储系统上执行输入/输出操作的请求;(iii)识别与履行输入/输出操作相关联的延迟量;(iv)至少部分地基于与履行输入/输出操作相关联的延迟量来计算由输入/输出操作消耗的输入/输出带宽量;(v)从分配给应用程序的指派的输入/输出带宽量扣减由输入/输出操作消耗的输入/输出带宽量;以及(vi)从分配给应用程序的剩余的输入/输出带宽量将带宽分配给来自应用程序的未来输入/输出请求。
在一个示例中,识别与履行输入/输出操作相关联的延迟量可以包括测量完成输入/输出操作所花费的时间量。除此之外或另选地,识别与履行输入/输出操作相关联的延迟量可以包括至少部分地基于输入/输出操作的大小是否包括一组顺序输入/输出操作来计算估计的延迟量,估计的延迟量将由输入/输出操作引起。在一些实施方案中,计算估计的延迟量可以包括基于对类似于输入/输出操作的输入/输出操作的先前观察来计算估计的延迟量。
在一些示例中,从分配给应用程序的指派的输入/输出带宽量扣减的由输入/输出操作消耗的输入/输出带宽量可以与由输入/输出操作引起的延迟成比例,而不是仅与输入/输出操作的大小成比例。
在一些实施方案中,从应用程序接收请求可以包括接收对执行多个输入/输出操作的请求。在此类实施方案中,从应用程序接收请求可以包括将多个输入/输出操作视为单个输入/输出操作。例如,将输入/输出操作视为单个输入/输出操作可以包括计算由输入/输出操作消耗的总输入/输出带宽量并扣减由输入/输出操作消耗的总输入/输出带宽量。
所公开的计算机实现的方法可以接收对在存储系统上执行各种输入/输出操作的请求。在一些示例中,来自应用程序的请求可以包括对执行以下项的请求:(i)备份操作、(ii)还原操作、(iii)恢复操作和/或(iv)复制操作。
在一些示例中,将指派的输入/输出带宽量分配给应用程序可以包括:基于从存储系统请求输入/输出带宽的应用程序的数量和存储系统执行输入/输出操作的容量两者来分配指派的输入/输出带宽量。在一些实施方案中,从分配给应用程序的剩余的输入/输出带宽量将带宽分配给来自应用程序的未来输入/输出请求可以包括:响应于确定应用程序没有足够的剩余输入/输出带宽量执行未来输入/输出操作来阻止应用程序在存储系统上执行至少一个未来输入/输出操作。
在一些实施方案中,用于实现上述方法的系统可以包括:(i)存储在存储器中的分配模块,其根据预定义的服务等级协议将指派的输入/输出带宽量分配给应用程序,应用程序在存储系统上执行动作;(ii)存储在存储器中的接收模块,其从应用程序接收对在存储系统上执行输入/输出操作的请求;(iii)存储在存储器中的识别模块,其识别与履行输入/输出操作相关联的延迟量;(iv)存储在存储器中的计算模块,其至少部分地基于与履行输入/输出操作相关联的延迟量来计算由输入/输出操作消耗的输入/输出带宽量;(v)存储在存储器中的扣减模块,其从分配给应用程序的指派的输入/输出带宽量扣减由输入/输出操作消耗的输入/输出带宽量;和(vi)至少一个物理处理器,其被配置为执行分配模块、接收模块、识别模块、计算模块和扣减模块。分配模块还可以从分配给应用程序的剩余的输入/输出带宽量将带宽分配给来自应用程序的未来输入/输出请求。
在一些示例中,上述方法可被编码为非暂态计算机可读介质上的计算机可读指令。例如,计算机可读介质可以包括一个或多个计算机可执行指令,其当由计算设备的至少一个处理器执行时可以使计算设备:(i)根据预定义的服务等级协议将指派的输入/输出带宽量分配给应用程序,应用程序在存储系统上执行动作;(ii)从应用程序接收对在存储系统上执行输入/输出操作的请求;(iii)识别与履行输入/输出操作相关联的延迟量;(iv)至少部分地基于与履行输入/输出操作相关联的延迟量来计算由输入/输出操作消耗的输入/输出带宽量;(v)从分配给应用程序的指派的输入/输出带宽量扣减由输入/输出操作消耗的输入/输出带宽量;以及(vi)从分配给应用程序的剩余的输入/输出带宽量将带宽分配给来自应用程序的未来输入/输出请求。
来自任意上述实施方案的特征可根据本文所述的一般原理彼此结合使用。在结合附图和权利要求阅读以下详细描述后,将更全面地理解这些以及其他实施方案、特征和优点。
附图说明
附图示出多个示例性实施方案,并且是说明书的一部分。这些附图与以下描述一起展示并说明本公开的各种原理。
图1是用于在存储系统中分配输入/输出带宽的示例性系统的框图。
图2是用于在存储系统中分配输入/输出带宽的附加示例性系统的框图。
图3是用于在存储系统中分配输入/输出带宽的示例性方法的流程图。
图4是示例性顺序请求的框图。
图5是用于在存储系统中分配输入/输出带宽的示例性计算系统的框图。
在整个附图中,相同的参考字符和描述指示类似但未必相同的元件。虽然本文所述的示例性实施方案易存在各种修改形式和另选形式,但是附图中以举例的方式示出了具体实施方案,这些实施方案将在本文中详细描述。然而,本文所述的示例性实施方案并非旨在限于所公开的特定形式。相反,本公开涵盖落在所附权利要求范围内的所有修改形式、等同形式和替代形式。
具体实施方式
本公开整体涉及用于在存储系统中分配输入/输出带宽的系统和方法。如下面将更详细地描述的,通过基于系统影响而不仅是操作大小来将输入/输出带宽分配给应用程序,所公开的系统和方法可以使得能够更有效地使用存储系统可用的实际带宽。例如,8KB输入/输出操作可能在存储系统中引起4ms的延迟,而256KB操作可能引起6ms的延迟。即使256KB操作传输的数据量是8KB操作的32倍,但是它可能仅比8KB操作产生多50%的延迟。因此,仅基于由那些应用程序发出的输入/输出请求的大小而向应用程序分配带宽的传统服务质量系统可能最终未充分利用存储系统可用的实际带宽。通过替代地基于输入/输出操作的实际影响(例如,由其引起的延迟)而分配带宽,所公开的系统和方法可以通过允许那些系统更充分利用可用处理带宽来改进存储系统的功能。
下面将参考图1至图2提供对用于在存储系统中分配输入/输出带宽的示例性系统的详细描述。还将结合图3提供对应的计算机实现的方法的详细描述。将结合图4提供对示例性顺序请求的详细描述,并且将结合图5提供对用于分配输入/输出带宽的附加示例性系统的详细描述。
图1是用于在存储系统中分配输入/输出带宽的示例性系统100的框图。如该图所示,系统100可以包括用于执行一个或多个任务的一个或多个模块102。例如,并且如下面将更详细地解释的,系统100可以包括分配模块104、接收模块106、识别模块108、计算模块110和扣减模块112。虽然示出为单独元件,但图1的模块102中的一者或多者可表示单个模块或应用程序的若干部分。
在某些实施方案中,图1中的模块102中的一者或多者可表示一个或多个软件应用程序或程序,其在由计算设备执行时可致使计算设备执行一个或多个任务。例如,并且如下文将更详细地描述的,模块102中的一个或多个可以表示存储在一个或多个计算设备上并被配置为在计算设备(诸如图2中所示的设备,例如,存储系统206))上运行的模块。图1中的模块102中的一者或多者还可表示被配置为执行一个或多个任务的一个或多个专用计算机的全部或部分。
如图1所示,示例性系统100还可以包括一个或多个存储器设备,诸如存储器140。存储器140通常表示能够存储数据和/或计算机可读指令的任何类型或形式的易失性或非易失性存储设备或介质。在一个示例中,存储器140可以存储、加载和/或维护模块102中的一个或多个。存储器140的示例包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、闪存存储器、硬盘驱动器(HDD)、固态驱动器(SSD)、光盘驱动器、高速缓存、以上项中的一者或多者的变型或组合或任何其他合适的存储器。
如图1所示,示例性系统100还可以包括一个或多个物理处理器,诸如物理处理器130。物理处理器130通常表示能够解释和/或执行计算机可读指令的任何类型或形式的硬件实现的处理单元。在一个示例中,物理处理器130可以访问和/或修改存储在存储器140中的模块102中的一个或多个。除此之外或另选地,物理处理器130可以执行模块102中的一个或多个以有利于在存储系统中分配输入/输出带宽。物理处理器130的示例包括但不限于微处理器、微控制器、中央处理单元(CPU)、实现软核处理器的现场可编程门阵列(FPGA)、专用集成电路(ASIC)、以上项中的一者或多者的部分、以上项中的一者或多者的变型或组合或任何其他合适的物理处理器。
如图1所示,系统100可以包括一个或多个存储设备。存储设备116通常表示能够存储数字信息的任何类型或形式的计算硬件或存储介质。存储设备116的示例包括但不限于硬盘驱动器、固态驱动器、闪存驱动器、以上项中的一者或多者的组合(例如,阵列)或用于存储数字信息的任何其他合适的介质。
图1中的示例性系统100可以以各种方式实现。例如,示例性系统100的全部或一部分可以表示图2中的示例性系统200的部分。如图2所示,系统200可以包括存储系统206。在一个示例中,模块102的功能性的全部或一部分可以由存储系统206和/或任何其他合适的计算系统执行。如下面将更详细地描述的,来自图1的模块102中的一个或多个当由存储系统206的至少一个处理器执行时可以使得存储系统206能够基于那些应用程序对存储系统的运行的实际影响而不是仅基于由应用程序执行的操作的大小来将带宽分配给应用程序。
存储系统206通常表示任何类型或形式的计算设备,其能够将操作带宽分配给寻求执行输入/输出操作的应用程序。例如,存储系统206可以包括服务器系统,其存储端点设备的备份和恢复信息。在这样的示例中,由存储系统206管理的数据可以由计算设备上的系统恢复应用程序使用。作为另一个示例,存储系统206可以包括云存储解决方案和/或作为其一部分操作,其通过诸如互联网的网络提供存储系统功能性。在这些示例中,由存储系统206管理的数据可以用作基于web的应用程序(诸如在线商店或广告服务)的数据库。存储系统206还可以包括一个或多个存储设备(诸如存储设备116)以存储数据。存储系统206的附加示例包括但不限于存储服务器、数据库服务器、应用程序服务器和/或web服务器,其被配置为运行某些软件应用程序和/或提供各种存储、数据库和/或web服务。虽然在图2中示出为单个实体,但是存储系统206可以包括和/或表示多个服务器,其彼此结合工作和/或操作。
应用程序210通常表示任何类型或形式的软件,其利用存储系统(诸如存储系统206)作为其预期和常见操作的一部分。例如,应用程序210可以表示系统映像部署应用程序,其将由存储系统206存储的系统映像复制到多个端点设备。除此之外或另选地,应用程序210可以表示文件完整性应用程序,其定期地将存储在计算设备上的信息备份到存储系统206。在这些示例中,应用程序210还可以使用存储在存储系统206上的信息来执行计算设备202的还原和/或恢复操作。此外,应用程序210可以表示在通过存储系统206存储数据的服务器上执行的托管的应用程序。在这些示例中,存储系统206可结合为服务器的一部分。
输入/输出操作214通常表示从存储系统206读取数据或将数据写入存储系统206的任何操作。一些过程(诸如备份操作)可以由许多不同的输入/输出操作组成。例如,备份操作可以请求将数百个文件写入存储系统206。对输入/输出操作的这种批请求有时可以被称为“顺序请求”,如下面将更详细地描述的。输入/输出操作可能消耗处理时间和/或导致存储系统处理另外的请求的能力的延迟。对存储系统处理其他输入/输出操作的能力的这种影响在本文中通常被称为“延迟”。
许多其他设备或子系统可以连接到图1中的计算系统100和/或图2中的计算系统200。相反,图1和图2中所示的所有组件和设备不必都存在来实践本文描述和/或示出的实施方案。上面提及的设备和子系统也可以以不同于图2所示的方式互连。计算系统100和200也可以采用任何数量的软件配置、固件配置和/或硬件配置。例如,本文所公开的示例性实施方案中的一个或多个可以被编码为计算机可读介质上的计算机程序(也被称为计算机软件、软件应用程序、计算机可读指令和/或计算机控制逻辑)。
如本文所用,术语“计算机可读介质”通常是指能够存储或携带计算机可读指令的任何形式的设备、载体或介质。计算机可读介质的示例包括但不限于传输型介质,诸如载波,和非暂态型介质,诸如磁存储介质(例如,硬盘驱动器、磁带驱动器和软盘)、光存储介质(例如,光盘(CD)、数字视频盘(DVD)、BLU-RAY磁盘)、电子存储介质(例如,固态驱动器和闪存介质)和其他分配系统。
图3是用于在存储系统中分配输入/输出带宽的示例性计算机实现的方法300的流程图。图3中所示的步骤可以由任何合适的计算机可执行代码和/或计算系统执行,包括图1中的系统100、图2中的系统200和/或以上项中的一者或多者的变型或组合。在一个示例中,图3中所示的步骤中的每个可以表示算法,其结构包括多个子步骤和/或由其表示,其示例将在下面更详细地提供。
如图3中所示,在步骤302处,本文所述的系统中的一个或多个可以根据预定义的服务等级协议将指派的输入/输出带宽量分配给应用程序,应用程序在存储系统上执行动作。例如,分配模块104可以作为图2中的存储系统206的一部分根据预定义的服务等级协议将指派的带宽208分配给应用程序210,应用程序210请求在存储系统206上执行输入/输出操作214。
如本文所用,术语“服务等级协议”通常是指存储系统服务提供方与顾客、个人或组织之间的任何形式化协议,其描述代表服务提供方将一定量的存储系统带宽提供给顾客的承诺。存储系统提供方可以利用服务质量系统来确保它们能够履行服务等级协议。例如,除了每月保证的数据传输量之外,存储系统服务提供方还可以保证每秒向顾客提供一定量的输入/输出吞吐量。服务质量系统可以将来自所有顾客的带宽请求与服务等级协议进行平衡,以便确保满足每个服务等级协议的规定。例如,尚未超过其月度数据传输上限的顾客可能要比超过其月度数据传输上限的顾客获得更大或更高优先级的带宽分配。作为特定示例,与由具有较低层服务等级协议的顾客执行的应用程序指派的相比,本文所述的系统和方法可以向由具有更高层服务等级协议的顾客执行的应用程序指派更多的“信用分”。
分配模块104可以尝试将存储系统执行输入/输出动作的容量与请求执行输入/输出动作的应用程序的数量进行平衡。在一些实施方案中,分配模块104可以通过基于从存储系统206请求输入/输出带宽的应用程序的数量和存储系统206执行输入/输出操作的容量两者分配指派的带宽208来将指派的带宽208分配给应用程序210。在某些示例中,分配模块104可以仅向每个应用程序分配一定量的处理时间。作为特定示例,在涉及请求在存储系统206上执行输入/输出操作的两个应用程序的系统中,分配模块104可以每秒向每个应用程序分配500ms的处理时间。在一些实施方案中,分配模块104可以基于各种因素来向某些应用程序授予更高的优先级或每一时次更多的处理时间。这些因素可以包括诸如应用程序的管理员将操作指定为关键或高优先级、存储服务的订户根据所谓的服务等级协议来支付增加的带宽的费用,或者用于确定应当向每个应用程序分配多少处理时间的任何其他合适的度量。
如下面将更详细地描述的,分配模块104可以除此之外或另选地通过向在存储系统206上执行动作的每个应用程序分配一定数量的“信用分”来向应用程序分配带宽。每个信用分可以表示一定量的带宽、一定量的可允许引起的延迟或用于测量输入/输出带宽分配的任何其他合适的度量。每当该应用程序在存储系统206上执行操作时,模块102的其他元件可以从指派给应用程序的余量扣减信用分。
在图3中的步骤304处,本文所述的系统中的一个或多个可以从应用程序接收对在存储系统上执行输入/输出操作的请求。例如,接收模块106可以作为图2中的存储系统206的一部分从应用程序210接收对在存储设备116上执行输入/输出操作214的请求212。
接收模块106可以从应用程序210接收各种请求。例如,接收模块106可以接收对执行单个输入/输出操作的请求。具体地,应用程序210可以提交对向存储系统206写入单个文件的请求。作为另外一种选择,应用程序210可以提交对从存储系统206读取单个文件的请求。
在一些实施方案中,接收模块106可以接收对执行多个输入/输出操作的请求。这个请求可以寻求向存储系统206写入和/或从该存储系统读取多个文件。例如,该请求可以是对执行备份操作、还原操作、恢复操作、复制操作和/或由多个读取/写入操作组成的任何其他操作的请求。如下面将更详细地描述的,处理这些顺序请求可能比因各种因素(诸如接受和解析每个请求中的信息所涉及的处理时间)来将每个组件输入/输出操作作为单独请求处理产生更少的开销处理时间。
返回图3,在步骤306处,本文所述的系统中的一个或多个可以识别与履行输入/输出操作相关联的延迟量。例如,识别模块108可以作为图2中的存储系统206的一部分识别与履行输入/输出操作214相关联的延迟量218。
识别模块108可以以各种方式识别与履行输入/输出操作214相关联的延迟量。在一些实施方案中,识别模块108可以通过测量完成输入/输出操作所需的实际时间量来识别与履行输入/输出操作相关联的延迟量。例如,识别模块108可以通过测量存储系统206何时开始处理输入/输出操作214以及存储系统206何时完成处理输入/输出操作214来识别与履行输入/输出操作214相关联的延迟量。然后,识别模块108可以将开始时间与停止时间之间的差值视为通过履行输入/输出操作214引起的总延迟量。
除此之外或另选地,识别模块108可以通过计算估计的延迟量来识别与履行输入/输出操作相关联的延迟量,延迟量将由输入/输出操作引起。例如,识别模块108可以利用数学运算来估计延迟量,延迟量将由给定输入/输出操作引起。在一些示例中,上述数学运算可以基于对由各种输入/输出操作引起的延迟的先前观察。具体地,识别模块108可以基于对由各种输入/输出操作引起的延迟的进一步观察来更新在数学运算中使用的变量,以确保计算的延迟提供由任何给定输入/输出操作引起的实际延迟的准确估计。例如,如果数学运算假定8KB输入/输出操作引起4ms的延迟,而本文所述的系统和方法观察到8KB操作引起5ms的延迟,那么识别模块108可以基于该观察到的信息来更新由数学运算使用的变量。作为具体示例,识别模块108可以通过将操作的大小乘以完成操作所花费的时间除以操作的传输速率来计算操作的归一化延迟。识别模块108可以除此之外或另选地基于与特定操作的大小相同的操作的计算的归一化延迟来估计特定操作的延迟。如下面将更详细地描述的,作为确定在履行输入/输出操作214时将相对于分配给应用程序210的带宽收取多少分配的带宽的一部分,模块102的其他元件可以将该归一化延迟与参考延迟(即,针对预定类型和/或大小的输入/输出操作计算的归一化延迟)结合使用。
在一些实施方案中,识别模块108可以通过基于对类似于输入/输出操作的输入/输出操作的先前观察计算估计的延迟量来计算估计的延迟量。例如,识别模块108可以确定针对特定存储设备的256KB读取请求引起8ms的延迟,而针对不同存储设备的256KB读取请求引起7.5ms的延迟。识别模块108可相应地估计针对第一存储设备的未来256KB读取请求引起8ms的延迟,而针对第二存储设备的未来256KB读取请求引起7.5ms的延迟。需注意,尽管请求相同量的数据传输,但是两个示例性输入/输出操作在存储系统中引起不同的延迟量。
除此之外或另选地,识别模块108可以至少部分地基于输入/输出操作是否必需顺序输入/输出操作和/或由其组成来计算由输入/输出操作引起的延迟。必需顺序输入/输出操作和/或由其组成的请求可以被称为顺序请求。图4中提供了顺序请求的图示示例。如图4所示,请求212可以包括对执行输入/输出操作214、406和408的请求作为执行备份操作以将各种文件备份到存储系统206的一部分。作为请求212的一部分的每个输入/输出操作可应用于不同文件。在图4的示例中,这些操作分别针对由文件标识符414、416和418表示的文件。然而,由于输入/输出操作214、406和408是作为相同较大请求(即,备份操作)的一部分提交的,因此本文所述的系统和方法可以将这些操作视为顺序操作或顺序请求。换句话说,存储系统206可能能够比处理单独提交的三个类似的输入/输出操作更有效地处理输入/输出操作214、406和408而系统影响更小。如下面将进一步详细地描述的,本文所述的系统和方法可相应地相对于分配给以比提交低效的请求的应用程序更有效的方式提交请求的应用程序的带宽“收取”更少的带宽,即使那些请求的内容原本应当是相同的。
在一些示例中,接收模块106可以通过将多个输入/输出操作视为单个输入/输出操作来从应用程序接收请求。所公开的系统和方法的某些实施方案可以基于请求的大小来估计请求对存储系统的影响。较大请求和顺序请求可以比随机或多或少提交的多个较小请求更有效地利用存储系统容量。因此,接收模块106可以将作为顺序操作或请求的一部分提交的输入/输出操作视为单个较大输入/输出操作。作为具体示例并返回参考图4,出于将输入/输出带宽分配给提交请求212的应用程序的目的,接收模块106可以将输入/输出操作214、406和408视为单个较大操作的一部分。
如结合图4所述,某些操作(诸如备份、还原、复制等)可以在存储系统206上执行顺序输入/输出操作。此外,由操作引起的延迟可能不会直接地与操作的大小一起缩放,并且顺序操作可能比单独或随机请求的操作引起更少的延迟。因此,出于将带宽分配给请求顺序操作的应用程序的目的,本文所述的系统和方法可以将顺序操作视为单个较大操作。作为具体示例,一组顺序操作可以包括对执行各自8KB的四个输入/输出操作的请求。因为顺序操作需要较少的开销处理时间并可能比相似量的随机提交的操作请求引起更少的延迟,所以本文所述的系统和方法可以估计由一组各自8KB的四个顺序操作引起的延迟,就像它们是单个32KB输入/输出操作一样。除了这里描述的方法之外,本文所述的系统和方法还可以以任何合适的方式组合输入/输出操作。
在一些实施方案中,识别模块108可以基于对类似于请求的输入/输出操作的输入/输出操作的先前观察来计算估计的延迟量。例如,针对不同物理存储介质但在其他方面相同的两个输入/输出操作(例如,通过相同的存储系统在同一网络上传输相同的文件)可能引起不同的延迟量。作为具体示例,将256KB文件传输到硬盘驱动器盘的输入/输出操作可能引起与将完全相同的文件传输到固态驱动器的输入/输出操作不同的延迟量。识别模块108可相应地至少部分地基于针对该硬盘驱动器盘的先前256KB操作来估计针对硬盘驱动器盘的256KB文件传输,并且基于针对该固态驱动器的256KB操作来估计针对固态驱动器的256KB文件传输。
在图3中的步骤308处,本文所述的系统中的一个或多个可以至少部分地基于与履行输入/输出操作相关联的延迟量来计算由输入/输出操作消耗的输入/输出带宽量。例如,计算模块110可以作为图2中的存储系统206的一部分至少部分地基于与履行输入/输出操作214相关联的延迟量218来计算由输入/输出操作214消耗的输入/输出带宽量。
计算模块110可以以各种方式计算消耗的输入/输出带宽。在一些示例中,计算模块110可以仅使用通过履行输入/输出操作214引起的延迟作为消耗的输入/输出带宽。作为另外一种选择,计算模块110可以将由识别模块108估计和/或观察到的延迟转换为信用分。例如,计算模块110可以计算与由特定参考大小的操作引起的延迟相关的信用分。作为具体示例,计算模块110可以将由8KB的操作引起的延迟计数为等同于一个信用分。在存储系统206中引起两倍于参考操作的延迟的输入/输出操作可能使应用程序“花费”两个信用分。需注意,所描述的信用系统基于由输入/输出操作引起的延迟而不是输入/输出操作的大小来计算成本。如上所述,比参考操作大许多倍的操作然而可能导致引起的延迟的相对较小的增加。计算模块可以确定输入/输出操作花费部分信用分(例如,2.1个信用分),将成本四舍五入为下一个最高整数(例如,将2.5个信用分四舍五入为3个信用分),或者应用任何其他合适的数学运算来确定存储系统206上的任何给定的输入/输出操作的信用成本。
在识别模块108已经识别出输入/输出操作214的归一化延迟的实施方案中,计算模块110可以将该归一化延迟结合先前计算的参考延迟使用来确定执行输入/输出操作214的信用成本。例如,计算模块110可以将输入/输出操作214的归一化延迟除以参考延迟以确定输入/输出操作214的信用成本。作为具体示例,识别模块108先前可能已经确定4ms^2的参考延迟的成本为一个信用分。然后,识别模块108可以识别用于输入/输出操作214的6ms^2的归一化延迟。计算模块110可以将6ms^2除以4ms^2以确定输入/输出操作214花费1.5个信用分来履行请求。需注意,用于计算参考延迟和归一化延迟的操作的大小在该示例性计算中是无关紧要的;出于分配输入/输出带宽的目的,本文所述的系统和方法可以与处理导致6ms^2的归一化延迟的256KB操作相同地处理导致6ms^2的归一化延迟的8KB操作。
在步骤310处,本文所述的系统中的一个或多个可以从分配给应用程序的指派的输入/输出带宽量扣减由输入/输出操作消耗的输入/输出带宽量。例如,扣减模块112可以作为图2中的存储系统206的一部分从指派的带宽208扣减由输入/输出操作214消耗的输入/输出带宽量。
扣减模块112可以在各种上下文中扣减消耗的输入/输出带宽。例如,本文所述的系统和方法可以维护分配给在存储系统206上执行操作的每个应用程序的带宽数据库。如结合计算模块110所述,该数据库可以包括“信用分”余额或分配给应用程序的带宽的其他表示。在该示例中,扣减模块112可以仅从分配给应用程序210的信用分余额减去消耗的信用分并然后用分配给应用程序210的剩余的带宽量来更新数据库。
在一些实施方案中,识别模块108和/或计算模块110可以估计在存储系统206履行请求之前将由特定输入/输出操作消耗的带宽。在这些实施方案中,模块102的一个或多个元件可以验证应用程序210具有足够的剩余信用分余额来执行所请求的输入/输出操作。如下面将更详细地描述的,分配模块104然后可以基于应用程序210没有足够的剩余的指派的带宽来履行输入/输出操作214来阻止存储系统206履行请求212。在分配模块104阻止应用程序210执行输入/输出操作的情况下,扣减模块112可以避免从应用程序210扣除用于被阻止的操作的信用分。
正如模块102的其他元件一样,出于将带宽分配给应用程序210的目的,扣减模块112可以将若干输入/输出操作视为单个较大输入/输出操作。例如,扣减模块112可以计算由输入/输出操作消耗的总输入/输出带宽并从指派的带宽208扣减由输入/输出操作消耗的总输入/输出带宽量。
在一些实施方案中,多个应用程序可以在存储系统206上执行操作。参考图5,应用程序210可以在存储系统206上执行输入/输出操作。附加的应用程序,即应用程序510,也可以在存储系统206上执行输入/输出操作。在该示例中,分配模块104可以将指派的带宽208指派给应用程序210并将指派的带宽508指派给应用程序510。应用程序210可以在存储系统206上执行输入/输出操作214,并且应用程序510可以在存储系统206上执行顺序操作514。如上面更详细地描述的,出于确定输入/输出带宽使用的目的,模块102的一个或多个元件可以将这些顺序操作视为单个较大操作。识别模块108可以识别与输入/输出操作214和顺序操作514相关联的延迟,并且计算模块110可以计算与每个操作相关联的带宽使用。然后,扣减模块112可以从指派的带宽208扣减与输入/输出操作214相关联的带宽使用并从指派的带宽508扣减与顺序操作514相关联的带宽使用。
在图3中的步骤312处,本文所述的系统中的一个或多个可以从分配给应用程序的剩余的输入/输出带宽量将带宽分配给来自应用程序的未来输入/输出请求。例如,分配模块104可以作为图2中的存储系统206的一部分从分配给应用程序的剩余的输入/输出带宽量将带宽分配给来自应用程序210的未来输入/输出请求。换句话说,剩余的输入/输出带宽量可以表示应用程序210要采取的允许动作的余量,直到分配模块104刷新或将附加带宽分配给应用程序210,如结合图3中的步骤302所述。
在一些示例中,应用程序210可能没有足够的剩余的输入/输出带宽的分配来履行请求212。在这些示例中,分配模块104可以响应于确定应用程序210没有足够的剩余的输入/输出带宽的分配执行所请求的输入/输出操作来阻止应用程序210执行请求212中请求的至少一个输入/输出操作。例如,如果应用程序210没有足够的信用分(如结合计算模块110所述)来承担在存储系统206上执行输入/输出操作的估计的带宽成本,那么分配模块104可以阻止应用程序210执行该特定输入/输出操作。在阻止应用程序210执行输入/输出操作的情况下,分配模块104和/或扣减模块112可以避免从应用程序210扣减信用分。
如上面结合图1至图5所述,存储系统可以通过信用系统跟踪应用程序的带宽使用,并且基于由于履行由该应用程序请求的输入/输出操作造成的实际处理时间和/或延迟来从应用程序的信用分分配扣减信用分。通过基于实际系统影响而不是操作大小来将带宽分配给应用程序,所公开的系统和方法可以允许存储系统更充分地利用可用处理带宽,从而增加存储系统能够以给定的时间量处理的请求数量。
此外,本文所述的系统和方法可以通过下述方法来进一步提高存储系统的效率:出于将带宽分配给各种应用程序的目的,使得存储系统能够将来自应用程序的批量或顺序请求作为单个较大请求处理。顺序输入/输出操作可以避免与单独和/或随机提交的操作请求相关联的大部分的处理开销,并且因此尽管传输可观的数据量,但是对存储系统处理另外的输入/输出操作的能力的影响较低。同样,基于实际系统影响而不是仅基于操作大小的这种带宽计量可以允许存储系统更充分地利用可用容量来执行输入/输出操作。
虽然上述公开使用特定框图、流程图和示例阐述了各种实施方案,但每个框图组件、流程图步骤、操作和/或本文描述和/或示出的组件可使用宽泛范围的硬件、软件或固件(或它们的任意组合)配置单独和/或共同地实施。此外,包含在其他组件内的组件的任何公开应当被视为在本质上是示例性的,因为可以实现许多其他体系结构来实现相同的功能。
在一些示例中,图1中的示例性系统100的全部或一部分可以表示基于云计算或网络的环境的部分。云计算环境可经由互联网提供各种服务和应用程序。这些基于云的服务(例如软件即服务、平台即服务、基础设施即服务等)可以通过web浏览器或另一个远程接口访问。本文所述的各种功能可通过远程桌面环境或任何其它基于云的计算环境提供。
在各种实施方案中,图1中的示例性系统100的全部或一部分可以有利于基于云的计算环境内的多租户应用。换句话讲,本文所述的软件模块可以配置计算系统(例如,服务器)以有利于本文所述的功能中的一种或多种的多租户应用。例如,本文所述的模块中的一个或多个可以对服务器进行编程以使得两个或更多个客户端(例如,顾客)能够共享正在服务器上运行的应用程序。以这种方式编程的服务器可在多个顾客(即,租户)之间共享应用程序、操作系统、处理系统和/或存储系统。本文所述的模块中的一个或多个还可为每个顾客分割多租户应用程序的数据和/或配置信息,由此使得一个顾客不能访问另一个顾客的数据和/或配置信息。
根据各种实施方案,图1中的示例性系统100的全部或一部分可以在虚拟环境内实现。例如,本文所述的模块和/或数据可在虚拟机内驻留和/或执行。如本文所用,术语“虚拟机”通常是指由虚拟机管理器(例如,超级管理程序)从计算硬件中提取出来的任何操作系统环境。
在一些示例中,图1中的示例性系统100的全部或一部分可以表示移动计算环境的部分。移动计算环境可以由宽泛范围的移动计算设备实现,所述移动计算设备包括移动电话、平板电脑、电子书阅读器、个人数字助理、可穿戴计算设备(例如,具有头戴式显示器的计算设备、智能手表等)、上述项中的一者或多者的变型或组合或任何其他合适的移动计算设备。在一些示例中,移动计算环境可具有一个或多个显著特征,包括例如依赖电池供电、在任何给定时间只呈现一个前台应用程序、远程管理特征、触摸屏特征、(例如,由全球定位系统、陀螺仪、加速计等提供的)位置和移动数据、用于限制对系统级配置的修改和/或限制第三方软件检查其他应用程序的行为的能力的受限平台、用于限制应用程序的安装(例如,仅限于安装来源于经批准的应用程序商店的应用程序)的控制设备,等等。本文所述的各种功能可被提供用于移动计算环境和/或可与移动计算环境交互。
本文描述和/或示出的过程参数和步骤序列仅以举例的方式给出并且可根据需要改变。例如,虽然本文示出和/或描述的步骤可以特定顺序示出或讨论,但这些步骤不必以示出或讨论的顺序来执行。本文描述和/或示出的各种示例性方法也可以省略本文描述或示出的步骤中的一个或多个,或者除了所公开的那些步骤之外还包括另外的步骤。
虽然本文已经在全功能计算系统的上下文中描述和/或示出了各种实施方案,但是这些示例性实施方案中的一个或多个可以作为各种形式的程序产品来分配,而不考虑用于实际进行分配的计算机可读介质的特定类型。本文所公开的实施方案还可以使用执行某些任务的模块来实现。这些模块可以包括脚本文件、批文件或可存储在计算机可读存储介质上或计算系统中的其他可执行文件。在一些实施方案中,这些模块可以将计算系统配置为执行本文所公开的示例性实施方案中的一个或多个。
前文的描述旨在使得本领域的其他技术人员能够最好地利用本文所公开的示例性实施方案的各个方面。该示例性描述并非旨在是详尽的或限于所公开的任何确切形式。在不脱离本公开的实质和范围的前提下,可进行许多修改和变化。本文所公开的实施方案在所有方面均应当被视为示例性的而非限制性的。应当参考所附权利要求及其等同形式来确定本公开的范围。
除非另有说明,否则本说明书和权利要求中所用的术语“连接到”和“联接到”(以及它们的衍生形式)应被理解为既允许直接的连接,又允许间接(即,经由其他元件或组件)的连接。此外,本说明书和权利要求中所用的术语“一”或“一个”应被理解为意指“至少一个…”。最后,为了便于使用,本说明书和权利要求中所用的术语“包括”和“具有”(以及它们的衍生形式)与词语“包含”可互换并且与词语“包含”具有相同含义。

Claims (20)

1.一种用于在存储系统中分配输入/输出带宽的计算机实现的方法,所述方法的至少一部分由计算设备执行,所述计算设备包括至少一个处理器,所述方法包括:
根据预定义的服务等级协议将指派的输入/输出带宽量分配给应用程序,所述应用程序在存储系统上执行动作;
从所述应用程序接收对在所述存储系统上执行输入/输出操作的请求;
识别与履行所述输入/输出操作相关联的延迟量;
至少部分地基于与履行所述输入/输出操作相关联的所述延迟量来计算由所述输入/输出操作消耗的输入/输出带宽量;
从分配给所述应用程序的所述指派的输入/输出带宽量扣减由所述输入/输出操作消耗的所述输入/输出带宽量;以及
从分配给所述应用程序的所述剩余的输入/输出带宽量将带宽分配给来自所述应用程序的未来输入/输出请求。
2.根据权利要求1所述的方法,其中识别与履行所述输入/输出操作相关联的所述延迟量包括测量完成所述输入/输出操作所花费的时间量。
3.根据权利要求1所述的方法,其中识别与履行所述输入/输出操作相关联的所述延迟量包括至少部分地基于所述输入/输出操作是否包括多个顺序输入/输出操作来计算估计的延迟量,所述估计的延迟量将由所述输入/输出操作引起。
4.根据权利要求3所述的方法,其中计算所述估计的延迟量包括基于对类似于所述输入/输出操作的输入/输出操作的先前观察来计算所述估计的延迟量。
5.根据权利要求1所述的方法,其中从分配给所述应用程序的所述指派的输入/输出带宽量扣减的由所述输入/输出操作消耗的所述输入/输出带宽量与由所述输入/输出操作引起的所述延迟成比例,而不是仅与所述输入/输出操作的所述大小成比例。
6.根据权利要求1所述的方法,其中从所述应用程序接收所述请求包括接收对执行多个输入/输出操作的请求。
7.根据权利要求6所述的方法,其中从所述应用程序接收所述请求包括将所述多个输入/输出操作视为单个输入/输出操作。
8.根据权利要求7所述的方法,其中将所述多个输入/输出操作视为单个输入/输出操作包括:
计算由所述多个输入/输出操作消耗的所述总输入/输出带宽量;以及
扣减由所述多个输入/输出操作消耗的所述总输入/输出带宽量。
9.根据权利要求1所述的方法,其中来自所述应用程序的所述请求包括对执行以下项中的至少一个的请求:
备份操作;
还原操作;
恢复操作;和
复制操作。
10.根据权利要求1所述的方法,其中将所述指派的输入/输出带宽量分配给所述应用程序包括:基于从所述存储系统请求输入/输出带宽的应用程序的所述数量和所述存储系统执行输入/输出操作的容量两者来分配所述指派的输入/输出带宽量。
11.根据权利要求1所述的方法,其中从分配给所述应用程序的所述剩余的输入/输出带宽量将带宽分配给来自所述应用程序的未来输入/输出请求包括:响应于确定所述应用程序没有足够的剩余的输入/输出带宽量执行所述未来输入/输出操作来阻止所述应用程序在所述存储系统上执行至少一个未来输入/输出操作。
12.一种用于在存储系统中分配输入/输出带宽的系统,所述系统包括:
存储在存储器中的分配模块,所述分配模块根据预定义的服务等级协议将指派的输入/输出带宽量分配给应用程序,所述应用程序在存储系统上执行动作;
存储在存储器中的接收模块,所述接收模块从所述应用程序接收对在所述存储系统上执行输入/输出操作的请求;
存储在存储器中的识别模块,所述识别模块识别与履行所述输入/输出操作相关联的延迟量;
存储在存储器中的计算模块,所述计算模块至少部分地基于与履行所述输入/输出操作相关联的所述延迟量来计算由所述输入/输出操作消耗的输入/输出带宽量;
存储在存储器中的扣减模块,所述扣减模块从分配给所述应用程序的所述指派的输入/输出带宽量扣减由所述输入/输出操作消耗的所述输入/输出带宽量;和
至少一个物理处理器,所述至少一个物理处理器被配置为执行所述分配模块、所述接收模块、所述识别模块、所述计算模块和所述扣减模块。
13.根据权利要求12所述的系统,其中所述分配模块从分配给所述应用程序的所述剩余的输入/输出带宽量将带宽分配给来自所述应用程序的未来输入/输出请求。
14.根据权利要求12所述的系统,其中所述识别模块通过测量完成所述输入/输出操作所花费的时间量来识别与履行所述输入/输出操作相关联的所述延迟量。
15.根据权利要求12所述的系统,其中所述识别模块通过下述方法识别与履行所述输入/输出操作相关联的所述延迟量:至少部分地基于所述输入/输出操作是否包括多个顺序输入/输出操作计算估计的延迟量,所述估计的延迟量将由所述输入/输出操作引起。
16.根据权利要求15所述的系统,其中所述识别模块通过基于对类似于所述输入/输出操作的输入/输出操作的先前观察计算所述估计的延迟量来计算所述估计的延迟量。
17.根据权利要求12所述的系统,其中从分配给所述应用程序的所述指派的输入/输出带宽量扣减的由所述输入/输出操作消耗的所述输入/输出带宽量与由所述输入/输出操作引起的所述延迟成比例,而不是仅与所述输入/输出操作的所述大小成比例。
18.根据权利要求12所述的系统,其中所述接收模块通过接收对执行多个输入/输出操作的请求来从所述应用程序接收所述请求。
19.根据权利要求12所述的系统,其中来自所述应用程序的所述请求包括对执行以下项中的至少一个的请求:
备份操作;
还原操作;
恢复操作;和
复制操作。
20.一种包括一个或多个计算机可读指令的非暂态计算机可读介质,所述一个或多个计算机可读指令当由计算设备的至少一个处理器执行时使所述计算设备:
根据预定义的服务等级协议将指派的输入/输出带宽量分配给应用程序,所述应用程序在存储系统上执行动作;
从所述应用程序接收对在所述存储系统上执行输入/输出操作的请求;
识别与履行所述输入/输出操作相关联的延迟量;
至少部分地基于与履行所述输入/输出操作相关联的所述延迟量来计算由所述输入/输出操作消耗的输入/输出带宽量;
从分配给所述应用程序的所述指派的输入/输出带宽量扣减由所述输入/输出操作消耗的所述输入/输出带宽量;以及
从分配给所述应用程序的所述剩余的输入/输出带宽量将带宽分配给来自所述应用程序的未来输入/输出请求。
CN201780063255.4A 2016-10-28 2017-10-26 用于在存储系统中分配输入/输出带宽的系统和方法 Active CN109844714B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/337,667 US10095422B2 (en) 2016-10-28 2016-10-28 Systems and methods for allocating input/output bandwidth in storage systems
US15/337,667 2016-10-28
PCT/US2017/058525 WO2018081421A1 (en) 2016-10-28 2017-10-26 Systems and methods for allocating input/output bandwidth in storage systems

Publications (2)

Publication Number Publication Date
CN109844714A true CN109844714A (zh) 2019-06-04
CN109844714B CN109844714B (zh) 2022-08-09

Family

ID=60269981

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780063255.4A Active CN109844714B (zh) 2016-10-28 2017-10-26 用于在存储系统中分配输入/输出带宽的系统和方法

Country Status (5)

Country Link
US (1) US10095422B2 (zh)
EP (1) EP3532918B1 (zh)
JP (1) JP6730522B2 (zh)
CN (1) CN109844714B (zh)
WO (1) WO2018081421A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10452553B1 (en) * 2017-10-16 2019-10-22 Veritas Technologies Llc Systems and methods for distributing cache space
US10481802B1 (en) * 2017-10-16 2019-11-19 EMC IP Holding Company LLC Balancing Mapped RAID background I/O with user I/O via dynamically changing background credits on Mapped RAID system and method
US10635355B1 (en) * 2018-11-13 2020-04-28 Western Digital Technologies, Inc. Bandwidth limiting in solid state drives
US11249667B2 (en) * 2019-09-05 2022-02-15 International Business Machines Corporation Storage performance enhancement
US11481156B1 (en) * 2020-02-26 2022-10-25 Marvell Asia Pte, Ltd. Throughput management of distributed storage system
CN115914140B (zh) * 2023-01-10 2023-06-20 苏州浪潮智能科技有限公司 一种存储数据处理方法、装置、电子设备和存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1601501A (zh) * 2003-09-08 2005-03-30 索尼株式会社 存储器带宽控制装置
CN1781072A (zh) * 2003-02-05 2006-05-31 迪利根特技术公司 用于开放系统环境的磁带存储仿真
US20100191876A1 (en) * 2009-01-27 2010-07-29 Muppirala Kishore Kumar Method And System For Optimizing Network Input/Output Performance
CN101849393A (zh) * 2007-11-05 2010-09-29 高通股份有限公司 调度尽力交付(be)流和延迟qos流的混合流
CN103500073A (zh) * 2013-10-08 2014-01-08 浪潮(北京)电子信息产业有限公司 一种数据块迁移方法及装置
CN105393509A (zh) * 2013-06-20 2016-03-09 微软技术许可有限责任公司 跨多个用户控制带宽用于交互式服务

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09319672A (ja) * 1996-05-30 1997-12-12 Fuji Xerox Co Ltd データ伝送装置および方法
US6108306A (en) * 1997-08-08 2000-08-22 Advanced Micro Devices, Inc. Apparatus and method in a network switch for dynamically allocating bandwidth in ethernet workgroup switches
US6735633B1 (en) * 1999-06-01 2004-05-11 Fast Forward Networks System for bandwidth allocation in a computer network
US7130807B1 (en) * 1999-11-22 2006-10-31 Accenture Llp Technology sharing during demand and supply planning in a network-based supply chain environment
US7260635B2 (en) * 2000-03-21 2007-08-21 Centrisoft Corporation Software, systems and methods for managing a distributed network
US6947998B2 (en) * 2001-03-08 2005-09-20 Broadband Royalty Corporation Method and system for bandwidth allocation tracking in a packet data network
KR100436365B1 (ko) * 2001-06-23 2004-06-18 삼성전자주식회사 비동기전송모드 기반의 트래픽 유형에 따른 지연적응적스케줄링 장치 및 방법
US7257632B2 (en) * 2001-07-30 2007-08-14 Fujitsu Limited Method and apparatus for a bandwidth broker in a packet network
US20040103193A1 (en) * 2002-11-08 2004-05-27 Pandya Suketu J. Response time and resource consumption management in a distributed network environment
US7818252B2 (en) * 2003-02-20 2010-10-19 Gilat Satellite Networks, Ltd Enforcement of network service level agreements
US7738492B2 (en) * 2007-11-19 2010-06-15 Avistar Communications Corporation Network communication bandwidth management
US7877495B2 (en) * 2008-05-29 2011-01-25 Qwest Communications International Inc. Application levels of service over a network
US8195888B2 (en) * 2009-03-20 2012-06-05 Empire Technology Development Llc Multiprocessor cache prefetch with off-chip bandwidth allocation
US8667493B2 (en) * 2010-05-07 2014-03-04 Advanced Micro Devices, Inc. Memory-controller-parallelism-aware scheduling for multiple memory controllers
US8522244B2 (en) * 2010-05-07 2013-08-27 Advanced Micro Devices, Inc. Method and apparatus for scheduling for multiple memory controllers
US9559956B2 (en) * 2011-02-01 2017-01-31 Google Inc. Sharing bandwidth among multiple users of network applications
US9215138B2 (en) * 2012-12-06 2015-12-15 International Business Machines Corporation Determining a system configuration for performing a collective operation on a parallel computer
US9363199B1 (en) * 2013-03-13 2016-06-07 Western Digital Technologies, Inc. Bandwidth management for data services operating on a local network
US9807434B2 (en) * 2015-09-15 2017-10-31 Arris Enterprises Llc Dynamic bandwidth allocation for non-real time operations

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1781072A (zh) * 2003-02-05 2006-05-31 迪利根特技术公司 用于开放系统环境的磁带存储仿真
CN1601501A (zh) * 2003-09-08 2005-03-30 索尼株式会社 存储器带宽控制装置
CN101849393A (zh) * 2007-11-05 2010-09-29 高通股份有限公司 调度尽力交付(be)流和延迟qos流的混合流
US20100191876A1 (en) * 2009-01-27 2010-07-29 Muppirala Kishore Kumar Method And System For Optimizing Network Input/Output Performance
CN105393509A (zh) * 2013-06-20 2016-03-09 微软技术许可有限责任公司 跨多个用户控制带宽用于交互式服务
CN103500073A (zh) * 2013-10-08 2014-01-08 浪潮(北京)电子信息产业有限公司 一种数据块迁移方法及装置

Also Published As

Publication number Publication date
CN109844714B (zh) 2022-08-09
JP2019531559A (ja) 2019-10-31
US10095422B2 (en) 2018-10-09
EP3532918A1 (en) 2019-09-04
EP3532918B1 (en) 2023-10-18
JP6730522B2 (ja) 2020-07-29
US20180121102A1 (en) 2018-05-03
WO2018081421A1 (en) 2018-05-03

Similar Documents

Publication Publication Date Title
CN109844714A (zh) 用于在存储系统中分配输入/输出带宽的系统和方法
CN107993151B (zh) 基金交易清算方法、装置、设备及计算机可读存储介质
WO2014002102A1 (en) Optimizing placement of virtual machines
WO2013028211A1 (en) Providing a simulation service by a cloud-based infrastructure
US20200026576A1 (en) Determining a number of nodes required in a networked virtualization system based on increasing node density
US11171825B2 (en) Context-based resource allocation with extended user concepts
US9619827B1 (en) Flexible resource commitments for computing resources
US20170237682A1 (en) System and method for isolation of multi-tenant platform customization using child processes
Sood et al. Matrix based proactive resource provisioning in mobile cloud environment
CN108509147A (zh) 数据块迁移
CN108681674A (zh) 报表模块创建方法、装置、计算机装置及存储介质
Kumar Sharma et al. A Vision towards Optimization of Ontological Datacenters Computing World
CN107251007A (zh) 集群计算服务确保装置和方法
CN109255671A (zh) 订单请求的处理方法、装置和计算机可读存储介质
CN108023834A (zh) 一种云资源自动分配方法及装置
Stewart et al. Return on Investment for Three Cyberinfrastructure Facilities: A Local Campus Supercomputer, the NSF-Funded Jetstream Cloud System, and XSEDE (the eXtreme Science and Engineering Discovery Environment)
Idris et al. The readiness of Cloud Computing: A case study in Politeknik Sultan Salahuddin Abdul Aziz Shah, Shah Alam
CN108509259A (zh) 获取多方数据源的方法以及风控系统
US20150121367A1 (en) Processing Systems And Methods
Chang et al. Evaluating the suitability of commercial clouds for NASA's high performance computing applications: A trade study
Huppler Benchmarking with your head in the cloud
US20230132831A1 (en) Task failover
US20080301025A1 (en) Application of brokering methods to availability characteristics
US11157314B2 (en) Convergence scheduling
CN111523927A (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