IP Library Granted Patent US 10,834,021
Granted Patent B1
US 10,834,021 · App. 15/662,614 · Granted Nov 10, 2020

Dynamic management of concurrent access to shared computing resources

Inventors: Amitava Roy (Lexington, MA); Shyamsunder Singaraju (Westborough, MA); Norman Speciner (Medway, MA); Lorenzo Bailey (Framingham, MA); Robert Andrew Foulks (Nashua, NH); Rajesh Kumar Gandhi (Shrewsbury, MA); Daniel S. Keefe (Walpole, MA)
Assignee: EMC IP Holding Company LLC
H04L47/821G06F9/505G06F21/604G06F2221/2145H04L43/0876H04L67/10
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,834,021
App. No.
15/662,614
Filed
Jul 28, 2017
Granted
Nov 10, 2020
Kind
B1
Art Unit
2449
USPC
709/225
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 responds 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. Each resource instance manager determines, in response to receiving requests to allow execution of commands and using a set of predefined rues, whether those commands may be safely executed concurrently with other commands acting on the same shared resource. If the commands cannot be executed concurrently, the resource instance managers change the order in which queued commands are executed or abort execution of one or more commands.

Claims (82)

1. A method of maintaining shared resources of a computing system in consistent states while managing concurrent access to those shared resources, the method comprising:

instantiating, in memory of the computing system, a resource instance manager (“RIM”) configured to process commands acting on a particular shared resource, each command having subcommands acting on the particular shared resource;

receiving by processing circuitry of the computing system, a set of predefined rules, each rule instructing the RIM how to control execution of commands in conjunction with each other;

in response to receiving a request to execute a particular command, assigning the particular command to a queue position in a command queue maintained by the RIM based on (i) the set of predefined rules and (ii) a current set of commands acting on the shared resource, the queue position determining when the particular command is permitted to execute relative to other commands being managed by the RIM; and

causing execution of a next command at a head position of the command queue according to a current command queue order;

wherein the resource instance manager has an event queue in addition to the command queue, the event queue used to enqueue subcommands of commands permitted to begin execution by the RIM;

wherein assigning the queue position to the particular command includes, in response to determining, using the set of predefined rules, that the particular command may be safely executed concurrently with other commands, assigning the particular command to the head position of the command queue, causing the command to transmit a first subcommand which is enqueued for execution in an event queue of the resource instance manager;

wherein the method further comprises instantiating a plurality of additional RIMs, each of the RIM and the additional RIMs (all together, the “set of RIMs”) being exclusively associated with a single respective shared resource distinct from all of the other RIMs of the set of RIMs, each RIM of the set of RIMs being configured to exclusively process commands acting on its respective associated shared resource;

wherein each RIM of the set of RIMs is further configured to assign commands that act on that RIM's associated shared resource to a respective command queue maintained by that RIM;

wherein instantiating the RIM is performed in response to receiving the request to execute the particular command; and

wherein the method further comprises, in response to detecting that a particular RIM of the set of RIMs is not actively needed to process requests acting on its respective associated shared resource, removing that particular RIM from the memory of the computing system.

2. A method as in claim 1 , wherein the method further comprises executing the particular command together with other commands by:

during a first time interval, causing the processing circuitry to execute the first subcommand of the particular command, the RIM used to cause execution of the first subcommand during the first time interval to the exclusion of any other subcommand that acts on the shared resource; and

during a second time interval after the first time interval and distinct from the first time interval, causing the processing circuitry to execute a second subcommand generated by one of the other commands, the RIM used to cause execution of the second subcommand during the second time interval to the exclusion of any other subcommand acting on the shared resource.

3. A method as in claim 1 ,

wherein the set of predefined rules specifies that the particular command may not be processed concurrently by the resource instance manager with certain other commands of the set of commands;

wherein the method further includes determining, using the set of predefined rules, that the particular command may not be processed concurrently with one or more commands of the current set of commands being executed; and

wherein arranging the commands within the command queue maintained by the resource instance manager includes arranging the particular command within the command queue such that the first subcommand is enqueued in the event queue of the resource instance manager only after the one or more commands have finished executing.

4. A method as in claim 1 ,

wherein the set of predefined rules specifies that the particular command may not be processed concurrently by the resource instance manager with certain other commands of the set of commands;

wherein the method further includes determining, using the set of predefined rules, that the particular command may not be processed concurrently with one or more commands of a current set of commands in the command queue of the resource instance manager; and

wherein arranging the commands within the command queue maintained by the resource instance manager includes arranging the particular command within the command queue such that the first subcommand is enqueued in the event queue of the resource instance manager only after the one or more commands in the command queue have finished executing.

5. A method as in claim 1 ,

wherein the method further includes determining, using the set of predefined rules, that execution of the particular command would result in an inconsistent object state if executed in a particular sequence including certain other commands; and

wherein arranging the commands within the command queue maintained by the resource instance manager includes removing the certain other commands from the command queue and causing execution of the certain other commands to be aborted by the processing circuitry.

6. A method as in claim 1 ,

wherein the method further includes determining, using the set of predefined rules, that execution of the particular command would result in an inconsistent object state if executed in a particular sequence including certain other commands; and

wherein arranging the commands within the command queue maintained by the resource instance manager includes removing the particular command from the command queue and causing execution of the particular command to be aborted.

7. 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 maintain shared resources of a computing system in consistent states while managing concurrent access to those shared resources by:

instantiating, in memory of the computing system, a resource instance manager (“RIM”) configured to process commands acting on a particular shared resource, each command having subcommands acting on the particular shared resource;

receiving by processing circuitry of the computing system, a set of predefined rules, each rule instructing the RIM how to control execution of commands in conjunction with each other;

in response to receiving a request to execute a particular command, assigning the particular command to a queue position in a command queue maintained by the RIM based on (i) the set of predefined rules and (ii) a current set of commands acting on the shared resource, the queue position determining when the particular command is permitted to execute relative to other commands being managed by the RIM; and

causing execution of a next command at a head position of the command queue according to a current command queue order;

wherein the resource instance manager has an event queue in addition to the command queue, the event queue used to enqueue subcommands of commands permitted to begin execution by the RIM;

wherein assigning the queue position to the particular command includes, in response to determining, using the set of predefined rules, that the particular command may be safely executed concurrently with other commands, assigning the particular command to the head position of the command queue, causing the command to transmit a first subcommand which is enqueued for execution in an event queue of the resource instance manager;

wherein the instructions, when executed by the processing circuitry of the computing system, further cause the processing circuitry to the method further comprises instantiating a plurality of additional RIMs, each of the RIM and the additional RIMs (all together, the “set of RIMs”) being exclusively associated with a single respective shared resource distinct from all of the other RIMs of the set of RIMs, each RIM of the set of RIMs being configured to exclusively process commands acting on its respective associated shared resource;

wherein each RIM of the set of RIMs is further configured to assign commands that act on that RIM's associated shared resource to a respective command queue maintained by that RIM;

wherein instantiating the RIM is performed in response to receiving the request to execute the particular command; and

wherein the instructions, when executed by the processing circuitry of the computing system, further cause the processing circuitry to, in response to detecting that a particular RIM of the set of RIMs is not actively needed to process requests acting on its respective associated shared resource, remove that particular RIM from the memory of the computing system.

8. A computer program product as in claim 7 , wherein the instructions, when executed by the processing circuitry of the computing system, further cause the processing circuitry to execute the particular command together with other commands by:

during a first time interval, causing the processing circuitry to execute the first subcommand of the particular command, the RIM used to cause execution of the first subcommand during the first time interval to the exclusion of any other subcommand that acts on the shared resource; and

during a second time interval after the first time interval and distinct from the first time interval, causing the processing circuitry to execute a second subcommand generated by one of the other commands, the RIM used to cause execution of the second subcommand during the second time interval to the exclusion of any other subcommand acting on the shared resource.

9. A computer program product as in claim 7 ,

wherein the set of predefined rules specifies that the particular command may not be processed concurrently by the resource instance manager with certain other commands of the set of commands;

wherein the instructions, when executed by the processing circuitry of the computing system, further cause the processing circuitry to determine, using the set of predefined rules, that the particular command may not be processed concurrently with one or more commands of the current set of commands being executed; and

wherein arranging the commands within the command queue maintained by the resource instance manager includes arranging the particular command within the command queue such that the first subcommand is enqueued in the event queue of the resource instance manager only after the one or more commands have finished executing.

10. A computer program product as in claim 7 ,

wherein the set of predefined rules specifies that the particular command may not be processed concurrently by the resource instance manager with certain other commands of the set of commands;

wherein the instructions, when executed by the processing circuitry of the computing system, further cause the processing circuitry to determine, using the set of predefined rules, that the particular command may not be processed concurrently with one or more commands of a current set of commands in the command queue of the resource instance manager; and

wherein arranging the commands within the command queue maintained by the resource instance manager includes arranging the particular command within the command queue such that the first subcommand is enqueued in the event queue of the resource instance manager only after the one or more commands in the command queue have finished executing.

11. A computer program product as in claim 7 ,

wherein the instructions, when executed by the processing circuitry of the computing system, further cause the processing circuitry to determine, using the set of predefined rules, that execution of the particular command would result in an inconsistent object state if executed in a particular sequence including certain other commands; and

wherein arranging the commands within the command queue maintained by the resource instance manager includes removing the certain other commands from the command queue and causing execution of the certain other commands to be aborted by the processing circuitry.

12. A computer program product as in claim 7 ,

wherein the instructions, when executed by the processing circuitry of the computing system, further cause the processing circuitry to determine, using the set of predefined rules, that execution of the particular command would result in an inconsistent object state if executed in a particular sequence including certain other commands; and

wherein arranging the commands within the command queue maintained by the resource instance manager includes removing the particular command from the command queue and causing execution of the particular command to be aborted.

13. A computing system for maintaining shared resources of a computing system in consistent states while managing concurrent access to those shared resources, the computing system comprising processing circuitry coupled to memory configured to:

instantiate, in the memory, a resource instance manager (“RIM”) configured to process commands acting on a particular shared resource, each command having subcommands acting on the particular shared resource;

receive a set of predefined rules, each rule instructing the RIM how to control execution of commands in conjunction with each other;

in response to receiving a request to execute a particular command, assign the particular command to a queue position in a command queue maintained by the RIM based on (i) the set of predefined rules and (ii) a current set of commands acting on the shared resource, the queue position determining when the particular command is permitted to execute relative to other commands being managed by the RIM; and

cause execution of a next command at a head position of the command queue according to a current command queue order;

wherein the resource instance manager has an event queue in addition to the command queue, the event queue used to enqueue subcommands of commands permitted to begin execution by the RIM;

wherein assigning the queue position to the particular command includes, in response to determining, using the set of predefined rules, that the particular command may be safely executed concurrently with other commands, assigning the particular command to the head position of the command queue, causing the command to transmit a first subcommand which is enqueued for execution in an event queue of the resource instance manager;

wherein the processing circuitry coupled to the memory is further configured to instantiate a plurality of additional RIMs, each of the RIM and the additional RIMs (all together, the “set of RIMs”) being exclusively associated with a single respective shared resource distinct from all of the other RIMs of the set of RIMs, each RIM of the set of RIMs being configured to exclusively process commands acting on its respective associated shared resource;

wherein each RIM of the set of RIMs is further configured to assign commands that act on that RIM's associated shared resource to a respective command queue maintained by that RIM;

wherein instantiating the RIM is performed in response to receiving the request to execute the particular command; and

wherein the processing circuitry coupled to the memory is further configured to, in response to detecting that a particular RIM of the set of RIMs is not actively needed to process requests acting on its respective associated shared resource, remove that particular RIM from the memory.

14. A computing system as in claim 13 ,

wherein the set of predefined rules specifies that the particular command may not be processed concurrently by the resource instance manager with certain other commands of the set of commands;

wherein the processing circuitry coupled to the memory is further configured to determine, using the set of predefined rules, that the particular command may not be processed concurrently with one or more commands of the current set of commands being executed; and

wherein arranging the commands within the command queue maintained by the resource instance manager includes arranging the particular command within the command queue such that the first subcommand is enqueued in the event queue of the resource instance manager only after the one or more commands have finished executing.

15. A computing system as in claim 13 ,

wherein the set of predefined rules specifies that the particular command may not be processed concurrently by the resource instance manager with certain other commands of the set of commands;

wherein the processing circuitry coupled to the memory is further configured to determine, using the set of predefined rules, that the particular command may not be processed concurrently with one or more commands of a current set of commands in the command queue of the resource instance manager; and

wherein arranging the commands within the command queue maintained by the resource instance manager includes arranging the particular command within the command queue such that the first subcommand is enqueued in the event queue of the resource instance manager only after the one or more commands in the command queue have finished executing.

16. A computing system as in claim 13 ,

wherein the processing circuitry coupled to the memory is further configured to determine, using the set of predefined rules, that execution of the particular command would result in an inconsistent object state if executed in a particular sequence including certain other commands; and

wherein arranging the commands within the command queue maintained by the resource instance manager includes removing the certain other commands from the command queue and causing execution of the certain other commands to be aborted by the processing circuitry.

17. A computing system as in claim 13 ,

wherein the processing circuitry coupled to the memory is further configured to determine, using the set of predefined rules, that execution of the particular command would result in an inconsistent object state if executed in a particular sequence including certain other commands; and

wherein arranging the commands within the command queue maintained by the resource instance manager includes removing the particular command from the command queue and causing execution of the particular command to be aborted.

18. A method as in claim 1 , wherein the particular command is a command to expand a logical disk and the first subcommand is a request to a storage pool for an extent of unallocated storage.

Assignments (9)
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 Jan 10, 2018
From: BAILEY, LORENZO
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 044584/0774 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 6, 2017
From: ROY, AMITAVA; SINGARAJU, SHYAMSUNDER; SPECINER, NORMAN; FOULKS, ROBERT ANDREW; GANDHI, RAJESH KUMAR; KEEFE, DANIEL S.
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 043510/0483 →
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 →