扩大存储器容量用于键值高速缓存器的制造方法

文档序号:6498756阅读:124来源:国知局
扩大存储器容量用于键值高速缓存器的制造方法
【专利摘要】提供了用于扩大存储器容量的方法,系统和计算机可读和可执行指令。扩大存储器容量可以包括:经由互连把存储器刀片连接到超大规模计算系统,其中超大规模计算系统包括存储器内键-值高速缓存器;以及针对超大规模计算系统使用存储器刀片扩大存储器容量。
【专利说明】扩大存储器容量用于键值高速缓存器

【背景技术】
[0001 ] 存储器中键-值(key-value)高速缓存器可以用来针对交互式Web层应用改进性能。为了实现改进的性能,键-值高速缓存器具有如下的同时要求:提供对对象的低延时、高吞吐量访问并且提供存储大量这种对象的容量。

【专利附图】

【附图说明】
[0002]图1是图示根据本公开的系统的示例的框图。
[0003]图2是图示根据本公开的用于提供存储器容量的方法的示例的框图。
[0004]图3是图示根据本公开的处理资源、存储器资源和计算机可读介质的框图。

【具体实施方式】
[0005]存储器刀片可以被用于为存储器受限的超大规模计算系统提供扩张的容量,该超大规模计算系统诸如例如包括存储器内键-值高速缓存器的超大规模计算系统。与其它高速缓存器相比,键-值高速缓存器可能需要由高速存储装置(例如动态随机存取存储器(DRAM)速度存储装置)提供更大存储器容量,并且还可能需要向外延展(scale-out)的部署。超大规模计算系统可以提供键-值高速缓存器的这种向外延展部署,但是可能不具有提供足够存储器容量的能力,这是因为物理约束和特定处理器(例如32位处理器)的使用这两者。经由高速互连(例如外围部件快速互连(PCIe))附接存储器刀片可以使超大规模系统能够达到针对键-值高速缓存器的必要存储器容量,这通过提供比键-值高速缓存器自己更大的存储器容量存储器来实现。
[0006]本公开的示例可以包括方法、系统以及计算机可读和可执行指令和/或逻辑。用于扩大存储器容量的示例性方法可以包括:经由互连把存储器刀片连接到超大规模计算系统,其中超大规模计算系统包括存储器内键-值高速缓存器;以及使用存储器刀片对超大规模计算系统扩大存储器容量。
[0007]在本公开的以下详细描述中,参考形成本文一部分的附图,并且在附图中通过图示的方式示出本公开的示例可以如何实践。这些示例被足够详细地描述以使得本领域普通技术人员能够实践本公开的示例,并且要理解的是,在不脱离本公开的范围的情况下,可以利用其它示例并且可以做出过程、电气和/或结构的改变。
[0008]本文中的图遵循编号惯例,其中开头的一个或多个数字对应于绘图编号,并且其余数字标识附图中的元件或部件。不同图之间的类似元件或部件可以通过使用类似数字来标识。本文中各个示例中示出的元件可以被添加、交换和/或消除,以便提供本公开的多个附加示例。
[0009]此外,图中所提供的元件的比例和相对尺度意图图示本公开的示例,并且不应当以限制的意义进行理解。如本文使用的,尤其关于附图中的附图标记的标志符“N”、“P”、“R”和“S”指示:这样指定的多个特定特征可以被包括在本公开的多个示例中。而且,如本文所使用的,“多个”元件和/或特征可以指示一个或多个这样的元件和/或特征。
[0010]存储器内键-值高速缓存器(诸如memcachecK分布式高速缓存系统))可以用来针对交互式Web层应用改进性能。特别地,在这个背景中使用的键-值高速缓存器具有如下的同时要求:提供对对象的低延时、高吞吐量访问并且提供存储许多这种对象的容量。键-值高速缓存器可能需要许多千兆字节的容量(例如每个节点至少64GB存储器)来高速缓存足够的数据以便实现需要的命中率。超大规模系统可以利用如下设计:该设计中计算刀片是高度存储器受限的,这归因于物理空间限制并且因为它们利用32位处理器。这些约束可以把这种系统限制到近似4GB的存储器,远低于memcached服务器的期望容量。然而,这样的超大规模系统另外具有针对键-值高速缓存器系统(例如memcached)的期望属性,其要求高I/O性能和高向外延展,但不需要大量的计算能力。
[0011]如将在本文中进一步讨论的,通过使用分列存储器提供扩张的存储器容量,超大规模计算系统可以与存储器内键-值高速缓存器一起使用。分列存储器可以包括例如把存储器资源的部分与服务器分离并且组织和共享存储器资源。这可以使数据中心管理员能够提供满足期望吞吐量的数量的超大规模服务器,同时独立利用存储器刀片以满足期望的存储器容量。分列存储器架构可以通过经由高速互连(诸如快速PCI (PCIe))连接的存储器刀片提供远程存储器容量。在这样的架构中,本地动态随机存取存储器(DRAM)可以被扩大为具有远程DRAM。通过使存储器刀片的设计专用化,这个远程容量可以大于本地DRAM,并且能够以减小的成本提供这些容量。
[0012]在存储器内键-值高速缓存器的情况下,分列存储器能够提供所需的DRAM容量,并且可以使用过滤器来避免系统性能的降级。例如,过滤器可以被用于提供对在远程存储器上存在数据可能性的检测,从而允许系统确定是否必须访问远程存储器。在一些示例中,可以避免远程存储器访问,从而防止相对于键-值高速缓存器的基准实施方式添加附加延时。在一些示例中,如果超大规模计算系统是物理上存储器受限的,则分列存储器可以被用于提供分离的存储器刀片设备,该设备能够寻址存储器区的整个容量(例如数百GB到数十TB)。这个能力可以把提供扩张的键-值高速缓存器容量与超大规模服务器寻址大存储器的能力解耦。
[0013]当被部署有与其它规模(例如数百万个体服务器)相比可以更大的目标规模时,超大规模计算系统被设计为相对于传统机架或刀片安装的服务器实现性能/成本优势。那些效率水平的驱动因素之一是每立方英尺体积增加的计算机密度水平。因此,这种超大规模系统的重要设计目标是利用有限的热预算和有限的物理不动产来实现性能(例如最大性能)。超大规模计算可以包括微刀片设计,其中个体服务器非常小以实现非常密集的服务器部署。因此,可能存在对用于DRAM的空间的物理约束。此外,这种超大规模系统可以利用比其它系统低成本和低功率的处理器来实现在特定热预算内的向外延展。例如,目前的低功率处理器可以包括32位处理器。这些约束的组合可以导致这样的超大规模计算系统,其无法具有足够的DRAM容量用于键-值高速缓存器,诸如memcached。
[0014]图1是图不根据本公开的系统100的不例的框图。系统100可以包括存储器刀片102,存储器刀片102经由互连108和母板112连接到超大规模计算系统104。互连108可以包括例如PCIe。
[0015]在一些示例中,PCIe附接的存储器刀片102被用于为超大规模计算系统104提供扩张的容量。存储器刀片102包括互连108 (例如PCIe桥)、轻量(例如32位)处理器106和DRAM容量。轻量处理器106可以处置通用功能以支持memcached扩展。存储器刀片102可以被多个服务器同时使用,每个服务器具有其自身的专用互连通道,该互连通道把服务器连接到存储器刀片102。在一些实施例中,存储器刀片102是物理上的远程存储器。
[0016]存储器刀片102可以包括例如:具有容量优化板的托架、与板上缓冲器芯片一起的多个双列直插存储器模块(DMM)槽、多个千兆字节到百万兆字节的DRAM、轻量处理器(例如处理器106)、用于与DRAM通信的多个存储器控制器以及互连桥(诸如PCIe桥)。存储器刀片可以是与计算机刀片相同形状因子的刀片,或者取决于空间约束而具有独立的形状因子。
[0017]为了向目标为memcached使用情况的超大规模计算系统104提供扩张的容量,可以通过与典型memcached服务器输出相同的命令(put、get、incr、decr、remove)的窄接口访问存储器刀片102。在一些实施例中,超大规模计算系统104可以包括多个超大规模服务器。
[0018]在接收到memcached请求(例如,对数据的memcached请求)时,超大规模计算系统104内的超大规模服务器可以检查其本地memcached内容以查看它是否能够服务该请求。如果它命中了它的本地高速缓存器,则操作可以如在未修改系统中那样进行,未修改系统为具有标准独立服务器的部署(例如不具有远程存储器刀片),然而,如果它未命中它的本地高速缓存器,则服务器可以确定它是否应当把该请求发送到存储器刀片102。
[0019]在接收到请求时,存储器刀片102可以检验(例如查找)它的与那个服务器相关联的高速缓存器内容,以所请求的数据进行答复,更新所请求的数据,或者答复它不具有该数据。当memcached条目由于容量约束而被从服务器驱出时,存储器刀片自身可以被填入数据。代替删除该数据,那些项目可以被放入存储器刀片中。如果存储器刀片的空间溢出,则它也可以驱出项目,并且那些项目可以被删除。当返回项目时,如果该项目将被推进到服务器的高速缓存器,存储器刀片102可以可选地从其高速缓存器移除那些项目;这可以通过服务器来完成,该服务器主动地指示它想要推进当发送对存储器刀片的访问时它正在请求的项目。
[0020]因为访问远程存储器可能要求额外时间,所以在一些实施例中当可能不具有有用的内容时,对远程存储器的访问可以被减少。过滤器110可以被用于减少对存储器刀片102的访问,并且过滤器110可以被保持在超大规模计算系统104内的服务器上。可以通过使键散列(hash)而生成过滤器索引来访问过滤器110,并且键/值对可以被查找,其中键/值对指示在存储器刀片上项目的可能存在。
[0021]在一些示例中,如果对应于键的值大于1,则存储器刀片102可能潜在地具有该键;否则如果它是0,则保证存储器刀片104不具有该键。在这样的设计中,过滤器110将不产生假否定。当项目被从本地高速缓存器驱出到存储器刀片102时,过滤器110可以被更新,并且在该时间,过滤器110可以被索引并且在该索引的值可以递增。当该项目被从存储器刀片102返回(或驱出)时,针对该索引的过滤器100的值可以递减。通过在访问存储器刀片102之前访问过滤器110,可以更快速地确定是否应当访问存储器刀片。
[0022]在一些实施例中,由于超大规模计算系统104内本地存储器的有限容量,可以采用如下策略:增加(例如优化)对本地存储器容量的使用。例如,到期项目可以从本地存储器被主动驱出。默认地,memcached使用到期项目的迟钝驱出;如果项目经过了其到期时间,则它仅在它被再次访问时被驱出。在本公开的一些示例中,超大规模服务器可以主动地发现到期项目并且把它们从本地高速缓存器驱出。可以在访问存储器刀片102期间执行这些操作,同时服务器正在等待来自存储器刀片102的响应。例如,这可能导致在把访问和转移时间重叠到存储器刀片102时工作被执行。
[0023]在一些示例中,存储器刀片102可以由超大规模计算系统104内的多个超大规模服务器共享。存储器刀片102的内容可以被静态地划分,从而为每个服务器提供一组量的存储器,或者存储器刀片102的内容可以在所有服务器(假设它们是相同memcached集群的所有部分并且被允许访问相同的内容)之间共享。静态划分可以帮助隔离每个服务器的服务质量,从而确保一个服务器不会独占高速缓存器容量。
[0024]图2是图示根据本公开的用于扩大存储器容量的方法220的示例的框图。在222,存储器刀片经由互连连接到超大规模计算系统。在多个实施例中,超大规模计算系统包括存储器内键-值高速缓存器。在一些示例中,互连可以包括PCIe。
[0025]在224,针对超大规模计算系统使用存储器刀片扩大存储器容量。在一些示例中,互连附接存储器刀片可以被用于为超大规模计算系统提供扩展的容量,如关于图1所讨论的。例如,memcached容量可以在本地高速缓存器和存储器刀片之间被划分,从而导致扩张的高速缓存器。
[0026]在一些示例中,可以利用过滤器来确定是否访问针对扩张的存储器容量的存储器刀片。例如,过滤器可以用于确定是否访问针对客户端所请求数据的存储器刀片。
[0027]图3图示根据本公开的示例的示例性计算设备330。计算设备330可以利用软件、硬件、固件和/或执行多个功能的逻辑。
[0028]计算装置330可以是硬件和程序指令的组合,该程序指令被配置为执行多个功能。该硬件例如可以包括一个或多个处理资源332、计算机可读介质(CRM)336等。程序指令(例如计算机可读指令(CRI) 344?可以包括存储在CRM336上并且可由处理资源332执行以实施期望功能(例如扩大用于超大规模计算系统的存储器容量等)的指令。
[0029]CRM336可以与多于或少于332的多个处理资源通信。处理资源332可以与有形非临时性CRM336通信,该有形非临时性CRM336存储可由一个或多个处理资源332执行的一组CRI344,如本文所描述的。CRI344还可以被存储在由服务器管理的远程存储器中并且可以表示能够下载、安装和执行的安装包。计算设备330可以包括存储器资源334,并且处理资源332可以与存储器资源334耦合。
[0030]处理资源332可以执行CRI344,CRI344可以被存储在内部或外部非临时性CRM336上。处理资源332可以执行CRI344以执行各种功能,包括图1和图2中描述的功能。
[0031]CRI344可以包括多个模块338、340和342。该多个模块338、340和342可以包括如下CR1:当被处理资源332执行时,CRI可以执行多个功能。
[0032]该多个模块338、340和342可以是其它模块的子模块。例如,接收模块338和确定模块340可以是单个模块的子模块和/或被包含在单个模块中。另外,该多个模块338、340和342可以包括彼此分离和不同的个体模块。
[0033]接收模块338可以包括CRI344并且可以由处理资源332执行以接收到超大规模计算系统的memcached请求。在一些示例中,超大规模计算系统可以包括本地memcached高速缓存系统并且经由互连(例如PCIe)被连接到存储器刀片。
[0034]确定模块364可以包括CRI344并且可以由处理资源332执行以通过分析本地memcached高速缓存系统的内容来确定memcached请求是否可以在超大规模计算系统上被服务。
[0035]执行模块342可以包括CRI344并且可以由处理资源332执行以基于所述确定来执行动作。例如,用于执行动作的可执行指令可以包括用于响应于确定memcached请求不能在超大规模计算系统上被服务而把memcached请求发送到存储器刀片的可执行指令。
[0036]在多个实施例中,用于执行动作的可执行指令可以包括用于响应于确定该请求不能在超大规模计算系统上被服务并且基于从memcached请求滤除请求数据和从memcached请求驱出请求数据中的至少一个而不把该请求发送到存储器刀片的可执行指令。例如,CRM 336可以包括用于在执行用于查找存储器刀片内的高速缓存器内容的指令时从本地memcached高速缓存系统驱出到期数据的可执行指令。
[0037]在多个实施例中,用于把请求发送到存储器刀片的指令可以包括用于查找存储器刀片内高速缓存器内容并且以来自memcached请求的所请求数据来答复超大规模计算系统的可执行指令。用于把请求发送到存储器刀片的可执行指令可以包括用于查找存储器刀片内高速缓存器内容并且以来自memcached请求的更新的所请求数据来答复超大规模计算系统的可执行指令。在一些示例中,用于把请求发送到存储器刀片的可执行指令可以包括用于查找存储器刀片内高速缓存器内容并且以所述存储器刀片不包括来自memcached请求的所请求数据来答复超大规模计算系统的可执行指令。
[0038]在本公开的一些示例中,用于执行动作的可执行指令可以包括用于响应于确定请求可以在超大规模计算系统(比如未修改(例如默认)系统)上被服务而进行的可执行指令,其中未修改系统指代独立服务器的部署的行为(例如不具有远程存储器刀片的超大规模系统,和/或标准非超大规模服务器)。
[0039]本文所使用的非临时性CRM336可以包括易失性和/或非易失性存储器。易失性存储器可以特别包括依赖于电力功率来存储信息的存储器,诸如各种类型的动态随机存取存储器(DRAM)等等。非易失性存储器可以包括不依赖于电力功率来存储信息的存储器。非易失性存储器的示例可以包括固态介质,诸如闪存、电可擦除可编程只读存储器(EEPROM)、相变随机存取存储器(PCRAM)、磁性存储器(诸如硬盘、磁带驱动器、软盘和/或磁带存储器)、光盘、数字通用盘(DVD)、蓝光盘(BD)、紧凑盘(⑶)和/或固态驱动器(SSD)等,以及其它类型的计算机可读介质。
[0040]非临时性CRM336可以是与计算设备为一体的,或者以有线和/或无线方式通信耦合到计算设备。例如,非临时性CRM336可以是内部存储器、便携存储器、便携盘或与另一计算资源相关联的存储器(例如使CRI344能够被横跨网络(诸如因特网)转移和/或执行)。
[0041]CRM336可以经由通信路径346与处理资源332通信。通信路径346可以相对于与处理资源332相关联的机器(例如计算机)在本地或是远程的。本地通信路径346的示例可以包括机器(例如计算机)内部的电子总线,其中CRM336是易失性、非易失性、固定、和/或可移除存储介质之一,其经由电子总线与处理资源332通信。除了其它类型的电子总线及其变型之外,这种电子总线的示例可以特别包括工业标准架构(ISA)、外围部件互连(PCI),高级技术附件(ATA)、小型计算机系统界面(SCSI)、通用串行总线(USB)。
[0042]通信路径346可以使得CRMA336距处理资源(例如处理资源332)为远程的,通信路径346诸如为在CRM336和处理资源(例如处理资源332)之间的网络连接。S卩,通信路径346可以是网络连接。这种网络连接的示例可以特别包括局域网(LAN)、广域网(WAN)、个域网(PAN)和因特网。在这样的示例中,CRM336可以与第一计算设备相关联并且处理资源332可以与第二计算设备(例如Java?服务器)相关联。例如,处理资源332可以与CRM336通信,其中CRM336包括指令集并且其中处理资源332被设计为执行该指令集。
[0043]如本文使用的,“逻辑”是替代或附加的处理资源,用于执行本文描述的特定动作和/或功能等,其包括硬件(例如各种形式的晶体管逻辑、专用集成电路(ASIC)等),与存储在存储器中并可由处理器执行的计算机可执行指令(例如,软件、固件等)相反。
[0044]说明书示例提供了对本公开的系统和方法的应用和使用的描述。因为可以在不脱离本公开的系统和方法的精神和范围的情况下做出许多示例,本说明书阐述了许多可能示例性配置和实施方式中的一些。
【权利要求】
1.一种用于扩大超大规模计算系统的存储器容量的方法,包括: 经由互连把存储器刀片连接到超大规模计算系统,其中超大规模计算系统包括存储器内键-值高速缓存器;以及 针对超大规模计算系统使用存储器刀片扩大存储器容量。
2.根据权利要求1所述的方法,还包括:使用过滤器确定是否访问用于存储器容量的存储器刀片。
3.根据权利要求1所述的方法,其中存储器内键-值高速缓存器包括memcached高速缓存系统。
4.根据权利要求1所述的方法,其中互连包括外围部件快速互连扩张总线。
5.一种非临时性计算机可读介质,存储用于针对超大规模计算系统扩大存储器容量的指令集,所述指令集可由处理资源执行以便: 接收到超大规模计算系统的memcached请求,其中超大规模计算系统包括本地memcached高速缓存系统并且经由外围部件快速互连扩张总线被连接到存储器刀片; 通过分析本地memcached高速缓存系统的内容来确定memcached请求是否能够在超大规模计算系统上被服务;以及 基于所述确定来执行动作。
6.根据权利要求7的非临时性计算机可读介质,其中用于执行动作的可执行指令包括:用于响应于确定memcached请求不能在超大规模计算系统上被服务而把memcached请求发送到存储器刀片的可执行指令。
7.根据权利要求6的非临时性计算机可读介质,其中用于把所述请求发送到存储器刀片的指令还包括:用于查找存储器刀片内高速缓存器内容并且以来自memcached请求的所请求数据来答复超大规模计算系统的可执行指令。
8.根据权利要求6的非临时性计算机可读介质,其中用于把所述请求发送到存储器刀片的指令还包括:用于查找存储器刀片内高速缓存器内容并且以来自memcached请求的更新的所请求数据来答复超大规模计算系统的可执行指令。
9.根据权利要求6的非临时性计算机可读介质,其中用于把所述请求发送到存储器刀片的指令还包括:用于查找存储器刀片内高速缓存器内容并且以所述存储器刀片不包括来自memcached请求的所请求数据来答复超大规模计算系统的可执行指令。
10.根据权利要求5的非临时性计算机可读介质,其中,用于执行动作的可执行指令包括:用于响应于确定所述请求不能在超大规模计算系统上被服务并且基于从memcached请求滤除所请求数据和从memcached请求驱出所请求数据中的至少一个而不把所述请求发送到存储器刀片的可执行指令。
11.根据权利要求5的非临时性计算机可读介质,其中,用于执行动作的可执行指令包括:用于响应于确定请求能够在作为未修改系统的超大规模计算系统上被服务而进行的可执行指令。
12.根据权利要求7的非临时性计算机可读介质,还包括用于在用于在存储器刀片内查找高速缓存器内容的指令被执行时从本地memcached高速缓存系统驱出到期数据的可执行指令。
13.一种系统,包括: 存储器刀片,用于针对超大规模计算系统扩大存储器容量;以及超大规模计算系统,经由外围部件快速互连扩张总线连接到存储器刀片,超大规模计算系统包括: memcached高速缓存系统;以及 过滤器,用于检测存储器刀片上数据的存在并且确定是否访问所述数据。
14.根据权利要求12的系统,其中,所述过滤器产生非假否定。
15.根据权利要求12的系统,其中,所述存储器刀片由超大规模计算系统的多个服务器共享,并且存储器刀片的内容在所述多个服务器之间被静态划分。
【文档编号】G06F9/44GK104508647SQ201280075200
【公开日】2015年4月8日 申请日期:2012年6月8日 优先权日:2012年6月8日
【发明者】T. 林 K., 欧阳 A. 申请人:惠普发展公司,有限责任合伙企业
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1