CN104750614B - 用于管理存储器的方法和装置 - Google Patents
用于管理存储器的方法和装置 Download PDFInfo
- Publication number
- CN104750614B CN104750614B CN201310750628.9A CN201310750628A CN104750614B CN 104750614 B CN104750614 B CN 104750614B CN 201310750628 A CN201310750628 A CN 201310750628A CN 104750614 B CN104750614 B CN 104750614B
- Authority
- CN
- China
- Prior art keywords
- memory
- address
- computing device
- available
- shared
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0638—Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3034—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3442—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for planning or managing the needed capacity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1072—Decentralised address translation, e.g. in distributed shared memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1663—Access to shared memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/205—Hybrid memory, e.g. using both volatile and non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
Abstract
本发明的实施方式提供了用于管理存储器的方法和装置。具体地,在本发明的一个实施方式中,提供了一种用于管理存储器的方法,包括:监视第一计算设备中的存储器的使用状态以确定可用地址;将可用地址中的至少一部分映射至外部可访问的共享地址;以及基于存储器表管理共享地址以使得由第二计算设备经由共享地址可访问可用地址中的至少一部分,其中存储器被连接至第一计算设备的双列直插存储模块接口。在本发明的另一实施方式中,提供了一种用于管理存储器的装置。采用本发明所述的方法和装置,可以在多个计算设备之间共享存储器,提高存储器的使用效率进而降低成本。
Description
技术领域
本发明的各实施方式涉及资源管理,更具体地,涉及用于管理存储器的方法和装置。
背景技术
随着计算机硬件技术的发展,已经开发出了多种类型的通信接口、以及多种类型的存储介质,这些技术为实现更高速度的存储器访问提供了硬件基础。另一方面,随着计算机软件技术以及高速网络技术的发展,已经可以实现跨越多个计算设备来进行资源共享。目前,如何进一步提高资源共享的效率已经成为一个关注的焦点。
目前已经可以实现在多个计算设备之间进行存储器资源的共享。基于访问速度的不同,存储器可以包括多个级别。例如,计算设备可以包括高速缓存、内存和硬盘等多级存储器。由于这些存储器具有不同的硬件特征以及访问速度,因而在共享策略方面也有所不同。
目前已经实现了对于诸如硬盘等存储器设备的共享,然而由于内存的访问速度、以及内存与计算设备的中央处理器(CPU)之间的传输效率等方面的限制,目前还没有实现用于在多个计算设备之间高效地共享内存的技术方案。本发明的各个实施方式关注于如何实现内存共享,因而本发明的下文中所述的存储器特指计算设备中的内存。
在现有的集群环境中经常会出现这样的情况,集群中的各个计算设备(例如,服务器)具有自身的存储器。由于存储器的大小是影响计算设备的数据处理能力的一项关键因素,因而为了使得计算设备具有较高的数据处理能力,通常在计算设备中配置较大容量的存储器。当运行不同的应用程序时,计算设备通常需要不同数量的存储器的支持,因而对于存储器的需求的峰值和谷值之间存在相当大的差异。
当计算设备执行大型应用程序时,很可能会出现存储器资源短缺的情况,而当计算设备负载较轻时则会出现大量存储器资源处于空闲状态的情况。存储器(例如,随机访问存储器(RAM))目前还处于相对较高的价位,因而期望可以在多个计算设备之间共享存储器,提高存储器的使用效率进而降低成本。
发明内容
因而,期望能够开发出一种管理存储器的技术方案,期望该技术方案可以支持在多个计算设备之间共享存储器,并且还期望可以在尽量不改变集群环境中的计算设备的现有配置的情况下实现该技术方案。
在本发明的一个实施方式中,提供了一种用于管理存储器的方法,包括:监视第一计算设备中的存储器的使用状态以确定可用地址;将可用地址中的至少一部分映射至外部可访问的共享地址;以及基于存储器表管理共享地址以使得由第二计算设备经由共享地址可访问可用地址中的至少一部分,其中存储器被连接至第一计算设备的双列直插存储模块接口。
在本发明的一个实施方式中,将可用地址中的至少一部分映射至外部可访问的共享地址包括:将可用地址中的至少一部分注册至第一计算设备的网络适配器;以及基于网络适配器的配置来获取与可用地址中的至少一部分相对应的共享地址。
在本发明的一个实施方式中,提供了一种用于管理存储器的方法,包括:响应于第二计算设备中出现存储器短缺,从第一计算设备请求存储器,其中存储器是根据本发明的方法中的存储器。
在本发明的一个实施方式中,进一步包括:响应于第二计算设备完成对存储器的使用,释放存储器。
在本发明的一个实施方式中,提供了一种用于管理存储器的装置,包括:监视模块,配置用于监视第一计算设备中的存储器的使用状态以确定可用地址;映射模块,配置用于将可用地址中的至少一部分映射至外部可访问的共享地址;以及管理模块,配置用于基于存储器表管理共享地址以使得由第二计算设备经由共享地址可访问可用地址中的至少一部分,其中存储器被连接至第一计算设备的双列直插存储模块接口。
在本发明的一个实施方式中,映射模块包括:注册模块,配置用于将可用地址中的至少一部分注册至第一计算设备的网络适配器;以及获取模块,配置用于基于网络适配器的配置来获取与可用地址中的至少一部分相对应的共享地址。
在本发明的一个实施方式中,提供了一种用于管理存储器的装置,包括:请求模块,配置用于响应于第二计算设备中出现存储器短缺,从第一计算设备请求存储器,其中存储器是根据本发明的装置中的存储器。
在本发明的一个实施方式中,进一步包括:释放模块,配置用于响应于第二计算设备完成对存储器的使用,释放存储器。
采用本发明所述的方法和装置,可以提供一种用于管理存储器的技术方案,该技术方案可以支持在多个计算设备之间进行存储器共享,以便尽可能地利用工作负载较低的计算设备中的空闲存储器资源,在提高资源利用率的同时降低计算设备的硬件成本。
附图说明
结合附图并参考以下详细说明,本发明各实施方式的特征、优点及其他方面将变得更加明显,在此以示例性而非限制性的方式示出了本发明的若干实施方式。在附图中:
图1示意性示出了适于实现本发明实施方式的示例性计算系统的框图;
图2示意性示出了根据一个技术方案的存储器连接关系的架构图;
图3示意性示出了根据本发明一个实施方式的存储器连接关系的架构图;
图4示意性示出了根据本发明一个实施方式的用于管理存储器的方法的流程图;
图5示意性示出了根据本发明一个实施方式的地址映射关系的框图;
图6示意性示出了根据本发明一个实施方式的用于在存储器服务器和存储器客户端之间共享存储器的技术方案的架构图;以及
图7A和7B分别示意性示出了根据本发明一个实施方式的用于管理存储器的装置的框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了适于用来实现本发明实施方式的示例性计算系统100的框图。如图1所示,计算机系统100可以包括:CPU(中央处理单元)101、RAM(随机访问存储器)102、ROM(只读存储器)103、系统总线104、硬盘控制器105、键盘控制器106、串行接口控制器107、并行接口控制器108、显示控制器109、硬盘110、键盘111、串行外部设备112、并行外部设备113和触摸屏显示器114。在这些设备中,与系统总线104耦合的有CPU101、RAM102、ROM103、硬盘控制器105、键盘控制器106、串行控制器107、并行控制器108和显示控制器109。硬盘110与硬盘控制器105耦合,键盘111与键盘控制器106耦合,串行外部设备112与串行接口控制器107耦合,并行外部设备113与并行接口控制器108耦合,以及触摸屏显示器114与显示控制器109耦合。应当理解,图1所示的结构框图仅仅是为了示例的目的,而不是对本发明范围的限制。在某些情况下,可以根据具体情况增加或减少某些设备。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施方式中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言一诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供者来通过因特网连接)。
下面将参照本发明实施方式的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其他可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其他可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructionmeans)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其他可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
图2示意性示出了根据一个技术方案的存储器连接关系的架构图200。如图2所示,CPU210通过双列直插存储模(Dual In-line Memory Module,DIMM)接口来连接至存储器(例如,RAM250)。DIMM提供64位的数据通道,可以提供较为高速的数据访问。另外,CPU210还可以连接至北桥220和南桥230,并且快闪(例如,快闪252和254)可以分别被连接至北桥220和南桥230。北桥220和南桥230可以在CPU210和快闪252/254之间传输数据。本领域技术人员应当理解,CPU210对于快闪252/254的访问速度并不及对于RAM250的访问速度,而是存在相当大的差异。
应当注意,尽管快闪252和254可以在一定程度上扩展对于CPU210可用的存储器的容量,然而,由于北桥220和南桥230自身的数据传输速度和时间延迟的限制,CPU210访问快闪252和254的速度并不十分理想。
如图2所示的技术方案存在如下问题:一方面,尽管CPU210经由DIMM240访问RAM250的速度较快,然而,由于RAM250的价格较高并且容量有限,难以在计算设备中安装大容量的RAM;另一方面,尽管快闪252和254相对而言较为便宜并且容量相对较大,然而由于CPU210经由北桥220和南桥230对快闪的访问速度并不理想,造成快闪并不能为扩展存储器容量提供有力的支持。
因而,期望能够提供一种更有效地管理计算设备中的存储器的技术方案,并且期望该技术方案能够在扩展当前计算设备的存储器容量的同时,还可以将其中的一部分空闲的存储器空间提供用于其他计算设备使用。
为了解决上述技术方案中的问题,本申请的各个实施方式提供了一种用于管理存储器的方法和装置。具体地,图3示意性示出了根据本发明一个实施方式的存储器连接关系的架构图300。如图3所示,架构图300与图2中的架构图200的不同之处在于,除了RAM250以外,还将快闪356连接至DIMM240。
以此方式,CPU210可以经由DIMM240来访问RAM250和/或快闪356。一方面,RAM250具有较高的数据访问速度,可以向CPU210提供高速度、低延迟的存储器;另一方面,快闪356的成本较低并且可以具有较大的存储容量,此外由DIMM240接口所支持的数据访问速度显著高于由北桥220和南桥230所支持的数据访问速度,因而可以向CPU210提供较快并且较大容量的存储器。
按照图3所示的架构图,不但可以扩展计算设备自身的存储器容量,还有可能在计算设备中的工作负载较低时,向其他计算设备提供空闲的存储器资源。基于图3所示的原理,本发明的一个实施方式提供了一种用于管理存储器的方法,包括:监视第一计算设备中的存储器的使用状态以确定可用地址;将可用地址中的至少一部分映射至外部可访问的共享地址;以及基于存储器表管理共享地址以使得由第二计算设备经由共享地址可访问第一计算设备的可用地址中的至少一部分,其中存储器被连接至第一计算设备的双列直插存储模块接口。
应当注意,在本发明的上下文中,“可用地址”是指在该第一计算设备的存储器中的当前没有被应用程序占用的空闲的存储器地址。
还应当注意,在本发明上下文中,“共享地址”是指可以由一个或者多个第二计算设备通过网络进行访问的地址。并且,本发明中的“共享地址”以排他性方式访问。换言之,一旦这些地址中的任何一部分被分配给某个第二计算设备,则该部分地址只能以独占的方式被该第二计算设备访问;并且在该第二计算设备释放这部分地址之前,不能被其他计算设备访问。
图4示意性示出了根据本发明一个实施方式的用于管理存储器的方法的流程图400。具体地,在步骤S402中,监视第一计算设备中的存储器的使用状态以确定可用地址,其中存储器被连接至第一计算设备的双列直插存储模块接口。
具体地,可以记录存储器中的各个地址范围的工作状态,以便确定可用地址。在此实施方式中,可用地址可以是存储器中的一个或者多个地址范围,例如,地址范围[0x00...1...0,0x00...4...0]、[0x00...8...0,0x00...F...0],等等。
另外在此实施方式中,计算设备可以具有混合的存储器类型,例如,快闪可以采用快闪固态驱动(Flash Solid State Drive)SSD,备选地,还可以采用相变存储器(PhaseChange Memory)。除了本申请给出的存储器的具体类型以外,本领域技术人员还可以采用现在已知或者将在未来开发的其他类型的存储装置,只要CPU能够经由DIMM接口来与该存储装置进行通信即可。
在步骤S404中,将可用地址中的至少一部分映射至外部可访问的共享地址。计算设备可以根据预定的共享策略来选择可用地址中的一部分。例如,可以预先确定从混合存储器中选择哪种类型的存储器,可以预先确定预留多少存储器空间以供计算设备自身使用,等等。具体地,由于RAM类型的存储器访问速度较快,可以预留较大比例的RAM来供计算设备自身使用;或者,还可以将RAM全部用于计算设备自身使用,并且选择快闪存储器中的一部分地址(例如,不高于15%)用于其他计算设备使用。
在步骤S406中,基于存储器表管理共享地址以使得由第二计算设备经由共享地址可访问可用地址中的至少一部分。可以维护存储器表,来用于管理从可用地址中选择的并被映射至共享地址的存储器的部分。存储器表中可以维护共享地址的当前使用状态,以便支持由第二计算设备经由共享地址可访问可用地址中的至少一部分。在此实施方式中,共享地址可以是其他计算设备(例如,第二计算设备)经由网络可访问的存储器地址。
应当注意,根据本发明的原理,尽管第一计算设备也可以经由共享地址访问自身的存储器,然而本发明主要涉及由不同于第一计算设备的第二计算设备访问第一计算设备中的存储器的情况。
在具体实现中,第一计算设备可以其他方式来获取所需的存储器资源。例如,第一计算设备可以使用“全局存储器表”来记录存储器的使用状态(例如,可用和已占用)。当可用地址中的一部分被映射至共享地址时,则该部分地址在全局存储器表中的状态被标记为“已占用”。第一计算设备可用首先从“全局存储器表”中申请存储器资源;如果得不到满足,则可以申请访问该第一计算设备的“共享地址”中尚未被其他计算设备占用的地址;如果仍得不到满足,则可以申请访问其他计算设备的“共享地址”。
在本发明的一个实施方式中,将可用地址中的至少一部分映射至外部可访问的共享地址包括:将可用地址中的至少一部分注册至第一计算设备的网络适配器;以及基于网络适配器的配置来获取与可用地址中的至少一部分相对应的共享地址。
根据本发明的各个实施方式,需要经由网络来在各个计算设备之间共享存储器,因而,需要将共享地址注册至第一计算设备的网络适配器。本领域技术人员应当理解,第一计算设备可以经由网络适配器来与其他计算设备进行通信,因而还需要基于网络适配器的配置来将存储器的可用地址转换至外部可访问的共享地址。
简单而言,可以在可用地址之前(或者其他位置)加入网络适配器的地址,以便其他计算设备可以首先经由网络适配器地址找到提供共享存储器的第一计算设备,继而再根据第一计算设备内的存储器地址来访问被共享的存储器。参见图5,其中示意性示出了根据本发明一个实施方式的地址映射关系的框图500。
如图5所示,假设存储器510中包括可用地址1512[0x00...1...0,0x00...4...0]、可用地址2514[0x00...8...0,0x00...F...0],等;并且假设网络适配器地址为“MemoryServer1”,则针对可用地址1 512和可用地址2 514的共享地址可以表示为共享地址530,则具体地共享地址530可以表示为:
MemoryServer1[0x00...1...0,0x00...4...0];
MemoryServer1[0x00...8...0,0x00...F...0];
应当注意,上文中仅仅示意性示出了共享地址的格式的一个具体示例,本领域技术人员可以采用其他格式来实现。
在本发明的一个实施方式中,存储器表描述共享地址的使用状态,使用状态至少包括“可用”和“已占用”,以及初始时使用状态为“可用”。应当注意,由于共享地址是由其他计算设备通过网络可访问的地址,因而存储器表中的使用状态是指存储器是否被第一计算设备以外的其他计算设备占用的状态。在共享的初始阶段,共享地址的全部范围可以被设置为“可用”。具体地,在共享的初始阶段,存储器表可以采用如表1所示的数据结构来表示。本领域技术人员应当注意,下文表1仅仅示意性示出了存储器表的数据结构的一个具体示例,备选地,还可以采用其他数据结构来定义存储器表。
表1存储器表
序号 | 共享地址 | 使用状态 | 使用者 |
1 | MemoryServer1[0x00...1...0,0x00...4...0] | 可用 | NULL |
2 | MemoryServer1[0x00...8...0,0x00...F...0] | 可用 | NULL |
... | ... | ... | ... |
在本发明的一个实施方式中,基于存储器表管理共享地址以使得由第二计算设备经由共享地址可访问可用地址中的至少一部分包括:响应于来自第二计算设备的使用请求,向第二计算设备分配共享地址中使用状态为“可用”的至少一部分共享地址;以及将至少一部分共享地址的使用状态更新为“已占用”。
当接收到第二计算设备的请求时,可以将第一计算设备中的存储器分配给第二计算设备使用。由于在存储器表中保持了共享地址是否可用的相关信息,因而可以基于该存储器表中“使用状态”一列的内容,向第二计算设备分配共享地址中使用状态为“可用”的共享地址。
随着共享地址中的某些范围被其他计算设备占用,这些范围的共享地址的状态可以被更新为“已占用”。举例而言,假设当前的存储器列表如上文中表1所示,当第二计算设备(例如,设备名称为MemoryClient1)请求100MB的存储器空间时,可以访问共享地址中范围MemoryServer1[0x00...1...0,0x00...4...0]内的100M的使用状态为“可用”的存储器。将地址范围MemoryServer1[0x00...1...0,0x00...2...0]分配给第二计算设备使用,则此时的存储器表将被更新至如表2所示的形式。
表2更新后的存储器表
序号 | 共享地址 | 使用状态 | 使用者 |
1 | MemoryServer1[0x00...1...0,0x00...2...0] | 已占用 | MemoryClient1 |
2 | MemoryServer1[0x00...2...0,0x00...4...0] | 可用 | NULL |
3 | MemoryServer1[0x00...8...0,0x00...F...0] | 可用 | NULL |
... | ... | ... | ... |
在本发明的一个实施方式中,进一步包括:响应于来自第二计算设备的释放请求,释放对应于释放请求的共享地址;以及将释放的共享地址的使用状态更新为“可用”。继续上文所述的示例,当第二计算设备释放了地址范围为MemoryServer1[0x00...1...0,0x00...4...0]的存储器之后,存储器表可以被再次更新,并且更新后的存储器表可以如表1所示。
图6示意性示出了根据本发明一个实施方式的用于在存储器服务器(对应于第一计算设备)和存储器客户端(对应于第二计算设备)之间共享存储器的技术方案的架构图600。如图6所示,在存储器服务器610中,RAM250和快闪356可以被连接至DIMM240。此时,RAM250和快闪356中的至少一部分存储器空间可以通过共享地址来由其他计算设备访问。
存储器客户端1 630、存储器客户端2 632和存储器客户端N 634可以通过网络620并经由共享地址来访问存储器服务器610中的存储器的可共享部分。应当注意,本发明的实施方式并不限制在计算设备的集群中存储器服务器和存储器客户端数量,而是应当注意,存储器服务器和存储器客户端是相对的概念。
例如,当计算设备A向其他计算设备共享自身的存储器时,该计算设备A相对于消费存储器的其他计算设备而言充当存储器服务器;而当该计算设备A自身存储器资源不足并且正在向其他计算设备请求存储器资源时,则该计算设备A相对于提供共享资源的计算设备而言变为存储器客户端。另外,根据本发明的实施方式,一个计算设备可以同时既充当存储器服务器又充当存储器客户端。
由于计算设备访问其他计算设备的存储器资源的速度通常会低于访问自身的存储器资源的速度,因而应当尽量避免计算设备自身存储器耗尽、并且只能向其他的存储器服务器请求存储器资源的情况。
根据本发明的实施方式,可以采用多种方式来避免充当存储器服务器的计算设备自身出现存储器资源短缺的情况。例如,可以设置共享存储器的最大值,例如,最多仅共享总存储器资源的15%;可以在存储器客户端使用完存储器资源后,向存储器服务器返回先前分配的资源;可以在需要时向存储器服务器返回当前使用状态为“可用”的共享地址;或者还可以在需要时通知存储器客户端释放所分配的资源,并且向存储器服务器返回该资源,等等。
在本发明的一个实施方式中,进一步包括:响应于第一计算设备中出现存储器短缺,向第一计算设备返回与使用状态为“可用”的至少一部分共享地址相关联的存储器;以及解除返回的存储器与相应的共享地址之间的映射。在此实施方式中,使用状态为“可用”的资源当前并未被任何计算设备使用,属于空闲存储器资源,因而可以将该存储器返回第一计算设备以便由运行于第一计算设备上的应用调用。
在本发明的一个实施方式中,进一步包括:响应于来自第二计算设备的释放请求,向第一计算设备返回与对应于释放请求的共享地址相关联的存储器;以及解除返回的存储器与相应的共享地址之间的映射。
在此实施方式中,可以将第二计算设备释放的资源直接返回第一计算设备以便由运行于第一计算设备上的应用调用,而无关于第一计算设备中是否出现存储器资源短缺。在本发明的各个实施方式中,可以周期性地监视第一计算设备中的存储器的使用状态,当该使用状态满足共享策略时,则可以按照上文所述的方法来确定可用地址。以此方式,可以为第一计算设备预留较多的可用存储器资源。
在本发明的一个实施方式中,还可以在存储器表中设置“可返回”的使用状态,该状态表示相应的共享地址目前处于空闲、并且在第一计算设备资源短缺时可以优先返回该共享地址。
在本发明的一个实施方式中,存储器是以下中的任一项:固态盘存储器、相变存储器、以及随机访问存储器。如上文所述,在本发明的实施方式中,存储器可以是混合存储器,并且具体地可以采取固态盘存储器、相变存储器、以及随机访问存储器的形式。这些存储器可以具有不同的数据访问效率、不同的容量、以及不同的硬件成本。
在上文中已经参见附图详细描述了用于向其他计算设备共享存储器的存储器服务器的具体实现,对应于该存储器服务器,本发明的各个实施方式还提供了一种使用存储器服务器中的存储器的方法。
在本发明的一个实施方式中,提供了一种用于管理存储器的方法,包括:响应于第二计算设备中出现存储器短缺,从第一计算设备请求存储器,其中存储器是根据上文所述的存储器。在此实施方式中,第二计算设备充当存储器客户端,用于在自身存储器资源短缺时请求第一计算设备(充当存储器服务器)中的存储器资源。
在本发明的一个实施方式中,响应于第二计算设备完成对存储器的使用,释放存储器。当存储器客户端已经完成使用时,可以释放第一计算设备向第二计算设备所分配的存储器。继而,第一存储器可以按照如上文所述的方式来处理第二计算设备释放的存储器。
图7A和7B分别示意性示出了根据本发明一个实施方式的用于管理存储器的装置的框图700A和700B。具体地,图7A提供了一种用于管理存储器的装置,包括:监视模块710A,配置用于监视第一计算设备中的存储器的使用状态以确定可用地址;映射模块720A,配置用于将可用地址中的至少一部分映射至外部可访问的共享地址;以及管理模块730A,配置基于存储器表管理共享地址以使得由第二计算设备经由共享地址可访问可用地址中的至少一部分,其中存储器被连接至第一计算设备的双列直插存储模块接口。
在本发明的一个实施方式中,映射模块720A包括:注册模块,配置用于将可用地址中的至少一部分注册至第一计算设备的网络适配器;以及获取模块,配置用于基于网络适配器的配置来获取与可用地址中的至少一部分相对应的共享地址。
在本发明的一个实施方式中,存储器表描述共享地址的使用状态,使用状态至少包括“可用”和“已占用”,以及初始时使用状态为“可用”。
在本发明的一个实施方式中,管理模块730A包括:分配模块,配置用于响应于来自第二计算设备的使用请求,向第二计算设备分配共享地址中使用状态为“可用”的至少一部分共享地址;以及第一更新模块,配置用于将至少一部分共享地址的使用状态更新为“已占用”。
在本发明的一个实施方式中,进一步包括:第一释放模块,配置用于响应于来自第二计算设备的释放请求,释放对应于释放请求的共享地址;以及第二更新模块,配置用于将释放的共享地址的使用状态更新为“可用”。
在本发明的一个实施方式中,进一步包括:第一返回模块,配置用于响应于第一计算设备中出现存储器短缺,向第一计算设备返回与使用状态为“可用”的至少一部分共享地址相关联的存储器;以及第一解除模块,配置用于解除返回的存储器与相应的共享地址之间的映射。
在本发明的一个实施方式中,进一步包括:第二返回模块,配置用于响应于来自第二计算设备的释放请求,向第一计算设备返回与对应于释放请求的共享地址相关联的存储器;以及第二解除模块,配置用于解除返回的存储器与相应的共享地址之间的映射。
在本发明的一个实施方式中,存储器是以下中的任一项:固态盘存储器、相变存储器、以及随机访问存储器。
图7B提供了一种用于管理存储器的装置,包括:请求模块710B,配置用于响应于第二计算设备中出现存储器短缺,从第一计算设备请求存储器,其中存储器是根据上文方法中所述的存储器。
在本发明的一个实施方式中,进一步包括:释放模块720B,配置用于响应于第二计算设备完成对存储器的使用,释放存储器。
附图中的流程图和框图显示了根据本发明的多个实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施方式,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施方式。在不偏离所说明的各实施方式的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施方式的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其他普通技术人员能理解本文披露的各实施方式。
Claims (18)
1.一种用于管理存储器的方法,包括:
监视第一计算设备中的存储器的使用状态以确定可用地址;
将所述可用地址中的至少一部分映射至外部可访问的共享地址;以及
基于存储器表管理所述共享地址以使得由第二计算设备经由所述共享地址可访问所述可用地址中的所述至少一部分,
其中所述存储器被连接至所述第一计算设备的双列直插存储模块接口,
其中将所述可用地址中的至少一部分映射至外部可访问的共享地址包括:
将所述可用地址中的所述至少一部分注册至所述第一计算设备的网络适配器;以及
基于所述网络适配器的配置来获取与所述可用地址中的所述至少一部分相对应的共享地址。
2.根据权利要求1所述的方法,其中所述存储器表描述所述共享地址的使用状态,所述使用状态至少包括“可用”和“已占用”,以及初始时所述使用状态为“可用”。
3.根据权利要求2所述的方法,其中基于所述存储器表管理所述共享地址以使得由所述第二计算设备经由所述共享地址可访问所述可用地址中的所述至少一部分包括:
响应于来自所述第二计算设备的使用请求,向所述第二计算设备分配所述共享地址中使用状态为“可用”的至少一部分共享地址;以及
将所述至少一部分共享地址的使用状态更新为“已占用”。
4.根据权利要求3所述的方法,进一步包括:
响应于来自所述第二计算设备的释放请求,释放对应于所述释放请求的共享地址;以及
将释放的所述共享地址的使用状态更新为“可用”。
5.根据权利要求1所述的方法,进一步包括:
响应于所述第一计算设备中出现存储器短缺,向所述第一计算设备返回与使用状态为“可用”的至少一部分共享地址相关联的存储器;以及
解除返回的所述存储器与相应的共享地址之间的映射。
6.根据权利要求3所述的方法,进一步包括:
响应于来自所述第二计算设备的释放请求,向所述第一计算设备返回与对应于所述释放请求的共享地址相关联的存储器;以及
解除返回的所述存储器与相应的共享地址之间的映射。
7.根据权利要求1所述的方法,其中所述存储器是以下中的任一项:固态盘存储器、相变存储器、以及随机访问存储器。
8.一种用于管理存储器的方法,包括:
响应于第二计算设备中出现存储器短缺,从第一计算设备请求存储器,其中所述存储器是由根据权利要求1-7中的任一项所述的方法管理的存储器。
9.根据权利要求8所述的方法,进一步包括:
响应于所述第二计算设备完成对所述存储器的使用,释放所述存储器。
10.一种用于管理存储器的装置,包括:
监视模块,配置用于监视第一计算设备中的存储器的使用状态以确定可用地址;
映射模块,配置用于将所述可用地址中的至少一部分映射至外部可访问的共享地址;以及
管理模块,配置用于基于存储器表管理所述共享地址以使得由第二计算设备经由所述共享地址可访问所述可用地址中的所述至少一部分,
其中所述存储器被连接至所述第一计算设备的双列直插存储模块接口,
其中所述映射模块包括:
注册模块,配置用于将所述可用地址中的所述至少一部分注册至所述第一计算设备的网络适配器;以及
获取模块,配置用于基于所述网络适配器的配置来获取与所述可用地址中的所述至少一部分相对应的共享地址。
11.根据权利要求10所述的装置,其中所述存储器表描述所述共享地址的使用状态,所述使用状态至少包括“可用”和“已占用”,以及初始时所述使用状态为“可用”。
12.根据权利要求11所述的装置,其中所述管理模块包括:
分配模块,配置用于响应于来自所述第二计算设备的使用请求,向所述第二计算设备分配所述共享地址中使用状态为“可用”的至少一部分共享地址;以及
第一更新模块,配置用于将所述至少一部分共享地址的使用状态更新为“已占用”。
13.根据权利要求12所述的装置,进一步包括:
第一释放模块,配置用于响应于来自所述第二计算设备的释放请求,释放对应于所述释放请求的共享地址;以及
第二更新模块,配置用于将释放的所述共享地址的使用状态更新为“可用”。
14.根据权利要求10所述的装置,进一步包括:
第一返回模块,配置用于响应于所述第一计算设备中出现存储器短缺,向所述第一计算设备返回与使用状态为“可用”的至少一部分共享地址相关联的存储器;以及
第一解除模块,配置用于解除返回的所述存储器与相应的共享地址之间的映射。
15.根据权利要求12所述的装置,进一步包括:
第二返回模块,配置用于响应于来自所述第二计算设备的释放请求,向所述第一计算设备返回与对应于所述释放请求的共享地址相关联的存储器;以及
第二解除模块,配置用于解除返回的所述存储器与相应的共享地址之间的映射。
16.根据权利要求10所述的装置,其中所述存储器是以下中的任一项:固态盘存储器、相变存储器、以及随机访问存储器。
17.一种用于管理存储器的装置,包括:
请求模块,配置用于响应于第二计算设备中出现存储器短缺,从第一计算设备请求存储器,其中所述存储器是由根据权利要求10-16中的任一项所述的装置管理的存储器。
18.根据权利要求17所述的装置,进一步包括:
释放模块,配置用于响应于所述第二计算设备完成对所述存储器的使用,释放所述存储器。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310750628.9A CN104750614B (zh) | 2013-12-26 | 2013-12-26 | 用于管理存储器的方法和装置 |
US14/572,039 US9547590B2 (en) | 2013-12-26 | 2014-12-16 | Managing memory |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310750628.9A CN104750614B (zh) | 2013-12-26 | 2013-12-26 | 用于管理存储器的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104750614A CN104750614A (zh) | 2015-07-01 |
CN104750614B true CN104750614B (zh) | 2018-04-10 |
Family
ID=53481905
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310750628.9A Active CN104750614B (zh) | 2013-12-26 | 2013-12-26 | 用于管理存储器的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9547590B2 (zh) |
CN (1) | CN104750614B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10185692B2 (en) | 2016-08-22 | 2019-01-22 | International Business Machines Corporation | Monitoring use of specialized hardware components (SHC) of processors in heterogeneous environments by storing event counts during execution |
CN108228078A (zh) * | 2016-12-21 | 2018-06-29 | 伊姆西Ip控股有限责任公司 | 用于存储系统中的数据访问方法和装置 |
KR102540964B1 (ko) * | 2018-02-12 | 2023-06-07 | 삼성전자주식회사 | 입출력 장치의 활용도 및 성능을 조절하는 메모리 컨트롤러, 애플리케이션 프로세서 및 메모리 컨트롤러의 동작 |
CN110389905B (zh) | 2018-04-20 | 2023-12-19 | 伊姆西Ip控股有限责任公司 | 资源释放方法、资源分配方法、设备和计算机程序产品 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0844559A2 (en) * | 1996-11-22 | 1998-05-27 | MangoSoft Corporation | Shared memory computer networks |
CN101025697A (zh) * | 2007-04-05 | 2007-08-29 | 杭州华为三康技术有限公司 | 实现用户配置的方法、系统及主核和从核 |
CN101739380A (zh) * | 2009-12-11 | 2010-06-16 | 中国航空无线电电子研究所 | 基于共享内存结构的多处理机通信装置及其方法 |
CN102184743A (zh) * | 2011-05-20 | 2011-09-14 | 深圳市宝德通讯技术有限公司 | 一种插槽式固态硬盘 |
CN203179010U (zh) * | 2013-04-17 | 2013-09-04 | 刘淑敏 | 存储装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012164695A1 (ja) * | 2011-05-31 | 2012-12-06 | 富士通株式会社 | データ共有方法およびデータ処理システム |
-
2013
- 2013-12-26 CN CN201310750628.9A patent/CN104750614B/zh active Active
-
2014
- 2014-12-16 US US14/572,039 patent/US9547590B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0844559A2 (en) * | 1996-11-22 | 1998-05-27 | MangoSoft Corporation | Shared memory computer networks |
CN101025697A (zh) * | 2007-04-05 | 2007-08-29 | 杭州华为三康技术有限公司 | 实现用户配置的方法、系统及主核和从核 |
CN101739380A (zh) * | 2009-12-11 | 2010-06-16 | 中国航空无线电电子研究所 | 基于共享内存结构的多处理机通信装置及其方法 |
CN102184743A (zh) * | 2011-05-20 | 2011-09-14 | 深圳市宝德通讯技术有限公司 | 一种插槽式固态硬盘 |
CN203179010U (zh) * | 2013-04-17 | 2013-09-04 | 刘淑敏 | 存储装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104750614A (zh) | 2015-07-01 |
US20150186269A1 (en) | 2015-07-02 |
US9547590B2 (en) | 2017-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9977618B2 (en) | Pooling of memory resources across multiple nodes | |
CN104219279B (zh) | 用于超大规模分布式处理应用的模块化架构的系统和方法 | |
CN107690622A (zh) | 实现硬件加速处理的方法、设备和系统 | |
US10235047B2 (en) | Memory management method, apparatus, and system | |
CN108696461A (zh) | 用于智能网络接口卡的共享存储器 | |
JP5681458B2 (ja) | 高性能計算クラスタにおいてデータを分配するための方法及びシステム | |
US8943294B2 (en) | Software architecture for service of collective memory and method for providing service of collective memory using the same | |
CN103607424B (zh) | 一种服务器连接方法及服务器系统 | |
CN104750614B (zh) | 用于管理存储器的方法和装置 | |
CN104951239B (zh) | 高速缓存驱动器、主机总线适配器及其使用的方法 | |
US20210117333A1 (en) | Providing direct data access between accelerators and storage in a computing environment, wherein the direct data access is independent of host cpu and the host cpu transfers object map identifying object of the data | |
CN108228482A (zh) | 用于管理存储系统中的缓存设备的方法和系统 | |
US20130247038A1 (en) | Device-integration method, terminal-apparatus, and distributed multi-terminal-apparatus system | |
Xu et al. | Rethink the storage of virtual machine images in clouds | |
EP3224727B1 (en) | Generating approximate usage measurements for shared cache memory systems | |
CN111104219A (zh) | 虚拟核心与物理核心的绑定方法、装置、设备及存储介质 | |
CN106126434B (zh) | 中央处理器的缓存区的缓存行的替换方法及其装置 | |
CN104571934B (zh) | 一种内存访问的方法、设备和系统 | |
CN106856441A (zh) | Nfvo中的vim选择方法和装置 | |
US10776172B1 (en) | Cost optimized services for dynamic service levels | |
CN106155910A (zh) | 一种实现内存访问的方法、装置和系统 | |
CN106326143A (zh) | 一种缓存分配、数据访问、数据发送方法、处理器及系统 | |
WO2012171363A1 (zh) | 分布式缓存系统中的数据操作方法和装置 | |
CN105487929A (zh) | 一种集群渲染过程中镜头共享数据管理的方法 | |
CN108874316A (zh) | 存储资源集中管理的方法、装置、设备及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20200410 Address after: Massachusetts, USA Patentee after: EMC IP Holding Company LLC Address before: Massachusetts, USA Patentee before: EMC Corp. |