IP Library Granted Patent US 8,417,789
Granted Patent B1
US 8,417,789 · App. 13/278,319 · Granted Apr 9, 2013

Distributed adaptive network memory engine

Inventors: Kartik Gopalan (Vestal, NY); Michael Hines (Endicott, NY); Jian Wang (Vestal, NY)
Assignee: The Research Foundation of State University of New York
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 8,417,789
App. No.
13/278,319
Granted
Apr 9, 2013
Kind
B1
Abstract

Memory demands of large-memory applications continue to remain one step ahead of the improvements in DRAM capacities of commodity systems. Performance of such applications degrades rapidly once the system hits the physical memory limit and starts paging to the local disk. A distributed network-based virtual memory scheme is provided which treats remote memory as another level in the memory hierarchy between very fast local memory and very slow local disks. Performance over gigabit Ethernet shows significant performance gains over local disk. Large memory applications may access potentially unlimited network memory resources without requiring any application or operating system code modifications, relinkling or recompilation. A preferred embodiment employs kernel-level driver software.

Claims (38)

1. A distributed memory system comprising a processor and memory, the system configured to:

extract memory page information from at least one communication packet received via a communication network;

transmit an acknowledgement after analyzing the memory page information and verifying that the memory page information represents an entirety of a memory page, independent of whether the memory page information comprises more than one packet;

send, via the communication network, a request for retrieval of a required memory page from at least one memory server of a plurality of memory servers; and

receiving the required memory page substantially without a centralized coordination of the plurality of memory servers.

2. The distributed memory system according to claim 1 , further configured to evict a memory page and discover available memory storage capacity for remote storage of evicted memory pages in at least one memory server.

3. The distributed memory system according to claim 2 , further configured to receive a periodic broadcast of a message indicating an amount of available memory.

4. The distributed memory system according to claim 2 , further configured to store a table of available memory storage capacity at a plurality of destinations and select a respective destination in dependence on the table.

5. The distributed memory system according to claim 2 , further configured to store a table of available destinations and history information and determine a destination liveness in dependence on the table.

6. The distributed memory system according to claim 2 , further configured to redundantly store an evicted memory page in a local resource which does not communicate though the communication network.

7. The distributed memory system according to claim 2 , further configured to redundantly store an evicted memory page in a plurality of destinations though the communication network.

8. The distributed memory system according to claim 7 , further configured to select one of the redundantly stored evicted memory pages for retrieval of the evicted memory page.

9. The distributed memory system according to claim 2 , wherein an evicted memory page is associated with a session, the system being further configured to periodically transmit liveness messages comprising an identification of the session through the communication network.

10. The distributed memory system according to claim 2 , further configured to monitor communications on the communication network relating to other distributed memory clients, determine at least a number of paging requests serviced by each of a plurality of memory servers, and balance a memory page servicing of the plurality of memory servers.

11. The distributed memory system according to claim 2 , further configured to monitor communications on the communication network relating to other distributed memory clients, determine at least a number of paging requests serviced by each memory server and a number of pages stored at each of a plurality of memory servers, and balance memory utilization and memory page servicing of the plurality of memory servers.

12. The distributed memory system according to claim 2 , further configured to receive a negative acknowledgment from a first memory server declining to store an evicted memory page, and select a second memory server to resend the evicted memory page to.

13. The distributed memory system according to claim 1 , wherein a memory page is communicated through the communication network in conjunction with memory availability information.

14. The distributed memory system according to claim 1 , further configured to receive memory pages from corresponding distributed memory clients acting as memory server, through the communication network.

15. The distributed memory system according to claim 14 , wherein a message comprising memory availability information and an acknowledgment are communicated in a single packet.

16. The distributed memory system according to claim 1 , further configured to monitor communications on the automated communication network relating to other distributed memory clients, determine at least a number of pages stored at each of a plurality of memory servers, and balance a memory utilization of the plurality of memory servers.

17. A distributed memory method, comprising:

extracting memory page information from at least one communication packet;

transmitting an acknowledgement after analyzing the memory page information and verifying that the memory page information represents an entirety of a memory page, independent of whether the received memory page information comprises more than one communication packet;

requesting a selected memory page from at least one memory server of a plurality of memory servers; and

receiving the selected memory page substantially without a centralized coordination of the plurality of memory servers.

18. The distributed memory method according to claim 17 , further comprising:

discovering available memory storage capacity for remote storage of evicted memory pages by communicating a periodic broadcast of a message indicating an amount of available memory, wherein a content and a timing of a respective message is indicative of a liveness of a sender of the message; and

selectively communicating a memory page, as information in at least one communication packet through an automated communication network to at least one sender of the message in dependence on the indicated liveness;

receiving an acknowledgement of successful receipt of the communicated memory page; and

evicting the memory page from memory after receipt of the acknowledgement of successful receipt.

19. The distributed memory method according to claim 18 , further comprising:

redundantly storing an evicted memory page in a local resource which does not communicate though the automated communication network and in a plurality of destinations in the automated communication network;

monitoring communications over the packet-based automated communication network to determine respective loads on the plurality of destinations; and

balancing the load on the plurality of destinations.

20. A computer readable storage medium storing therein instructions for managing distributed memory, the computer readable storage medium comprising:

instructions for extracting memory page information from at least one communication packet;

instructions for transmitting an acknowledgement after analyzing the memory page information and verifying that the memory page information represents an entirety of a memory page, independent of whether the received memory page information comprises more than one communication packet; and

instructions for requesting a memory page from at least one memory server of a plurality of memory servers substantially without a centralized coordination of the plurality of memory servers.

Assignments (3)
CONFIRMATORY LICENSE Recorded May 25, 2012
From: THE RESEARCH FOUNDATION OF STATE UNIVERSITY OF NEW YORK
To: NATIONAL SCIENCE FOUNDATION
Reel/Frame 028275/0261 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 12, 2012
From: GOPALAN, KARTIK; HINES, MICHAEL; WANG, JIAN
To: THE RESEARCH FOUNDATION OF STATE UNIVERSITY OF NEW YORK
Reel/Frame 027525/0696 →
CONFIRMATORY LICENSE Recorded Jan 12, 2012
From: THE RESEARCH FOUNDATION OF STATE UNIVERSITY OF NEW YORK
To: NATIONAL SCIENCE FOUNDATION
Reel/Frame 027531/0695 →
Continuity (3)
Continuation 13073407 · Mar 28, 2011
Continuation 11957410 · Dec 15, 2007
Provisional Application 60870325 · Dec 15, 2006