用于主存储系统中的负反馈高速缓存数据冲刷的系统和方法与流程

文档序号:16845411发布日期:2019-02-12 22:08阅读:203来源:国知局
用于主存储系统中的负反馈高速缓存数据冲刷的系统和方法与流程

“回写”通常可以被描述为将脏页写回到持久存储装置的过程,从而允许这些页被回收用于其他使用。当i/o压力太大时,可以实现补救该压力的技术。



技术实现要素:

在一个示例实现中,由一个或多个计算设备所执行的方法可以包括但不限于:通过计算设备确定在支持设备上针对每个过程能够被生成的脏页的数目。可以确定在支持设备上针对每个过程能够被生成的脏页的数目是否超过在支持设备上针对每个过程当前被生成的实际脏页的阈值设定点。可以确定睡眠的可变时间量。可以针对可变时间量执行睡眠,其中额外脏页的生成被暂停。

可以包括以下示例特征中的一个或多个。确定针对每个过程能够被生成的脏页的数目是否超过在支持设备上针对过程被生成的实际脏页的阈值设定点可以包括:识别在支持设备上针对每个过程当前被生成的实际脏页相对于阈值设定点的比较。确定针对每个过程能够被生成的脏页的数目是否超过在支持设备上针对每个过程被生成的实际脏页的阈值设定点还可以包括:识别针对每个过程当前被生成的实际脏页相对于支持设备上的脏页硬限制的比较。确定针对每个过程能够被生成的脏页的数目是否超过在支持设备上针对每个过程被生成的实际脏页的阈值设定点还可以包括:至少部分基于针对每个过程当前被生成的实际脏页相对于阈值设定点的比较以及针对每个过程当前被生成的实际脏页相对于脏页硬限制的比较,来确定全局比。如果支持设备超过相应的脏页份额,则可以向上调节全局比,并且如果支持设备低于相应的脏页分额,则可以向下调节全局比。可以动态地确定睡眠的可变时间量。可以至少部分基于支持设备的回写带宽能力和针对每个过程能够被生成的脏页的数目的动态水准调节,来确定睡眠的可变时间量。

在另一示例实现中,计算系统可以包括一个或多个处理器和一个或多个存储器,其被配置为执行操作,其可以包括但不限于确定在支持设备上针对每个过程能够被生成的脏页的数目。可以确定在支持设备上针对每个过程能够被生成的脏页的数目是否超过在支持设备上针对每个过程当前被生成的实际脏页的阈值设定点。可以确定睡眠的可变时间量。可以针对可变时间量执行睡眠,其中额外脏页的生成被暂停。

可以包括以下示例特征中的一个或多个。确定针对每个过程能够被生成的脏页的数目是否超过在支持设备上针对过程被生成的实际脏页的阈值设定点可以包括:识别在支持设备上针对每个过程当前被生成的实际脏页相对于阈值设定点的比较。确定针对每个过程能够被生成的脏页的数目是否超过在支持设备上针对每个过程被生成的实际脏页的阈值设定点还可以包括:识别针对每个过程当前被生成的实际脏页相对于支持设备上的脏页硬限制的比较。确定针对每个过程能够被生成的脏页的数目是否超过在支持设备上针对每个过程被生成的实际脏页的阈值设定点还可以包括:至少部分基于针对每个过程当前被生成的实际脏页相对于阈值设定点的比较以及针对每个过程当前被生成的实际脏页相对于脏页硬限制的比较,来确定全局比。如果支持设备超过相应的脏页份额,则可以向上调节全局比,并且如果支持设备低于相应的脏页分额,则可以向下调节全局比。可以动态地确定睡眠的可变时间量。可以至少部分基于支持设备的回写带宽能力和针对每个过程能够被生成的脏页的数目的动态水准调节,来确定睡眠的可变时间量。

在另一示例实现中,计算机程序产品可以驻留在具有被存储在其上的多个指令的计算机可读存储介质上,多个指令当跨越一个或多个处理器被执行时可以使得一个或多个处理器的至少一部分执行操作,其可以包括但不限于确定在支持设备上针对每个过程能够被生成的脏页的数目。可以确定在支持设备上针对每个过程能够被生成的脏页的数目是否超过在支持设备上针对每个过程当前被生成的实际脏页的阈值设定点。可以确定睡眠的可变时间量。可以针对可变时间量执行睡眠,其中额外脏页的生成被暂停。

可以包括以下示例特征中的一个或多个。确定针对每个过程能够被生成的脏页的数目是否超过在支持设备上针对过程被生成的实际脏页的阈值设定点可以包括:识别在支持设备上针对每个过程当前被生成的实际脏页相对于阈值设定点的比较。确定针对每个过程能够被生成的脏页的数目是否超过在支持设备上针对每个过程被生成的实际脏页的阈值设定点还可以包括:识别针对每个过程当前被生成的实际脏页相对于支持设备上的脏页硬限制的比较。确定针对每个过程能够被生成的脏页的数目是否超过在支持设备上针对每个过程被生成的实际脏页的阈值设定点还可以包括:至少部分基于针对每个过程当前被生成的实际脏页相对于阈值设定点的比较以及针对每个过程当前被生成的实际脏页相对于脏页硬限制的比较,来确定全局比。如果支持设备超过相应的脏页份额,则可以向上调节全局比,并且如果支持设备低于相应的脏页分额,则可以向下调节全局比。可以动态地确定睡眠的可变时间量。可以至少部分基于支持设备的回写带宽能力和针对每个过程能够被生成的脏页的数目的动态水准调节,来确定睡眠的可变时间量。

在附图和以下描述中阐述了一个或多个示例实现的细节。其他可行得示例特征和/或可行的示例优点将从描述、附图和权利要求变得明显。一些实现可能不具有那些可行的示例特征和/或可行的示例优点,并且这样的可行的示例特征和/或可行的示例优点未必是一些实现所需要的。

附图说明

图1是根据本公开的一个或多个示例实现的耦合到示例分布式计算网络的反馈过程的示例图解视图;

图2是根据本公开的一个或多个示例实现的、图1的计算机的示例图解视图;

图3是根据本公开的一个或多个示例实现的、图2的存储目标的示例图解视图;

图4是一般节流过程的示例图解视图;

图5是根据本公开的一个或多个示例实现的反馈过程的示例流程图;

图6是根据本公开的一个或多个示例实现的用于确定在写调用过程期间何时足够的页面已经变脏的技术的示例图解视图;

图7是根据本公开的一个或多个示例实现的在写调用过程期间在足够的页面已经变脏时的平滑节流技术的示例图解视图;

图8是根据本公开的一个或多个示例实现的全局控制线的示例图解视图;

图9是根据本公开的一个或多个示例实现的bdi控制线的示例图解视图;以及

图10的示例图表示出了根据本公开的一个或多个示例的反馈过程10的结果。

在各附图中相同的附图标记指代相同的元件。

具体实施方式

系统概述:

在一些实现中,本公开可以被实现为方法、系统或计算机程序产品。因此,在一些实现中,本公开可以采取以下形式:完全硬件实现、完全软件实现(包括固件、常驻软件、微代码等)或组合软件和硬件方面的实现,在本文中它们通常都可以被称为“电路”、“模块”或“系统”。而且,在一些实现中,本公开可以采取计算机可用存储介质上的计算机程序产品的形式,在介质中实现有计算机可用程序代码。

在一些实现中,可以利用任何适合的计算机可用或计算机可读介质(或媒体)。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可用或计算机可读存储介质(包括与计算设备或客户端电子设备相关联的存储设备)可以是例如但不限于电子、磁性、光学、电磁、红外或半导体系统、装置、设备或前述内容的任何适合的组合。计算机可读介质的更具体示例(非穷尽列表)可以包括以下:具有一个或多个接线的电气连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦可编程只读存储器(eprom或闪速存储器)、光纤、便携式压缩盘只读存储器(cd-rom)、光学存储设备、数字多用盘(dvd)、静态随机存取存储器(sram)、记忆棒、软盘、机械编码设备(诸如其上记录有的指令的穿孔卡或沟槽中的凸起结构)、介质(诸如支持因特网或内联网的那些介质)或磁性存储设备。注意,计算机可用或计算机可读介质甚至可以是以下这样的合适介质:在所述介质上程序以适合的方式被存储、扫描、编译、解译或处理(如果必要的话),并且然后被存储在计算机存储器中。在本公开的上下文中,计算机可用或计算机可读存储介质可以是能够包含或存储供指令执行系统、装置或设备使用或结合这些系统、装置或设备使用的程序的任何有形介质。

在一些实现中,例如,计算机可读信号介质可以包括基带内的或者作为载波的一部分的传播数据信号,在所述传播数据信号内实现有计算机可读程序代码。在一些实现中,这样的传播信号可以采取各种形式中的任一种,包括但不限于电磁、光学或其任何适合的组合。在一些实现中,可以使用任何适当的介质传输计算机可读程序代码,包括但不限于因特网、有线、光纤电缆、rf等。在一些实现中,计算机可读信号介质可以是任何计算机可读介质,其不是计算机可读存储介质并且其可以传递、传播或传输供指令执行系统、装置或设备使用的或者或结合这些系统、装置或设备使用的程序。

在一些实现中,执行本公开的操作的计算机程序代码可以是用一种或多种编程语言的任意组合编写的汇编指令、指令集架构(isa)指令、机器指令、机器依赖指令、微代码、固件指令、状态设置数据,或者是源代码或者是目标代码,所述一种或多种编程语言包括面向对象编程语言,诸如、smalltalk、c++等。和所有基于java的商标和标志都是oracle和/或其分支机构的商标或注册商标。然而,还可以用常规过程编程语言(诸如“c”编程语言、pascal或类似编程语言)以及用脚本语言(诸如javascript、perl或python)编写用于执行本公开的操作的计算机程序代码。作为独立的软件包,程序代码可以全部地在用户的计算机上执行,部分地在用户的计算机上执行、部分地在用户的计算机上和部分地在远程计算机上执行,或者全部地在远程计算机或服务器上执行。在后面的场景中,远程计算机可以通过局域网(lan)或广域网(wan)连接到用户的计算机,或者可以对外部计算机做出连接(例如,使用因特网服务提供商通过因特网)。在一些实现中,电子电路可以通过利用计算机可读程序指令的状态信息来个性化电子电路以执行计算机可读程序指令/代码,以便执行本公开的各方面,电子电路包括例如可编程逻辑电路、现场可编程门阵列(fpga)或其他硬件加速度计、微控制器单元(mcu)或可编程逻辑阵列(pla)。

在一些实现中,附图中的流程图和框图图示了根据本公开的各种实现的装置(系统)、方法和计算机程序产品的可能实现的架构、功能和操作。流程图和/或框图中的每个块和流程图和/或框图中的块的组合可以表示模块、段或代码的一部分,其包括用于实现指定的逻辑功能/动作的一个或多个可执行计算机程序指令。这些计算机程序指令可以被提供到通用计算机、专用计算机的处理器或其他可编程数据处理装置,以产生机器,使得可以经由计算机的处理器或其他可编程数据处理装置执行的计算机程序指令创建实现流程图和/或(一个或多个)框图块或其组合中所指定的功能/动作中的一个或多个。应当注意,在一些实现中,块中所指出的功能可以脱离附图中所指出的顺序发生。例如,连续所示的两个框实际上可以基本上并发地执行,或者块有时可以以相反的顺序执行,这取决于所涉及的功能。

在一些实现方案中,这些计算机程序指令还可以被存储在计算机可读存储器中,其可以引导计算机或其他可编程数据处理装置以特定的方式运行,使得被存储在计算机可读存储器中的指令产生包括指令单元的制品,所述指令单元实现流程图和/或(一个或多个)框图块或其组合中所指定的功能/动作。

在一些实现中,计算机程序指令还可以被加载到计算机或其他可编程数据处理装置,以使得一系列操作步骤被执行(不必以特定顺序)在计算机或其他可编程装置上,以产生计算机实现的过程,使得在计算机或其他可编程装置上执行的指令提供用于实现流程图和/或(一个或多个)框图块或其组合中所指定的功能/动作(不必以特定顺序)的步骤。

现在参考图1的示例实现,示出了反馈过程10,其可以驻留在计算机(例如,计算机12)上并且可以由该计算机执行,该计算机可以被连接到网络(例如,网络14)(例如,因特网或局域网)。计算机12(和/或下面所指出的客户端电子设备中的一个或多个)的示例可以包括但不限于存储系统(例如,网络附接存储(nas)系统、存储区域网络(san))、个人计算机、膝上型计算机、移动计算设备、服务器计算机、一系列服务器计算机、大型计算机或计算云。如本领域中已知的,san可以包括客户端电子设备中的一个或多个,包括raid设备和nas系统。在一些实现中,前述内容中的每一个通常可以被描述为计算设备。在某些实现中,计算设备可以是物理或虚拟设备。在许多实现中,计算设备可以是能够执行操作的任何设备,诸如专用处理器、处理器的一部分、虚拟处理器、虚拟处理器的一部分、虚拟设备的一部分或虚拟设备。在一些实现中,处理器可以是物理处理器或虚拟处理器。在一些实现中,虚拟处理器可以与一个或多个物理处理器的一个或多个部分相对应。在一些实现中,指令/逻辑可以跨越一个或多个处理器(虚拟的或物理的)被分布和被执行,以执行指令/逻辑。计算机12可以执行操作系统,例如但不限于osredmobile、chromeos、blackberryos、fireos或自定义操作系统。(microsoft和windows是微软公司在美国、其他国家或二者中的注册商标;mac和osx是苹果公司在美国、其他国家或二者中的注册商标;redhat是红帽公司在美国、其他国家或二者中注册商标;并且linux是linustorvalds在美国、其他国家或二者中的注册商标)。

在一些实现中,如下面将更详细讨论的,反馈过程(诸如图1的反馈过程10)可以通过计算设备选择用于扩展区(extent)池中的每个raid扩展区的第一磁盘扩展区。可以选择用于扩展区池中的每个raid扩展区的剩余磁盘扩展区。

在一些实现中,可以由被包括在计算机12内的一个或多个处理器和一个或多个存储器架构来执行反馈过程10的指令集和子例程,其可以被存储在耦合到计算机12的存储设备上,例如存储设备16。在一些实现中,存储设备16可以包括但不限于:硬盘驱动器;所有形式的闪速存储器存储设备;磁带驱动器;光学驱动器;raid阵列(或其他阵列);随机存取存储器(ram);只读存储器(rom);或其组合。在一些实现中,存储设备16可以被组织为扩展区、扩展区池、raid扩展区(例如,示例4d+1pr5,其中raid扩展区可以包括例如可以从例如五个不同的存储设备分配的五个存储设备扩展区)、映射raid(例如,raid扩展区的集合)或其组合。

在一些实现中,网络14可以被连接到一个或多个附属网络(例如,网络18),其示例例如可以包括但不限于:局域网;广域网;或内联网。

在一些实现中,计算机12可以包括数据存储,诸如数据库(例如,关系数据库、面向对象数据库、三元存储数据库等),并且可以被定位在任何适合的存储器位置内,诸如被耦合到计算机12的存储设备16。在一些实现中,贯穿本公开所描述的数据、元数据、信息等可以被存储在数据存储中。在一些实现中,计算机12可以利用任何已知数据库管理系统(诸如但不限于db2),以便提供对一个或多个数据库(诸如上文所指出的关系数据库)的多用户访问。在一些实现中,数据存储还可以是自定义数据库,诸如例如平面文件数据库或xml数据库。在一些实现中,还可以使用任何其他形式的数据存储结构和/或组织。在一些实现中,反馈过程10可以是数据存储的组件,其是与上文所指出的数据存储进行交互的独立应用和/或经由客户端应用22、24、26、28被访问的小应用程序/应用。在一些实现中,上文所指出的数据存储可以全部或部分被分布在云计算拓扑中。这样,计算机12和存储设备16可以指代多个设备,其还可以贯穿网络分布。可以与本公开一起使用的示例云计算环境可以包括但不限于例如来自hopkinton,massachysetts的dellemctm的弹性云存储(ecstm)。在一些实现中,在不脱离本公开的范围的情况下,可以使用其他云计算环境。

在一些实现中,计算机12可以执行存储管理应用(例如,存储管理应用21),其示例可以包括但不限于例如存储系统应用、云计算应用、数据同步应用、数据迁移应用、垃圾回收应用或允许集群(或非集群)环境(等)中的数据的实现和/或管理的其他应用。在一些实现中,可以经由客户端应用22、24、26、28中的一个或多个访问反馈过程10和/或存储管理应用21。在一些实现中,反馈过程10可以是独立应用,或者可以是可以与存储管理应用21、存储管理应用21的组件和/或一个或多个客户端应用22、24、26、28交互和/或在其内被执行的小应用程序/应用/脚本/扩展。在一些实现中,存储管理应用21可以是独立应用,或者可以是可以与反馈过程10、反馈过程10的组件和/或一个或多个客户端应用22、24、26、28交互和/或咋其内被执行的小应用程序/应用/脚本/扩展。在一些实现中,客户端应用22、24、26、28中的一个或多个可以是独立应用,或者可以是可以与反馈过程10和/或存储管理应用21交互的和/或在其内被执行的或者是反馈过程10和/或存储管理应用21的组件的小应用程序/应用/脚本/扩展。客户端应用22、24、26、28的示例可以包括但不限于例如存储系统应用、云计算应用、数据同步应用、数据迁移应用、垃圾回收应用或允许集群(或非集群)环境(等)中的数据的实现和/或管理的其他应用、标准和/或移动网络浏览器、电子邮件应用(例如,电子邮件客户端应用)、文本和/或图形用户接口、自定义网络浏览器、插件、应用编程接口(api)或自定义应用。可以由并入到客户端电子设备38、40、42、44中的一个或多个处理器和一个或多个存储器架构来执行客户端应用22、24、26、28的指令集和子例程,其可以被存储在被耦合到客户端电子设备38、40、42、44的存储设备30、32、34、36上。

在一些实现中,存储设备30、32、34、36中的一个或多个可以包括但不限于:硬盘驱动器;闪盘驱动器、磁带驱动器;光学驱动器;raid阵列;随机存取存储器(ram);以及只读存储器(rom)。客户端电子设备38、40、42、44(和/或计算机12)的示例可以包括但不限于个人计算机(例如,客户端电子设备38)、膝上型计算机(例如,客户端电子设备40)、支持智能/数据的蜂窝电话(例如,客户端电子设备42)、笔记本计算机(例如,客户端电子设备44)、平板电脑、服务器、电视机、智能电视机、媒体(例如,视频、照片等)采集设备和专用网络设备。客户端电子设备38、40、42、44可以各自执行操作系统,其示例可以包括但不限于androidtmmobile、chromeos、blackberryos、fireos或自定义操作系统。

在一些实现中,客户端应用22、24、26、28中的一个或多个可以被配置为实现反馈过程10的功能中的一些或全部(并且反之亦然)。因此,在一些实现中,反馈过程10可以是纯服务器端应用、纯客户端应用或由客户端应用22、24、26、28中的一个或多个和/或反馈过程10协作执行的混合服务器端/客户端应用。

在一些实现中,客户端应用22、24、26、28中的一个或多个可以被配置为实现存储管理应用21的功能中的一些或全部(并且反之亦然)。因此,在一些实现中,存储管理应用21可以是纯服务器端应用、纯客户端应用或由客户端应用22、24、26、28中的一个或多个和/或存储管理应用21协作执行的混合服务器端/客户端应用。由于无论是单独地考虑还是以任何组合的方式考虑,客户端应用22、24、26、28中的一个或多个、反馈过程10和存储管理应用21都可以实现相同功能中的一些或全部,因而经由客户端应用22、24、26、28中的一个或多个、反馈过程10、存储管理应用21或其组合实现这样的功能的任何描述,以及客户端应用22、24、26、28中的一个或多个、反馈过程10、存储管理应用21或其组合之间的用于实现这样的功能的任何所描述的交互应当仅被当作示例,而不是限制本公开的范围。

在一些实现中,用户46、48、50、52中的一个或多个可以(例如,使用客户端电子设备38、40、42、44中的一个或多个)直接地通过网络14或通过附属网络18访问计算机12和反馈过程10。而且,计算机12可以通过附属网络18被连接到网络14,如利用虚线54所图示的。反馈过程10可以包括一个或多个用户接口,诸如浏览器和文本或图形用户接口,用户46、48、50、52可以通过所述一个或多个用户接口访问反馈过程10。

在一些实现中,各种客户端电子设备可以直接或间接地耦合到网络14(或网络18)。例如,客户端电子设备38被示为经由硬连线网络连接直接地耦合到网络14。而且,客户端电子设备44被示为经由硬连线网络连接直接地耦合到网络18。客户端电子设备40被示为经由无线通信信道56无线地耦合到网络14,该无线通信信道56是在客户端电子设备40与无线接入点(即,wap)58之间建立的,该无线接入点58被示为直接地耦合到网络14。wap58可以是例如ieee802.11a、802.11b、802.11g、802.11n、802.11ac,、rfid和/或bluetoothtm(包括bluetoothtmlowenergy)设备,其能够在客户端电子设备40与wap58之间建立无线通信信道56。客户端电子设备42被示为经由无线通信信道60无线地耦合到网络14,该无线通信信道60是在客户端电子设备42与蜂窝网络/桥62之间建立的,该蜂窝网络/桥62通过示例被示为直接地耦合到网络14。

在一些实现中,ieee802.11x规范中的一些或全部可以使用以太网协议和具有冲突避免的载波侦听多址接入(即,csma/ca)用于路径共享。例如,各种802.11x规范可以使用相移键控(即,psk)调制或补偿码键控(即,cck调制)。bluetoothtm(包括bluetoothtmlowenergy)是允许例如移动电话、计算机、智能电话和其他电子设备使用短程无线连接相互连接的电信工业规范。还可以使用其他形式的互连(例如,近场通信(nfc))。

在一些实现中,各种客户端电子设备可以直接或间接地耦合到网络14(或网络18)。例如,客户端电子设备38被示为经由硬连线网络连接直接地耦合到网络14。而且,客户端电子设备44被示为经由硬连线网络连接直接地耦合到网络18。客户端电子设备40被示为经由无线通信信道56无线地耦合到网络14,该无线通信信道56是在客户端电子设备40与无线接入点(即,wap)58之间建立的,该无线接入点58被示为直接地耦合到网络14。wap58可以是例如ieee802.11a、802.11b、802.11g、802.11n、802.11ac,、rfid和/或bluetoothtm(包括bluetoothtmlowenergy)设备,其能够在客户端电子设备40与wap58之间建立无线通信信道56。客户端电子设备42被示为经由无线通信信道60无线地耦合到网络14,该无线通信信道60是在客户端电子设备42与蜂窝网络/桥62之间建立的,该蜂窝网络/桥62通过示例被示为直接地耦合到网络14。

在一些实现中,ieee802.11x规范中的一些或全部可以使用以太网协议和具有冲突避免的载波侦听多址接入(即,csma/ca)用于路径共享。例如,各种802.11x规范可以使用相移键控(即,psk)调制或补偿码键控(即,cck调制)。bluetoothtm(包括bluetoothtmlowenergy)是允许例如移动电话、计算机、智能电话和其他电子设备使用短程无线连接相互连接的电信工业规范。还可以使用其他形式的互连(例如,近场通信(nfc))。

在一些实现中,各种i/o请求(例如,i/o请求15)可以从例如客户端应用22、24、26、28被发送到例如计算机12。i/o请求15的示例可以包括但不限于数据写入请求(例如,将内容写入到计算机12的请求)和数据读取请求(例如,从计算机12读取内容的请求)。数据存储系统:

还参考图2至图3的示例实现(例如,其中计算机12可以被配置为数据存储系统),计算机12可以包括存储处理器100和多个存储目标(例如,存储目标102、104、106、108、110)。在一些实现中,存储目标102、104、106、108、110可以包括上文所指出的存储设备中的任意一个。在一些实现中,存储目标102、104、106、108、110可以被配置为提供各种水平的性能和/或高可用性。例如,存储目标102、104、106、108、110可以被配置为形成非完全重复的容错数据存储系统(诸如非完全重复的raid数据存储系统),其示例可以包括但不限于:raid3阵列、raid4阵列、raid5阵列和/或raid6阵列。将理解到,在不脱离本公开的范围的情况下,可以使用各种其他类型的raid阵列。

虽然在该特定示例中,计算机12被示为包括五个存储目标(例如,存储目标102、104、106、108、110),但是这仅出于示例目的并且不旨在限制本公开。例如,存储目标的实际数目可以增加或减少,这取决于例如所要求的冗余/性能/容量的水平。

而且,被包括在计算机12内的存储目标(例如,存储目标102、104、106、108、110)可以被配置为形成多个分立的存储阵列。例如并且仅出于示例目的假定计算机12包括例如十个分立的存储目标,则(这十个存储目标的)前五个目标可以被配置为形成第一raid阵列,并且(这十个存储目标的)接下来的五个目标可以被配置为形成第二raid阵列。

在一些实现中,存储目标102、104、106、108、110中的一个或多个可以被配置为(例如,经由存储管理应用21)存储编码数据,其中这样的编码数据可以允许存储目标102、104、106、108、110中的一个或多个上的丢失/损坏的数据的再生。这样的编码数据的示例可以包括但不限于奇偶校验数据和reed-solomon数据。这样的编码数据可以跨越所有存储目标102、104、106、108、110分布或可以被存储在特定存储目标内。

存储目标102,104,106,108,110的示例可以包括一个或多个数据阵列,其中存储目标102、104、106、108、110的组合(以及与存储管理应用21相关联的任何处理/控制系统)可以形成数据阵列112。

实现计算机12的方式可以发生变化,这取决于例如所要求的冗余/性能/容量的水平。例如,计算机12可以被配置为san(即,存储区域网络),其中存储处理器100可以是例如专用计算系统,并且存储目标102、104、106、108、110中的每一个可以是raid设备。存储处理器100的示例可以包括但不限于由hopkinton,ma的dellemctm所提供的vplextm系统。

在计算机12被配置为san的示例中,计算机12的各种组件(例如,存储处理器100、存储目标102,104,106,108,110)可以使用网络基础设施114耦合,网络基础设施114的示例可以包括但不限于以太网(例如,第2层或第3层)网络、光纤信道网络、无限带宽网络或任何其他电路交换/分组交换网络。

如上文所讨论的,可以生成各种i/o请求(例如,i/o请求15)。例如,这些i/o请求可以从例如客户端应用22、24、26、28被发送到例如计算机12。附加地/备选地(例如,当存储处理器100被配置为应用服务器或其他时),可以在存储处理器100中(例如,经由存储管理应用21)内部地生成这些i/o请求。i/o请求15的示例可以包括但不限于数据写入请求116(例如将内容118写入到计算机12的请求)和数据读取请求120(例如,从计算机12读取内容118的请求)。

在一些实现中,在存储处理器100的操作期间,待写入到计算机12的内容118可以由存储处理器100(例如,经由存储管理应用21)接收和/或处理。附加地/备选地(例如,当存储处理器100被配置为应用服务器或其他时),可以由存储处理器100(例如,经由存储管理应用21)内部地生成待写入到计算机12的内容118。

如上文所讨论的,可以通过被包括在计算机12内的一个或多个处理器和一个或多个存储器架构执行存储管理应用21的指令集和子例程,其可以被存储在被包括在计算机12内的存储设备16上。因此,除了在存储处理器100上被执行以外,存储管理应用21(和/或反馈过程10)的指令集和子例程中的一些或全部也可以由被包括在数据阵列112内的一个或多个处理器和一个或多个存储器架构来执行。

在一些实现中,存储处理器100可以包括前端高速缓存存储器系统122。前端高速缓存存储器系统122的示例可以包括但不限于易失性的、固态的高速缓存存储器系统(例如,动态ram高速缓存存储器系统),非易失性的、固态的高速缓存存储器系统(例如,基于闪存的高速缓存存储器系统)和/或上文所指出的存储设备中的任一个。

在一些实现中,存储处理器100可以初始地将内容118存储在前端高速缓存存储器系统122内。取决于前端高速缓存存储器系统122被配置的方式,存储处理器100(例如,经由存储管理应用21)可以立即将内容118写入到数据阵列112(例如,如果前端高速缓存存储器系统122被配置为直写式高速缓存),或可以随后地将内容118写入到数据阵列112(例如,如果前端高速缓存存储器系统122被配置为回写式高速缓存)。

在一些实现中,存储目标102、104、106、108、110中的一个或多个可以包括后端高速缓存存储器系统。后端高速缓存存储器系统的示例可以包括但不限于易失性的、固态的高速缓存存储器系统(例如,动态ram高速缓存存储器系统),非易失性的、固态的高速缓存存储器系统(例如,基于闪存的高速缓存存储器系统)和/或上文所指出的存储设备中的任一个。

存储目标:

如上文所讨论的,存储目标102、104、106、108、110中的一个或多个可以是raid设备。例如,并且还参考图3,示出了示例目标150,其中目标150可以是例如存储目标102、存储目标04、存储目标106、存储目标108和/或存储目标110的raid实现的一个示例实现。目标150的示例可以包括但不限于由hopkinto,ma的dellemctm所提供的vnxtm系统。存储设备154、156、158、160、162的示例可以包括一个或多个电子机械硬盘驱动器、一个或多个固态/闪存设备和/或上文所指出的存储设备中的任一个。

在一些实现中,目标150可以包括存储处理器152和多个存储设备(例如,存储设备154、156、158、160、162)。存储设备154、156、158、160、162可以被配置为(例如,经由存储管理过程21)提供各种水平的性能和/或高可用性。例如,存储设备154、156、158、160、162中的一个或多个(或上文所指出的存储设备中的任一个)可以被配置为raid0阵列,其中跨越存储设备条状化(stripe)数据。通过跨越多个存储设备条状化数据,可以实现改进的性能。然而,raid0阵列无法提供高可用性的水平。因此,存储设备154、156、158、160、162中的一个或多个(或上文所指出的存储设备中的任一个)可以被配置为raid1阵列,其中,在存储设备之间对数据进行镜像。通过在存储设备之间对数据进行镜像,可以实现高可用性的水平,原因在于数据的多个副本可以被存储在存储设备154、156、158、160、162内。

虽然存储设备154、156、158、160、162在上文中被讨论为被配置在raid0或raid1阵列中,但是这仅出于示例目的,而不旨在限制本公开,因为其他配置也是可行的。例如,存储设备154、156、158、160、162可以被配置为raid3、raid4、raid5或raid6阵列。

虽然在该特定示例中目标150被示为包括五个存储设备(例如,存储设备154、156、158、160、162),但是这仅出于示例目的并且不旨在限制本公开。例如,存储设备的实际数目可以增加或减少,这取决于例如所要求的冗余/性能/容量的水平。

在一些实现中,存储设备154、156、158、160、162中的一个或多个可以被配置为(例如,经由存储管理过程21)存储编码数据,其中这样的编码数据可以允许存储设备154、156、158、160、162中的一个或多个上的丢失/损坏的数据的再生。这样的编码数据的示例可以包括但不限于奇偶校验数据和reed-solomon数据。这样的编码数据可以跨越所有存储设备154、156、158、160、162分布或可以被存储在特定存储设备内。

实现目标150的方式可以发生变化,这取决于例如所要求的冗余/性能/容量的水平。例如,目标150可以是raid设备,其中存储处理器152是raid控制器卡,并且存储设备154、156、158、160、162是个体“热插拔”硬盘驱动器。目标150的另一示例可以是raid系统,其示例可以包括但不限于nas(即,网络附接存储)设备或san(即,存储区域网络)。

在一些实现中,存储目标150可以执行存储管理应用21的全部或一部分。可以由被包括在存储处理器152内的一个或多个处理器和一个或多个存储器架构执行存储管理应用21的指令集和子例程,其可以被存储在耦合到存储处理器152的存储设备(例如,存储设备164)上。存储设备164可以包括但不限于上文所指出的存储设备中的任一个。

如上文所讨论的,计算机12可以被配置为san,其中存储处理器100可以是专用计算系统,并且存储目标102、104、106、108、110中的每一个可以是raid设备。因此,当存储处理器100处理数据请求116、120时,存储处理器100(例如,经由存储管理过程21)可以将适当的请求/内容(例如,写请求166、内容168和读请求170)提供到例如存储目标150(其代表存储目标102、104、106、108和/或110)。

在一些实现中,在存储处理器152的操作期间,待写入到目标150的内容168可以由存储处理器152(例如,经由存储管理过程21)处理。存储处理器152可以包括高速缓存存储器系统172。高速缓存存储器系统172的示例可以包括但不限于易失性的、固态的高速缓存存储器系统(例如,动态ram高速缓存存储器系统)和/或非易失性的、固态的高速缓存存储器系统(例如,基于闪存的高速缓存存储器系统)。在存储处理器152的操作期间,待写入到目标150的内容168可以由存储处理器152(例如,经由存储管理过程21)接收,并且初始地(例如,经由存储管理过程21)被存储在前端高速缓存存储器系统172内。

还参考图4的示例实现,示出了缓解i/o压力的一般方法。“回写”通常可以被描述为将脏页写回到持久存储设备的过程,这允许这些页被回收以供他用。当i/o压力太大时,可以实现补救该压力的技术。例如,文件系统(例如,由hopkinton,ma的dellemctm所提供的vnxtm系统)可以使用阈值控制冲刷方法。利用该示例方法,当脏页超过阈值时,高速缓存数据可以被冲刷到持久数据存储装置,直到脏页比小于阈值为止。在大的i/o压力下,例如,如果应用写入数据的速度超过系统高速缓存冲刷速度,则系统可以睡眠,从而阻止后续写操作,直到脏页比小于特定阈值为止。在该示例中,睡眠直到脏页小于特定阈值为止,通常可以被描述为节流技术,其中,一旦已经清理了一定数目的页,就可以允许应用继续生成脏页。这可能导致例如写性能波动、i/o写延时(例如,峰值写入时延达到若干秒高)。这样的高写入延时和性能波动(例如,“颠簸的”i/o)对于响应时间敏感的应用(例如,银行交易等)可能是不可接受的。如下面将更详细讨论的,本公开可以允许在大的i/o压力下更平滑地解决颠簸i/o问题的写入i/o性能。将理解到,在不脱离本公开的范围的情况下,可以在任何时间使用本公开(例如,在不存在大i/o压力的情况下)。

如下面将讨论的,反馈过程10可以至少帮助改进例如必须根植于计算机技术中的数据存储技术,以克服特别地出现在文件系统的领域中的示例和非限制性问题,该问题例如与缓解高i/o压力相关联。

反馈过程:

如上文所讨论的并且还至少参考图5至图10的示例实现,反馈过程10可以通过计算设备确定300在支持设备上针对每个过程能够被生成的脏页的数目。反馈过程10可以确定302在支持设备上针对每个过程能够被生成的脏页的数目是否超过在支持设备上针对每个过程当前被生成的实际脏页的阈值设定点。反馈过程10可以确定304睡眠的可变时间量。反馈过程10可以针对可变时间量执行306睡眠,其中额外的脏页的生成被暂停。

在一些实现中,“回写”通常可以被描述为将脏页写回到持久存储设备的过程,这允许这些页被回收用于其他使用。如果回写失去控制,则系统可能卡住或死锁。如下面将讨论的,反馈过程10可以控制反馈机制以确定每个过程在任何给定时间可以制造多少脏页。如果超过了限制,则系统可以休眠一段可变的时间,这允许反馈过程10跟上制造脏页的速度。因此,如下面将讨论的,反馈过程10可以帮助将脏页维持在适合的范围,从而最大化后端存储设备的使用,并且在不强加不合理的延迟的情况下更平滑地控制写入。

例如,在一些实现中,反馈过程10可以通过计算设备确定500在支持设备上针对每个过程能够被生成的脏页的数目。例如,反馈过程10可以提供控制反馈高速缓存冲刷技术,其可以确定500在任何时间针对每个过程可以制造多少脏页。在一些实现中,反馈过程10可以根据当前脏页数目做出这样的确定500。例如,在理想情况中,节流将把页将变脏的速率与每个设备(例如,bdi)可以回写那些页的速率相匹配。与向(例如)廉价的拇指驱动器所支持的页面进行写入的过程相比,使(例如)快速ssd所支持的页面变脏的过程能够更迅速地使更多的页面变脏。想法是:如果n个过程使具有给定带宽的bdi上的页面变脏,则每个过程应当被节流到其使该带宽的1/n变脏的程度。问题可能在于:过程通常并不向内核注册并且声明其旨在使给定bdi上的许多页面变脏,因此内核实际上并不知道n的值。这通过传递n的运行估计的反馈过程10来处理。可以建立初始每任务带宽限制,并且在一段时间之后,内核(例如,经由反馈过程10)可以查看针对给定bdi实际上变脏的页的数目,并将该数目除以该带宽限制,以得到活动过程的数目。根据该估计,可以应用新的速率限制,并且在一些实现中,可以随时间重复该确定。

反馈过程10可以确定502在支持设备上针对每个过程能够被生成的脏页的数目是否超过在支持设备上针对每个过程当前被生成的实际脏页的阈值设定点。例如,并且至少参考图6中的示例,示出了确定502在写调用期间何时足够的页已经变脏以及在支持设备上针对每个过程能够被生成的脏页的数目是否超过在支持设备上针对每个过程当前被生成的实际脏页的阈值设定点的技术。图6可以被用于控制睡眠时间。页面_脏可以是当前脏页数目,并且pos比可以由公式计算。阈值设定点可以是冲刷阈值和停止应用写阈值的平均。例如,如果脏页达到40%,则反馈过程10可以开始冲刷线程。当脏页达到80%时,反馈过程10可以暂停应用写入io。在示例中,设定点是(40%+80%)/2=60%。

在一些实现中,确定502针对每个过程能够被生成的脏页的数目是否超过在支持设备上针对每个过程被生成的实际脏页的阈值设定点可以包括:识别508在支持设备上针对每个过程当前已被生成的实际脏页相对于阈值设定点的比较,并且还可以包括:识别510支持在支持设备上针对每个过程当前已被生成的实际脏页相对于支持设备上的脏页的硬限制的比较。例如,如果设定点是60%,并且限制是80%,那么如果当前脏页是65%,则反馈过程10可以生成100个脏页。当脏页达到70%时,反馈过程10可以仅生成40个脏页。当脏页达到75%时,反馈过程10可以仅生成5个脏页。制造脏页的数目可以由睡眠时间控制,并且睡眠时间可以由pos_比控制,其通过设定点和当前脏页数目来计算。

在一些实现中,确定502针对每个过程能够被生成的脏页的数目是否超过在支持设备上针对每个过程被生成的实际脏页的阈值设定点还可以包括:至少部分基于针对每个过程当前被生成的实际脏页相对于阈值设定点的比较以及针对每个过程当前被生成的实际脏页相对于脏页的硬限制的比较,来确定512全局比。例如,反馈过程10可以包括全局存储器压力预测算法,其中当存储器使用压力较大时,存储器压力估计可以增加,当存储器使用压力较小时,存储器压力估计可以减小。该压力值可以被用于调节每个应用的节流阈值。当系统在高存储器使用下时,可以更迅速地阻止制造脏页的过程。

例如,反馈过程10的示例目标可以是将脏页的数目保持在设定点处,并且如果事情变得不协调,则增加可以应用以使事情返回到其应当所处的位置(例如,小于阈值设定点)的力量。即,当存在太多脏页时,睡眠时间可以更长,这使值返回到设定点。

因此,反馈过程10可以确定系统的当前状态,这可以通过下面的示例完成:查看全局情况(例如,相对于系统不想超出的设定点和硬限制,系统中存在多少脏页)。例如,并且至少参考图7的示例实现,反馈过程10可以使用三次多项式函数来确定512全局“pos_ratio”以描述反馈过程10需要调节脏页的数目的强度。

通常,可以通过考虑支持设备(bdi)来确定512全局比。例如,过程可能正在使被存储在给定bdi上的页面变脏,并且系统此刻可能具有盈余的脏页,但是对该过程进行节流的智慧还可以取决于针对该bdi存在多少脏页。例如,如果给定bdi忙于脏页,则反馈过程10对脏过程进行节流可能是有意义的,即使系统作为整体运行得较好。另一方面,具有很少脏页的bdi可以迅速地清理其积压,因此具有再多一些的脏页可能也负担得起,即使系统在某种程度上比其可能想要的那样更脏。

在一些实现中,如果支持设备超过相应的脏页份额,则可以向上调节514全局比,并且如果支持设备低于相应的脏页份额,则可以向下调节514全局比。例如,并且至少参考图8和图9的示例实现,对于反馈过程10而言使脏页平衡在全局/bdi设定点周围可能是期望的。当脏页的数目比设定点更高/更低时,脏位置控制比(并且因此任务脏速率限制)可以被调节514(例如,增加或减小)以使脏页返回到设定点。例如:

pos_ratio=1<<ratelimit_calc_shift

if(dirty<setpoint)scaleuppos_ratio

if(dirty>setpoint)scaledownpos_ratio

if(bdi_dirty<bdi_setpoint)scaleuppos_ratio

if(bdi_dirty>bdi_setpoint)scaledownpos_ratio

task_ratelimit=dirty_ratelimit*pos_ratio>>ratelimit_calc_shift

如至少可以从图9看到,反馈过程10可以不允许bdi控制线降低到pos_ratio=1/4以下,使得如果其开始时较高(例如,在类似同时开始向慢sd卡和快速磁盘写入的情况中),则bdi_dirty可以向下平滑地被节流到正常。在示例中,sd卡的bdi_dirty可以冲到比bid_setpoint高许多倍。

在一些实现中,bdi脏阈值可以迅速地降低,例如,由于jbod(“简单磁盘捆绑”)工作量的改变。例如:

全局设定点:

在示例中,以上是以以下各项为条件的三次多项式:

(1)f(freerun)=2.0=>使dirty_ratelimit合理地快速地斜升

(2)f(setpoint)=1.0=>平衡点

(3)f(limit)=0=>硬限制

(4)df/dx<=0=>负反馈控制

(5)离设定点越近,|df/dx|越小(并且相反)=>关于大误差的快速响应;设定点附近的小振荡

setpoint=(freerun+limit)/2;

x=div_s64((setpoint-dirty)<<ratelimit_calc_shift,

limit-setpoint+1);

pos_ratio=x;

pos_ratio=pos_ratio*x>>ratelimit_calc_shift;

pos_ratio=pos_ratio*x>>ratelimit_calc_shift;

pos_ratio+=1<<ratelimit_calc_shift;

因此,反馈过程10可以基于全局情况确定512以上基本pos_ratio。在示例中,如果bdi超过/低于其脏页份额,则反馈过程10可以调节514以进一步向下/向下缩放pos_ratio,这可以使用以下示例机制完成:

bdi设定点

在一些实现中,主bdi控制线可以是可以以以下各项为条件的线性函数:

(1)f(bdi_setpoint)=1.0

(2)k=-1/(8*write_bw)(在单个bdi情况中)

或相等地:x_intercept=bdi_setpoint+8*write_bw

在一些实现中,对于单个bdi示例而言,可以观察到脏页在以下范围内规律地波动:

[bdi_setpoint-write_bw/2,bdi_setpoint+write_bw/2]

其中对于各种文件系统而言,其中(2)可以产生针对pos_ratio的合理的示例性12.5%波动范围。

对于上文所指出的jbod示例而言,bdi_thresh(非bdi_dirty)可以向上波动到其自身大小,因此斜率可以因此移动并且反馈过程10可以选择可能对突然加倍的bdi_thresh产生100%pos_ratio波动的斜率。

if(unlikely(bdi_thresh>thresh))

bdi_thresh=thresh;

在一些实现中,bdi_thresh接近于0是可能的,但不是必须的,因为bdi是慢的,但是其可以长时间保持不活动。使这样的设备具有合理好的(希望i/o高效的)阈值可以使得偶然写入不被阻止并且有效,并且写入可以使阈值迅速地斜升。例如:

bdi_thresh=max(bdi_thresh,(limit-dirty)/8);

scaleglobalsetpointtobdi's:

bdi_setpoint=setpoint*bdi_thresh/thresh

x=div_u64((u64)bdi_thresh<<16,thresh+1);

bdi_setpoint=setpoint*(u64)x>>16;

使用如由(thresh-bdi_thresh~=0)所指示的单个bdi情况中的span=(8*write_bw)并且转换到jbod情况中的bdi_thresh。

在一些实现中,反馈过程10可以确定504可变的睡眠时间量,并且在一些实现中,可以至少部分基于支持设备的回写带宽能力以及针对每个过程能够被生成的脏页的数目的动态水准调节,来动态地确定504可变的睡眠时间量。例如,在一些实现中,可以通过后端回写设备的带宽能力和当前脏页水准线来动态地确定睡眠时间。例如,仅出于示例目的,假定存在两个后端设备,例如一个是sdd,一个是hdd。设备性能越慢,控制线越平坦。设备性能越快,控制线越陡峭,这是因为更慢的设备需要缓慢地改变以防止过度波动。

在一些实现中,反馈过程10可以针对可变时间量执行506睡眠,其中额外的脏页的生成被暂停。例如,如果脏页的数目超过上文所提到的限制,则反馈过程10可以使得bdi睡眠可变的时间量,该可变的时间量由后端回写设备的带宽能力和当前脏页水准线确定(与基于关于其他节流过程的脏页的简单阈值的固定时间不同),并且可以让系统跟上制造脏页的速度。如此,反馈过程10可以在写系统调用中增加控制算法睡眠时间,这不是简单地针对固定睡眠时间,而是针对由回写设备回写带宽能力和脏页的动态水准调节确定的合理的睡眠时间。

在一些实现中,并且至少参考图10中所示的示例结果,反馈过程10可以帮助将脏页维持在适合的范围,从而最大化后端存储设备的使用,并且更加平滑地对写入进行控制,而不强加不合理的延迟。如在图10中看到的,存在实现反馈过程10的示例性能结果。如所示,存在bdi设定点1000、bdi脏1002、限制1004、设定点1006、脏1008、任务速率限制1010、平衡脏速率限制1012和脏速率限制1014。

本文所使用的术语仅出于描述特定实施方式的目的,并且不旨在是对本公开的限制。如本文所使用的,除非上下文另外清楚地指明,否则单数形式的“一”、“一个”和“所述”旨在也包括复数形式。如本文所使用的,除非上下文另外清楚地指明,否则语言“a、b和c中的至少一个”(等)应当被解译为覆盖仅a、仅b、仅c或三者的任何组合。应当进一步理解,当在本说明书中使用时,术语“包括(comprises)”和/或“包括(comprising)”指定所陈述的特征、整体、步骤(不必以特定顺序)、操作、元件和/或组件的存在,但是并不排除一个或多个其他特征、整体、步骤(不必以特定顺序)、操作、元件、组件和/或其分组的存在或添加。

可以在下面权利要求中的(例如,所有装置或步骤加上功能元件的)对应的结构、材料、动作和等同物旨在包括用于执行与特别要求保护的其他要求保护的元件组合的功能的任何结构、材料或动作。本公开的描述出于图示和描述的目的已经被呈现,并且不旨在是详尽的或限于所公开的形式的公开。在不脱离本公开的范围和精神的情况下,许多修改、变型、替换和其任何组合对于本领域的普通技术人员而言将是明显的。选择和描述实现以便解释本公开的原理和实际应用,并且使得本领域的普通技术人员能够理解本公开,因为具有各种修改的各种实现和/或实现的任何组合都适合于预期的特定使用。

因此,已经详细并且通过参考其实现描述了本申请的公开内容,将明显的是,在不脱离随附的权利要求中定义的本公开的范围的情况下,修改、变型和实现的任何组合(包括任何修改、变型、替换和其组合)是可行的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1