IP Library Granted Patent US 10,635,503
Granted Patent B1
US 10,635,503 · App. 15/884,814 · Granted Apr 28, 2020

Systems and methods for semaphore synchronization

Inventor: Vladimir Shveidel (Pardes-Hana, IL)
Assignee: EMC IP Holding Company LLC
G06F9/52G06F9/30087G06F9/5005G06F13/1642G06F13/1663G06F16/1767G06F16/1774G06F9/526
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,635,503
App. No.
15/884,814
Granted
Apr 28, 2020
Kind
B1
Abstract

A system for controlling shared computing resources is provided including a semaphore for controlling concurrent access to one or more computing resources by one or more worker processing threads, the semaphore including a semaphore counter corresponding to vacancies of one or more computing resources and a semaphore queue for resource requests of the one or more worker processing threads waiting for the one or more computing resources. The semaphore is programmed and configured to decrement the semaphore counter when allocating one of the computing resources to one of the worker threads and configured to increment the semaphore counter when releasing one of the computing resources from one of the worker threads. The semaphore increments the queue of requests from the one or more worker threads if a request for resource access occurs when the counter of the semaphore counter is zero or less than zero. The semaphore counter is decremented when receiving a force decrement command for reducing the number of computing resources allocable to the worker threads and is not forced to wait in a working queue for the decrement to occur. If the counter is zero or less than zero at the time of the force decrement command, the semaphore counter will further decrease in value.

Claims (28)

1. A system for controlling shared computing resources comprising:

at least one processor operatively coupled to a memory, the at least one processor being configured to instantiate a semaphore for controlling concurrent access to one or more computing resources by one or more worker threads, the semaphore comprising a semaphore counter corresponding to vacancies of the one or more computing resources and a semaphore queue for resource requests of the one or more worker threads, the semaphore programmed and configured to:

decrement the semaphore counter when allocating any of the one or more computing resources to one of the one or more worker threads;

increment the semaphore counter when releasing any of the one or more computing resources from one of the one or more worker threads;

increment the semaphore counter if a request for resource access occurs when the semaphore counter is zero or less than zero; and

decrement the semaphore counter when receiving a force decrement command from a control thread for reducing a number of computing resources allocable to the one or more worker threads, wherein the semaphore counter will decrease to a negative integer value if the semaphore counter is zero or less than zero at a time of the force decrement command.

2. The system of claim 1 wherein upon decreasing the semaphore counter to a negative integer value, one of the one or more computing resources is deallocated for use by the one or more worker threads prior to any reallocation of the one of the one or more computing resources to the one or more worker threads.

3. The system of claim 1 wherein the one or more computing resources are dedicated to processing data storage requests from the one or more worker threads and the semaphore counter indicates a count of concurrently available data storage segments available for the one or more worker threads.

4. The system of claim 1 wherein the semaphore queue corresponds to a number of resources that need to be requested prior to processing the resource requests of the one or more worker threads.

5. The system of claim 4 wherein the one or more computing resources are dedicated to writing data from cache memory, the one or more worker threads are destagers, and the semaphore counter represents a destager queue size that triggers a release of threads waiting in the semaphore queue.

6. The system of claim 5 wherein upon the semaphore receiving and processing the force decrement command between a time that any of the one or more worker threads decrements the semaphore counter and before the worker thread removes an entry from a working queue, the semaphore counter will be incremented to correct for a double decrement.

7. A method for sharing computing resources comprising:

providing a semaphore for controlling concurrent access to one or more computing resources by one or more worker threads, the semaphore comprising a semaphore counter corresponding to vacancies of the one or more computing resources and a semaphore queue of waiting resource requests from the one or more worker threads;

decrementing the semaphore counter when allocating any of the one or more computing resources to one of the one or more worker threads;

incrementing the semaphore counter when releasing any of the one or more computing resources from one of the one or more worker threads;

incrementing the semaphore counter from the one or more worker threads if a request for resource access occurs when the semaphore counter is zero or less than zero; and

decrementing the semaphore counter when receiving a force decrement command from a control thread for reducing a number of computing resources allocable to the one or more worker threads, wherein the semaphore counter will decrease to a negative integer value if the semaphore counter is zero or less than zero at a time of the force decrement command.

8. The method of claim 7 wherein upon decreasing the semaphore counter to a negative integer value, one of the one or more computing resources is deallocated for use by the one or more worker threads prior to any reallocation of the one of the one or more computing resources to the one or more worker threads.

9. The method of claim 7 wherein the one or more computing resources are dedicated to processing data storage requests from the one or more worker threads and the semaphore counter indicates a count of concurrently available data storage segments available for the one or more worker threads.

10. The method of claim 7 wherein the semaphore queue corresponds to a number of resources that need to be requested prior to processing the resource requests of the one or more worker threads.

11. The method of claim 7 wherein the one or more computing resources are dedicated to writing data from cache memory, the one or more worker threads are destagers, and the semaphore counter represents a destager queue size that triggers a release of threads waiting in the semaphore queue.

12. The method of claim 11 wherein upon the semaphore receiving and processing the force decrement command between a time that any of the one or more worker threads decrements the semaphore counter and before the worker thread removes an entry from a working queue, the semaphore counter will be incremented to correct for a double decrement.

13. A computer program product for sharing computing resources, the computer program product comprising a non-transitory computer-readable storage medium encoded with computer-executable program code programmed to cause the execution across one or more processors of:

providing a semaphore for controlling concurrent access to one or more computing resources by one or more worker threads, the semaphore comprising a semaphore counter corresponding to vacancies of the one or more computing resources and a semaphore queue of waiting resource requests from the one or more worker threads;

decrementing the semaphore counter when allocating any of the one or more computing resources to one of the one or more worker threads;

incrementing the semaphore counter when releasing any of the one or more computing resources from one of the one or more worker threads;

incrementing the semaphore counter if a request for resource access occurs when the semaphore counter is zero or less than zero; and

decrementing the semaphore counter when receiving a force decrement command from a control thread for reducing a number of computing resources allocable to the one or more worker threads, wherein the semaphore counter will decrease to a negative integer value if the semaphore counter is zero or less than zero at a time of the force decrement command.

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 (045482/0131) 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; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.)
Reel/Frame 061749/0924 →
RELEASE OF SECURITY INTEREST AT REEL 045482 FRAME 0395 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058298/0314 →
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 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Mar 1, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 045482/0131 →
PATENT SECURITY AGREEMENT (CREDIT) Recorded Mar 1, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 045482/0395 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 2, 2018
From: SHVEIDEL, VLADIMIR
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 044812/0726 →