IP Library Granted Patent US 10,922,147
Granted Patent B2
US 10,922,147 · App. 16/039,902 · Granted Feb 16, 2021

Storage system destaging based on synchronization object with watermark

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,922,147
App. No.
16/039,902
Granted
Feb 16, 2021
Kind
B2
Abstract

A storage system includes a plurality of storage devices, a data structure, and a storage controller that is configured to obtain a threshold value for a synchronization object associated with the data structure. The storage controller is further configured to activate a plurality of threads. Each thread is configured to determine a count value of the synchronization object corresponding to a number of entries in the data structure and determine whether the count value of the synchronization object exceeds the threshold value plus a predetermined number of entries. In response to determining that the count value of the synchronization object exceeds the threshold value plus the predetermined number of entries, the thread is configured to perform an action.

Claims (73)

1. An apparatus comprising:

a storage system comprising a plurality of storage devices, a data structure associated with at least one of the plurality of storage devices, and a storage controller associated with the data structure and the plurality of storage devices;

wherein the storage controller is configured to:

obtain a threshold value for a synchronization object associated with the data structure; and

activate a plurality of threads, each thread configured to:

determine a count value of the synchronization object, the count value corresponding to a number of entries in the data structure;

determine whether the count value of the synchronization object exceeds the threshold value plus a predetermined number of entries; and

destage a number of entries of the data structure equal to the predetermined number of entries in response to determining that the count value of the synchronization object exceeds the threshold value plus the predetermined number of entries.

2. The apparatus of claim 1 , wherein access to the synchronization object is restricted to one of the threads at a time.

3. The apparatus of claim 1 , wherein a given thread of the plurality of threads is further configured to suspend in response to determining that the count value of the synchronization object does not exceed the threshold value plus the predetermined number of entries.

4. The apparatus of claim 3 , wherein the storage controller is further configured to:

update the count value of the synchronization object; and

wake up the given thread in response to the update of the count value of the synchronization object, the given thread further configured to:

determine the count value of the synchronization object;

determine whether the count value of the synchronization object exceeds the threshold value plus the predetermined number of entries; and

destage the number of entries of the data structure equal to the predetermined number of entries in response to determining that the count value of the synchronization object exceeds the threshold value plus the predetermined number of entries.

5. The apparatus of claim 1 ,

wherein the data structure is a cache storing data to be written to at least one of the plurality of storage devices,

wherein the plurality of threads comprise a plurality of destager threads, and

wherein destaging the number of entries of the data structure equal to the predetermined number of entries comprises at least one of the destager threads:

destaging a number of entries of the cache equal to the predetermined number of entries; and

updating the count value of the synchronization object in response to the destaging.

6. The apparatus of claim 5 , wherein updating the count value of the synchronization object in response to the destaging comprises decrementing the count value of the synchronization object by the predetermined number of entries.

7. The apparatus of claim 5 , wherein the storage controller is further configured to:

receive a write IO request from a host device;

add at least one entry to the cache based on the received write IO request; and

increment the count value of the synchronization object by an amount corresponding to the number of entries added to the cache based on the received write IO request.

8. The apparatus of claim 7 , wherein the storage controller is configured to:

maintain a destager queue comprising at least one item, each item corresponding to an entry in the cache,

wherein, incrementing the count value of the synchronization object corresponding to the number of entries added to the cache based on the received write IO request comprises incrementing the count value of the synchronization object corresponding to the number of items in the destager queue.

9. The apparatus of claim 8 , wherein destaging the number of entries of the cache equal to the predetermined number of entries comprises removing the corresponding items from the destager queue.

10. A method comprising:

obtaining a threshold value for a synchronization object associated with a data structure associated with a plurality of storage devices; and

activating a plurality of threads, each thread:

determining the count value of the synchronization object, the count value corresponding to a number of entries in the data structure;

determining whether the count value of the synchronization object exceeds the threshold value of the synchronization object plus a predetermined number of entries; and

destaging a number of entries of the data structure equal to the predetermined number of entries in response to determining that the count value of the synchronization object exceeds the threshold value plus the predetermined number of entries,

wherein the method is implemented by at least one processing device comprising a processor coupled to a memory.

11. The method of claim 10 , wherein access to the synchronization object is restricted to one of the threads at a time.

12. The method of claim 10 , wherein a given thread of the plurality of threads is further configured to suspend in response to determining that the count value of the synchronization object does not exceed the threshold value plus the predetermined number of entries.

13. The method of claim 12 , wherein the storage controller is further configured to:

update the count value of the synchronization object; and

wake up the given thread in response to the update of the count value of the synchronization object, the given thread further configured to:

determine the count value of the synchronization object;

determine whether the count value of the synchronization object exceeds the threshold value plus the predetermined number of entries; and

destage the number of entries of the data structure equal to the predetermined number of entries in response to determining that the count value of the synchronization object exceeds the threshold value plus the predetermined number of entries.

14. The method of claim 10 ,

wherein the data structure is a cache storing data to be written to at least one of the plurality of storage devices,

wherein the plurality of threads comprise a plurality of destager threads, and

wherein destaging the number of entries of the data structure equal to the predetermined number of entries comprises at least one of the destager threads:

destaging a number of entries of the cache equal to the predetermined number of entries; and

updating the count value of the synchronization object in response to the destaging.

15. The method of claim 14 , wherein updating the count value of the synchronization object in response to the destaging comprises decrementing the count value of the synchronization object by the predetermined number of entries.

16. The method of claim 14 , wherein the method further comprises:

receiving a write IO request from a host device;

adding at least one entry to the cache based on the received write IO request; and

incrementing the count value of the synchronization object by an amount corresponding to the number of entries added to the cache based on the received write IO request.

17. The method of claim 16 , wherein the method further comprises:

maintaining a destager queue comprising at least one item, each item corresponding to an entry in the cache,

wherein, incrementing the count value of the synchronization object corresponding to the number of entries added to the cache based on the received write IO request comprises incrementing the count value of the synchronization object corresponding to the number of items in the destager queue.

18. The method of claim 17 , wherein destaging the number of entries of the cache equal to the predetermined number of entries comprises removing the corresponding items from the destager queue.

19. A computer program product comprising a non-transitory processor-readable storage medium having stored therein program code of one or more software programs, wherein the program code when executed by at least one processing device causes said at least one processing device to:

obtain a threshold value for a synchronization object associated with a data structure associated with at least one of a plurality of storage devices; and

activate a plurality of threads, each thread configured to:

determine a count value of the synchronization object, the count value corresponding to a number of entries in the data structure;

determine whether the count value of the synchronization object exceeds the threshold value plus a predetermined number of entries; and

destage a number of entries of the data structure equal to the predetermined number of entries in response to determining that the count value of the synchronization object exceeds the threshold value plus the predetermined number of entries.

20. The computer program product of claim 19 ,

wherein the data structure is a cache storing data to be written to at least one of the plurality of storage devices,

wherein the plurality of threads comprise a plurality of destager threads, and

wherein destaging the number of entries of the data structure equal to the predetermined number of entries comprises at least one of the destager threads:

destaging a number of entries of the cache equal to the predetermined number of entries; and

updating the count value of the synchronization object in response to the destaging.

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 (047648/0422) 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 060160/0862 →
RELEASE OF SECURITY INTEREST AT REEL 047648 FRAME 0346 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/0510 →
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 (CREDIT) Recorded Oct 12, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 047648/0346 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Oct 12, 2018
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 047648/0422 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 19, 2018
From: SHVEIDEL, VLADIMIR
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 046592/0436 →