IP Library Granted Patent US 9,836,217
Granted Patent B2
US 9,836,217 · App. 14/554,655 · Granted Dec 5, 2017

Provisioning of external memory

Inventors: Timothy A. Stabrawa (Lombard, IL); Zachary A. Cornelius (Chicago, IL); John Overton (Chicago, IL); Andrew S. Poling (Lombard, IL); Jesse I. Taylor (Glenside, PA)
Assignee: Kove IP, LLC
G06F3/0607G06F3/0604G06F3/067G06F3/0631G06F3/0647G06F3/0683G06F12/08G06F12/109H04L67/1097G06F12/10G06F2212/1048G06F2212/152Y02B60/1225
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,836,217
App. No.
14/554,655
Filed
Nov 26, 2014
Granted
Dec 5, 2017
Kind
B2
Art Unit
2137
USPC
711/209
Abstract

Dynamically provisionable and allocatable memory external to a requesting apparatus may be provided. A request for primary memory may be made by an application executing on a client. An allocation logic unit may determine an allocation strategy in response to the request. As part of the allocation strategy, the allocation logic unit may identify memory appliances on which memory regions are to be allocated. The allocated memory regions may form the primary memory that is allocated to the requesting application. The allocation logic unit may send region allocation requests to region access unit of the respective memory appliances. The memory appliances on which the memory regions are allocated may be external to the client. The application may access the allocated memory regions via client-side access in which one or more processors in the client and/or the memory appliances are bypassed.

Claims (41)

1. An apparatus comprising:

a processor configured to:

create an indication of an allocation strategy, wherein the indication of the allocation strategy indicates the allocation strategy for allocation of external primary memory across one or more memory appliances, wherein the external primary memory is external to a client but is primary memory to the client, wherein the client is in communication with the apparatus or is included in the apparatus;

determine the allocation strategy in response to a request for external primary memory based on the indication of the allocation strategy; and

allocate one or more regions of the external primary memory across the one or more memory appliances in accordance with the allocation strategy,

wherein the external primary memory on the one or more memory appliances is accessible with client-side memory access independent of all central processing units of the one or more memory appliances, and

wherein a slab of the external primary memory is allocable at the client independent of the memory appliances, in response to a request at the client to allocate the slab, by a selection at the client of a subset of one of the one or more regions of the external primary memory previously allocated and a mapping at the client of the slab of the external primary memory into a virtual address space.

2. The apparatus of claim 1 , wherein the processor is configured to follow one or more steps and/or rules, which are included the indication of the allocation strategy, in a determination of how to allocate the external primary memory.

3. The apparatus of claim 1 , wherein the indication of the allocation strategy includes a profile of a memory appliance, the client, and/or a user account.

4. The apparatus of claim 1 , wherein the indication of the allocation strategy includes a priority setting associated with a user account.

5. The apparatus of claim 1 , wherein the indication of the allocation strategy includes a time-of-day limit for a user account.

6. The apparatus of claim 1 , wherein the indication of the allocation strategy includes a duration of use limit for a user account.

7. The apparatus of claim 1 , wherein the indication of the allocation strategy includes a maximum external primary memory usage limit.

8. The apparatus of claim 1 , wherein the indication of the allocation strategy includes a network bandwidth setting associated with the client and/or a user account that indicates the allocation strategy is to select the memory appliances having a corresponding network bandwidth.

9. The apparatus of claim 1 , wherein the indication of the allocation strategy includes a network locality setting associated with the client and/or a user account that indicates the allocation strategy is to select any of the memory appliances that are within a threshold distance of the client that requested the external primary memory.

10. A method of provisioning external memory, the method comprising:

creating, by a configuration unit, an indication of an allocation strategy, the indication of the allocation strategy indicating the allocation strategy for allocation of an external primary memory;

providing the indication of the allocation strategy to an allocation unit; and

allocating, by the allocation unit, the external primary memory for a client based on the indication of the allocation strategy, wherein the external primary memory is external to the client but is primary memory to the client, wherein the external primary memory is accessible over a communication interface of the client with client-side memory access that is independent of a central processing unit of any memory appliance on which the external primary memory resides, and wherein a slab of the external primary memory is allocable at the client independent of any memory appliance on which the external primary memory resides, in response to a request at the client to allocate the slab, by the client selecting a subset of the external primary memory previously allocated and mapping the slab of the external primary memory into a virtual address space of the client.

11. The method of claim 10 , wherein the client includes a virtual machine and the external primary memory is for use by the virtual machine.

12. The method of claim 11 , wherein the virtual machine is a first virtual machine, the method further comprising migrating data stored in the external primary memory to a second virtual machine by changing ownership of the external primary memory from the first virtual machine to the second virtual machine.

13. The method of claim 11 , further comprising resizing memory available to the virtual machine by allocating more or less external primary memory to the virtual machine.

14. The method of claim 10 , wherein the client includes a virtual machine on a first physical machine, the external primary memory is allocated to the virtual machine and includes data accessed by the virtual machine from the first physical machine, the method further comprising migrating the virtual machine from the first physical machine to a second physical machine without copying the data by accessing the data in the external primary memory by the virtual machine from the second physical machine.

15. The method of claim 10 , wherein the client includes a virtual machine on a first physical machine, the external primary memory is allocated to the virtual machine and includes data accessed by the virtual machine from the first physical machine, the method further comprising migrating the virtual machine from the first physical machine to a second physical machine without copying the data by discarding a cached copy of the data from the virtual machine.

16. A system comprising:

a communication interface configured to receive a request to allocate an external primary memory for a client, wherein the external primary memory is external to a client but is primary memory to the client; and

a processor configured to:

determine a number of regions to allocate across a plurality of memory appliances on a network as part of the external primary memory; and

send requests for allocation of the regions to the memory appliances over the network; wherein after the regions of the external primary memory are allocated on the memory appliances, the regions of the external primary memory are accessible with client-side memory access that is independent of central processing units of the memory appliances and wherein a slab of the external primary memory is allocable at the client independent of the memory appliances, in response to a request at the client to allocate the slab, by the client selecting a subset of one of the regions of the external primary memory previously allocated and mapping the slab of the external primary memory into a virtual address space of the client.

17. The system of claim 16 further comprising a memory, the memory comprising external memory allocation metadata descriptive of external memory allocations, the external memory allocations including the allocation of the regions distributed across the memory appliances on the network for the external primary memory.

18. The system of claim 17 , wherein the external memory allocation metadata is replicated to a management server on the network, and the external memory allocation metadata is recovered from the management server if the system fails.

19. The system of claim 16 , wherein the processor is further configured to:

determine, in response to a request to resize the external primary memory allocation, a second set of regions in which to divide the external primary memory; and

determine a distribution of the second set of regions across the memory appliances.

20. The system of claim 16 , wherein a distribution of the regions of the external primary memory is based on status information received from the memory appliances.

21. The system of claim 16 , wherein the processor is further configured to:

detect a second memory appliance on the network, the second memory appliance not included in the memory appliances across which the regions of the external primary memory are allocated; and

in response, determine availability of the second memory appliance for redistribution of at least one of the regions for the external primary memory.

22. A method comprising:

allocating an external primary memory for a client, wherein the external primary memory is external to the client but is primary memory to the client, wherein the external primary memory is accessible over a communication interface of the client with client-side memory access that is independent of a central processing unit of any memory appliance on which the external primary memory resides, and wherein a slab of the external primary memory is allocable at the client independently of any memory appliance on which the external primary memory resides, in response to a request at the client to allocate the slab, by the client selecting a subset of the external primary memory previously allocated and mapping the slab of the external primary memory into a virtual address space of the client, wherein the client includes a virtual machine on a first physical machine, the external primary memory is allocated to the virtual machine and includes data accessed by the virtual machine from the first physical machine; and

migrating the virtual machine from the first physical machine to a second physical machine without copying the data by accessing the data in the external primary memory by the virtual machine from the second physical machine.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 16, 2015
From: KOVE IO, INC.
To: KOVE IP, LLC
Reel/Frame 036807/0662 →
CHANGE OF NAME Recorded Oct 15, 2015
From: KOVE CORPORATION
To: KOVE IO, INC.
Reel/Frame 036874/0042 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 5, 2015
From: STABRAWA, TIMOTHY A; CORNELIUS, ZACHARY A; OVERTON, JOHN; POLING, ANDREW S; TAYLOR, JESSE I
To: KOVE CORPORATION
Reel/Frame 034899/0734 →
Continuity (3)
Continuation 14530908 · Nov 3, 2014
Provisional Application 62051144 · Sep 16, 2014
Related Publication 20160077975A1 · Mar 17, 2016