IP Library Granted Patent US 10,146,478
Granted Patent B1
US 10,146,478 · App. 15/662,414 · Granted Dec 4, 2018

Providing concurrent access to shared computing resources by interleaving commands and maintaining a consistent object state

Inventors: Amitava Roy (Lexington, MA); Norman Speciner (Medway, MA); Rajesh Kumar Gandhi (Shrewsbury, MA); Hongxin Zhang (Hopkinton, MA)
Assignee: EMC IP Holding Company LLC
G06F3/0659G06F3/0619G06F3/0673
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 10,146,478
App. No.
15/662,414
Granted
Dec 4, 2018
Kind
B1
Abstract

Techniques are disclosed for managing access to shared computing resources in a computing system which include representing resources as objects and managing access to those objects using the construct of a resource instance manager. A set of resource instance managers respond to all commands requesting access to a set of respective shared resources. Access to each shared resource is managed by a unique resource instance manager for that resource which maintains a consistent state for that shared resource. When commands are designed according to an appropriate model and processed by a set of resource instance managers disclosed herein, multiple processes may execute in parallel without causing deadlocks or introducing data corruption.

Claims (43)

1. A method of preventing command processing deadlocks and maintaining a consistent object state for each of a set of shared computing resource objects (hereinafter “shared resources”) in a computing system which executes a set of commands having subcommands for managing the shared resources, the method comprising:

creating, in memory of the computing system, a set of resource instance managers for a set of respective shared resources, each resource instance manager configured to process subcommands acting on the respective shared resource for that resource instance manager;

receiving and enqueuing each subcommand in an event queue of one of the resource instance managers according to a respective shared resource that subcommand acts upon; and

processing enqueued subcommands of each resource instance manager by that resource instance manager:

executing, during a first time interval, a subcommand belonging to a particular command, the subcommand acting on the respective shared resource for that resource instance manager, to the exclusion of executing any other subcommand that acts on the respective shared resource;

in response to executing the subcommand, updating the consistent object state for the respective shared resource to an updated resource state for the respective shared resource, the updated resource state for the respective shared resource resulting from the subcommand acting on the respective shared resource; and

after updating the consistent object state for the respective shared resource, executing, during a second time interval different from the first time interval, another subcommand belonging to another command, to the exclusion of executing any other subcommand that acts on the respective shared resource and updating the consistent state of the respective shared resource in response to executing the other subcommand.

2. A method as in claim 1 ,

wherein each command of the set of commands is implemented as a finite set of command states,

wherein each command of the set of commands is idle while in each command state of that command until it receives an expected set of events for that command state;

wherein, after receiving the expected set of events for that command state, the command (a) transmits a subcommand which is allowed to act on a certain shared resource of the set of shared resources and no other shared resource and (b) transitions to a next command state of the command;

wherein the expected set of events for the next command state includes a set of messages indicating an execution status of each of the set of subcommands.

3. A method as in claim 2 , wherein the method further includes selecting the next command state from one of multiple candidate command states based on a content of each message of the set of messages.

4. A method as in claim 2 , wherein the method further includes, for a particular command, after transitioning to the next command state of the particular command, transmitting a subcommand that (i) acts on a different shared resource and (ii) is allowed to act on only the different shared resource.

5. A method as in claim 1 , wherein at least one of the commands includes multiple subcommands.

6. A method as in claim 1 , wherein the method further includes, after detecting that an event queue of a particular resource instance manager is empty, removing that resource instance manager from the memory of the computing system.

7. A method as in claim 1 , wherein creating the set of resource instance managers for the set of respective shared resources includes creating at least one of the set of resource instance managers in response to: (a) receiving a subcommand that acts on one of the set of shared resources (b) making a determination that no resource instance manager exists in memory of the computing system for that shared resource.

8. A computer program product comprising a non-transitory computer-readable storage medium storing instructions which, when executed by processing circuitry of a computing system, cause the processing circuitry to manage a set of commands having subcommands for managing shared computing resource objects (hereinafter “shared resources”) by:

creating, in memory of the computing system, a set of resource instance managers for a set of respective shared resources, each resource instance manager configured to process subcommands acting on a respective shared resource for that resource instance manager;

receiving and enqueuing each subcommand in an event queue of one of the resource instance managers according to a respective shared resource that subcommand acts upon; and

processing enqueued subcommands of each resource instance manager by that resource instance manager:

executing, during a first time interval, a subcommand belonging to a particular command, the subcommand acting on the respective shared resource for that resource instance manager, to the exclusion of executing any other subcommand that acts on the respective shared resource;

in response to executing the subcommand, updating the consistent object state for the respective shared resource to an updated resource state for the respective shared resource, the updated resource state for the respective shared resource resulting from the subcommand acting on the respective shared resource; and

after updating the consistent object state for the respective shared resource, executing, during a second time interval different from the first time interval, another subcommand belonging to another command, to the exclusion of executing any other subcommand that acts on the respective shared resource and updating the consistent state of the respective shared resource in response to executing the other subcommand.

9. A computer program product as in claim 8 , wherein the instructions, when executed by the processing circuitry of the computing system, further cause the processing circuitry to, after detecting that an event queue of a particular resource instance manager is empty, remove that resource instance manager from the memory of the computing system.

10. A computer program product as in claim 8 , wherein creating the set of resource instance managers for the set of respective shared resources includes creating at least one of the set of resource instance managers in response to: (a) receiving a subcommand that acts on one of the set of shared resources (b) making a determination that no resource instance manager exists in memory of the computing system for that shared resource.

11. A computing system for preventing command processing deadlocks and maintaining a consistent object state for each of a set of shared computing resource objects (hereinafter “shared resources”) while executing a set of commands having subcommands for managing the shared resources, the system comprising processing circuitry coupled to memory configured to:

create, in the memory, a set of resource instance managers for a set of respective shared resources, each resource instance manager configured to process subcommands acting on the respective shared resource for that resource instance manager;

receive and enqueue each subcommand in an event queue of one of the resource instance managers according to a respective shared resource that subcommand acts upon; and

process enqueued subcommands of each resource instance manager, each resource instance manager configured, while processing the enqueued subcommands for that resource instance manager, to:

execute, during a first time interval, a subcommand belonging to a particular command, the subcommand acting on the respective shared resource for that resource instance manager, to the exclusion of executing any other subcommand that acts on the respective shared resource;

in response to executing the subcommand, update the consistent object state for the respective shared resource to an updated resource state for the respective shared resource, the updated resource state for the respective shared resource resulting from the subcommand acting on the respective shared resource; and

after updating the consistent object state for the respective shared resource, execute, during a second time interval different from the first time interval, another subcommand belonging to another command, to the exclusion of executing any other subcommand that acts on the respective shared resource and updating the consistent state of the respective shared resource in response to executing the other subcommand.

12. A computing system as in claim 11 ,

wherein each command of the set of commands is implemented as a finite set of command states,

wherein each command of the set of commands is idle while in each command state of that command until it receives an expected set of events for that command state;

wherein, after receiving the expected set of events for that command state, the command (a) transmits a subcommand which is allowed to act on a certain shared resource of the set of shared resources and no other shared resource and (b) transitions to a next command state of the command;

wherein the expected set of events for the next command state includes a set of messages indicating an execution status of each of the set of subcommands.

13. A computing system as in claim 12 , wherein the processing circuitry coupled to the memory is further configured to select the next command state of each command from one of multiple candidate command states for that command based on a content of each message of the set of messages.

14. A computing system as in claim 12 , wherein the processing circuitry coupled to the memory is further configured to, for a particular command, after transitioning to the next command state of the particular command, cause the particular command to transmit a subcommand that (i) acts on a different shared resource and (ii) is allowed to act on only the different shared resource.

15. A computing system as in claim 11 , wherein at least one of the commands includes multiple subcommands.

16. A computing system as in claim 11 , wherein the processing circuitry coupled to the memory is further configured, after detecting that an event queue of a particular resource instance manager is empty, to remove that resource instance manager from the memory.

17. A computing system as in claim 11 , wherein creating the set of resource instance managers for the set of respective shared resources includes creating at least one of the set of resource instance managers in response to: (a) receiving a subcommand that acts on one of the set of shared resources (b) making a determination that no resource instance manager exists in memory of the computing system for that shared resource.

Assignments (8)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (043775/0082) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060958/0468 →
RELEASE OF SECURITY INTEREST AT REEL 043772 FRAME 0750 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 058298/0606 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 6, 2017
From: ROY, AMITAVA; SPECINER, NORMAN; GANDHI, RAJESH KUMAR; ZHANG, HONGXIN
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 043509/0937 →
PATENT SECURITY AGREEMENT (CREDIT) Recorded Sep 6, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 043772/0750 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Sep 6, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 043775/0082 →