IP Library Granted Patent US 8,639,890
Granted Patent B2
US 8,639,890 · App. 13/539,540 · Granted Jan 28, 2014

Data segment version numbers in distributed shared memory

Inventors: Lior Aronovich (Ramat Gan, IL); Ron Asher (Tel Aviv, IL)
Assignee: International Business Machines Corporation
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,639,890
App. No.
13/539,540
Granted
Jan 28, 2014
Kind
B2
Abstract

Systems and methods for implementing a distributed shared memory (DSM) in a computer cluster in which an unreliable underlying message passing technology is used, such that the DSM efficiently maintains coherency and reliability. DSM agents residing on different nodes of the cluster process access permission requests of local and remote users on specified data segments via handling procedures, which provide for recovering of lost ownership of a data segment while ensuring exclusive ownership of a data segment among the DSM agents detecting and resolving a no-owner messaging deadlock, pruning of obsolete messages, and recovery of the latest contents of a data segment whose ownership has been lost.

Claims (32)

1. A method for increasing efficiency in a distributed shared memory (DSM) performed by using a processor device, comprising:

maintaining by each of a plurality of distributed shared memory (DSM) agents a plurality of data segment version numbers having a value being assigned upon a modification to a data segment by one of the plurality of DSM agents, wherein each of the plurality of DSM agents includes a local value of the plurality of data segment version numbers in requests and responses sent by each of the plurality of DSM agents, and

if a local one of the plurality of DSM agents does not have a valid permission on the data segment that is requested for access by a remote one of the plurality of DSM agents, and the data segment is not locally owned by the local one of the plurality of DSM agents, incrementing a remote data segment version number belonging to the remote one of the plurality of DSM agents by a value of one relative to a local data segment version number belonging to the local one of the plurality of DSM agents.

2. The method of claim 1 , further including maintaining the plurality of data segment version numbers with a minimal number of bits.

3. The method of claim 1 , further including, if the request for the access to the data segment sent to the local one of the plurality of DSM agents is for shared permission and the data segment is owned by the remote one of the plurality of DSM agents, which keeps the shared permission, and contents of the data segment have been conveyed with the request, setting the local data segment version number belonging to the local one of the plurality of DSM agents equal to a value of the remote data segment version number belonging to the remote one of the plurality of DSM agents that was conveyed with the response.

4. The method of claim 3 , further including, if the request for the access to the data segment sent to the local one of the plurality of DSM agents is for the shared permission and the data segment is owned by the remote one of the plurality of DSM agents, which does not keep the shared permission, and the contents of the data segment have been conveyed with the response, incrementing the local data segment version number belonging to the local one of the plurality of DSM agents by a value of one relative to the remote data segment version number belonging to the remote one of the plurality of DSM agents that was conveyed with the response.

5. The method of claim 1 , further including, if the request for the access to the data segment sent to the local one of the plurality of DSM agents is for exclusive permission and the data segment is owned by the local one of the plurality of DSM agents, which has the shared permission, and a copy of the data segment is maintained by the remote one of the plurality of DSM agents, setting the local data segment version number belonging to the local one of the plurality of DSM agents by a value of one greater than the remote data segment version number belonging to the remote one of the plurality of DSM agents that was conveyed with the response.

6. The method of claim 1 , further including, if the request for the access to the data segment sent to the local one of the plurality of DSM agents is for exclusive permission and the data segment is owned by the remote one of the plurality of DSM agents, which has shared permission, setting the local data segment version number belonging to the local one of the plurality of DSM agents by a value of one greater than the remote data segment version number belonging to the remote one of the plurality of DSM agents that was conveyed with the response.

7. The method of claim 1 , further including determining by one of the plurality of DSM agents that none of the plurality of data segments have the ownership of a requested data segment.

8. The method of claim 1 , further including maintaining the data segment version number such that the data segment version number maintained by each of the plurality of DSM agents are identical when each of the plurality of DSM agents have similar data segment contents.

9. A system for increasing efficiency in a distributed shared memory (DSM) in a computing environment, the system comprising:

a plurality of distributed shared memory (DSM) agents operating within the DSM; and

a processor device in communication with the plurality of DSM agents, wherein the processor device:

maintains by each of the plurality of DSM agents the plurality of data segment version numbers having a value being assigned upon a modification to a data segment by one of the plurality of DSM agents, wherein each of the plurality of DSM agents includes a local value of the plurality of data segment version numbers in requests and responses sent by each of the plurality of DSM agents, and

if a local one of the plurality of DSM agents does not have a valid permission on the data segment that is requested for access by a remote one of the plurality of DSM agents, and the data segment is not locally owned by the local one of the plurality of DSM agents, increments a remote data segment version number belonging to the remote one of the plurality of DSM agents by a value of one relative to a local data segment version number belonging to the local one of the plurality of DSM agents.

10. The system of claim 9 , wherein the processor device maintains the plurality of data segment version numbers with a minimal number of bits.

11. The system of claim 9 , wherein, if the request for the access to the data segment sent to the local one of the plurality of DSM agents is for shared permission and the data segment is owned by the remote one of the plurality of DSM agents, which keeps the shared permission, and contents of the data segment have been conveyed with the request, the processor device sets the local data segment version number belonging to the local one of the plurality of DSM agents equal to a value of the remote data segment version number belonging to the remote one of the plurality of DSM agents that was conveyed with the response.

12. The system of claim 11 , wherein, if the request for the access to the data segment sent to the local one of the plurality of DSM agents is for shared permission and the data segment is owned by the remote one of the plurality of DSM agents, which does not keep the shared permission, and the contents of the data segment have been conveyed with the response, the processor device increments the local data segment version number belonging to the local one of the plurality of DSM agents by a value of one relative to the remote data segment version number belonging to the remote one of the plurality of DSM agents that was conveyed with the response.

13. The system of claim 11 , wherein, if the request for the access to the data segment sent to the local one of the plurality of DSM agents is for exclusive permission and the data segment is owned by the local one of the plurality of DSM agents, which has shared permission, and a copy of the data segment is maintained by the remote one of the plurality of DSM agents, the processor device sets the local data segment version number belonging to the local one of the plurality of DSM agents by a value of one greater than the remote data segment version number belonging to the remote one of the plurality of DSM agents that was conveyed with the response.

14. The system of claim 11 , wherein, if the request for the access to the data segment sent to the local one of the plurality of DSM agents is for exclusive permission and the data segment is owned by the remote one of the plurality of DSM agents which has shared permission, the processor device sets the local data segment version number belonging to the local one of the plurality of DSM agents by a value of one greater than the remote data segment version number belonging to the remote one of the plurality of DSM agents that was conveyed with the response.

15. The system of claim 9 , wherein the processor device determines by one of the plurality of DSM agents that none of the plurality of data segments have the ownership of a requested data segment.

16. The system of claim 9 , wherein the processor device maintains the data segment version number such that the data segment version number maintained by each of the plurality of DSM agents are identical when each of the plurality of DSM agents have similar data segment contents.

17. A computer program product for increasing efficiency in a distributed shared memory (DSM) performed by using a processor device, the computer program product comprising a non-transitory machine-readable computer-readable storage medium having computer-readable program code portions stored therein, the computer-readable program code portions comprising:

a first executable portion that maintains by each of a plurality of distributed shared memory (DSM) agents the plurality of data segment version numbers having a value being assigned upon a modification to a data segment by one of the plurality of DSM agents, wherein each of the plurality of DSM agents includes a local value of the plurality of data segment version numbers in requests and responses sent by each of the plurality of DSM agents, and

if a local one of the plurality of DSM agents does not have a valid permission on the data segment that is requested for access by a remote one of the plurality of DSM agents, and the data segment is not locally owned by the local one of the plurality of DSM agents, increments a remote data segment version number belonging to the remote one of the plurality of DSM agents by a value of one relative to a local data segment version number belonging to the local one of the plurality of DSM agents.

18. The computer program product of claim 17 , further including a second executable portion that maintains the plurality of data segment version numbers with a minimal number of bits.

19. The computer program product of claim 17 , further including a third executable portion that, if the request for the access to the data segment sent to the local one of the plurality of DSM agents is for shared permission and the data segment is owned by the remote one of the plurality of DSM agents which keeps the shared permission and contents of the data segment have been conveyed with the request, setting the local data segment version number belonging to the local one of the plurality of DSM agents equal to a value of the remote data segment version number belonging to the remote one of the plurality of DSM agents that was conveyed with the response.

20. The computer program product of claim 19 , further including a fourth executable portion that, if the request for the access to the data segment sent to the local one of the plurality of DSM agents is for shared permission and the data segment is owned by the remote one of the plurality of DSM agents which does not keep the shared permission and the contents of the data segment have been conveyed with the response, increments the local data segment version number belonging to the local one of the plurality of DSM agents by a value of one relative to the remote data segment version number belonging to the remote one of the plurality of DSM agents that was conveyed with the response.

21. The computer program product of claim 19 , further including a fourth executable portion that, if the request for the access to the data segment sent to the local one of the plurality of DSM agents is for exclusive permission and the data segment is owned by the local one of the plurality of DSM agents which has shared permission and a copy of the data segment is maintained by the remote one of the plurality of DSM agents sets the local data segment version number belonging to the local one of the plurality of DSM agents by a value of one greater than the remote data segment version number belonging to the remote one of the plurality of DSM agents that was conveyed with the response.

22. The computer program product of claim 19 , further including a fourth executable portion that, if the request for the access to the data segment sent to the local one of the plurality of DSM agents is for exclusive permission and the data segment is owned by the remote one of the plurality of DSM agents which has shared permission, sets the local data segment version number belonging to the local one of the plurality of DSM agents by a value of one greater than the remote data segment version number belonging to the remote one of the plurality of DSM agents that was conveyed with the response.

23. The computer program product of claim 17 , further including a second executable portion that determines by one of the plurality of DSM agents that none of the plurality of data segments have the ownership of a requested data segment.

24. The computer program product of claim 17 , further including a second executable portion that maintains the data segment version number such that the data segment version number maintained by each of the plurality of DSM agents are identical when each of the plurality of DSM agents have similar data segment contents.

Continuity (2)
Continuation 12197766 · Aug 25, 2008
Related Publication 20120272012A1 · Oct 25, 2012