IP Library Granted Patent US 12675414
Granted Patent B2
US 12675414 · App. 18/893,176 · Granted Jul 7, 2026

Flushing data from caches

Inventors: Geng Han (Beijing, CN); Vamsi K. Vankamamidi (Hopkinton, MA); Jibing Dong (Beijing, CN)
Assignee: Dell Products L.P.
G06F12/0891G06F12/0864G06F12/0882
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 12675414
App. No.
18/893,176
Granted
Jul 7, 2026
Kind
B2
Abstract

A technique is directed to flushing data from a cache. The technique includes populating a first group of page-descriptor containers with page descriptors identifying data pages to flush from a cache. The technique further includes, after populating the first group of page-descriptor containers, populating a second group of page-descriptor containers with additional page descriptors in place of populating the first group of page-descriptor containers. The technique further includes directing a flushing service to access the first group of page-descriptor containers to obtain the page descriptors identifying the data pages when flushing the data pages from the cache.

Claims (68)

1 . A method for flushing data from a cache, comprising:

populating a first group of page-descriptor containers with page descriptors identifying data pages to flush from a cache;

after populating the first group of page-descriptor containers, populating a second group of page-descriptor containers with additional page descriptors in place of populating the first group of page-descriptor containers;

directing a flushing service to access the first group of page-descriptor containers to obtain the page descriptors identifying the data pages when flushing the data pages from the cache;

incrementing a resource count based on the flushing service flushing a set of data pages from the cache, the resource count indicating resources allocated to cache storage; and

when populating the second group of page-descriptor containers with the additional page descriptors, consuming the resources allocated to cache storage.

2 . The method of claim 1 wherein the page descriptors include location metadata identifying storage locations in secondary storage to which to flush the data pages; and

wherein populating the first group of page-descriptor containers includes:

adding sets of page descriptors to respective containers of the first group of page-descriptor containers based on the location metadata.

3 . The method of claim 2 wherein adding the sets of page descriptors to the respective containers of the first group of page-descriptor containers includes:

adding multiple page descriptors to a container of the first group of page-descriptor containers, the flushing service obtaining the multiple page descriptors from the container to identify multiple data pages to flush together from the cache.

4 . The method of claim 2 wherein the containers of the first group of page-descriptor containers are constructed and arranged to cover respective ranges of storage locations in the secondary storage; and

wherein adding the sets of page descriptors to the respective containers of the first group of page-descriptor containers includes:

adding a set of page descriptors to a particular container of the first group of page-descriptor containers based on the set of page descriptors including location metadata identifying a respective set of storage locations within a range of storage locations covered by the particular container.

5 . The method of claim 2 , further comprising:

hashing the location metadata to generate hash values identifying buckets in a set of hash tables, the buckets including the containers of the first group of page-descriptor containers to which the sets of page descriptors are added.

6 . The method of claim 5 wherein a first hash table has a first plurality of buckets, a first bucket of the first plurality of buckets including a second hash table having a second plurality of buckets, a second bucket in the second plurality of buckets including one or more of the containers of the first group of page-descriptor containers; and

wherein hashing the location metadata includes:

hashing a first metadata value included in a particular page descriptor to generate a first hash value identifying the first bucket of the first plurality of buckets; and

hashing a second metadata value included in the particular page descriptor to generate a second hash value identifying the second bucket of the second plurality of buckets from the second hash table included in the first bucket, the second bucket including a container of the first group of page-descriptor containers in which to add the particular page descriptor.

7 . The method of claim 6 wherein hashing the first metadata value includes:

hashing, as the first metadata value, an extent identifier indicating a storage extent in secondary storage to which to flush a data page identified by the particular page descriptor; and

wherein hashing the second metadata value includes:

hashing, as the second metadata value, a logical-address identifier indicating a logical address within the storage extent to which to flush the data page.

8 . The method of claim 5 wherein the page descriptors populating the first group of page-descriptor containers include a first page descriptor and a second page descriptor identifying respective data pages;

wherein hashing the location metadata includes:

generating a common hash value from hashing respective location metadata of the first page descriptor and the second page descriptor, the respective location metadata indicating different respective storage locations to which to flush the respective data pages, the common hash value identifying a particular bucket in the set of hash tables; and

wherein adding the sets of page descriptors to the respective containers includes:

adding both the first page descriptor and the second page descriptor to a container in the particular bucket.

9 . The method of claim 5 , further comprising:

receiving a set of input/output (I/O) requests from a set of hosts, the set of I/O requests providing a change in an I/O workload of the cache; and

adjusting, based on the change in the I/O workload, at least one of: (i) a number of the buckets storing the containers of the first group of page-descriptor containers to which the sets of page descriptors are added or (ii) a storage size allocated to one or more of the containers of the first group of page-descriptor containers.

10 . The method of claim 1 ,

wherein a rate at which the cache ingests data pages identified by the additional page descriptors is limited while the resource count indicates insufficient resources allocated to cache storage.

11 . The method of claim 10 wherein the resource count is a number of tokens in a token pool, the tokens indicating resources allocated to storing the additional page descriptors in the second group of page-descriptor containers; and

wherein incrementing the count of the resource counter includes:

increasing the number of tokens in the token pool based on a number of data pages in the set of data pages that the flushing service flushes from the cache.

12 . The method of claim 1 , further comprising:

after populating the second group of page-descriptor containers, populating a third group of page-descriptor containers with other page descriptors in place of populating the second group of page-descriptor containers; and

while the third group of page-descriptor containers is being populated, directing the flushing service to flush (i) at least a portion of the data pages identified by the page descriptors populating the first group of page-descriptor containers and (ii) at least a portion of additional data pages identified by the additional page descriptors populating the second group of page-descriptor containers.

13 . The method of claim 1 , further comprising:

after directing the flushing service to access the first group of page-descriptor containers to flush the data pages, detecting that the cache has exceeded a predefined fullness level; and

in response to detecting that the cache has exceeded a predefined fullness level, directing the flushing service to increase a rate at which the flushing service flushes the data pages from the cache.

14 . The method of claim 1 wherein incrementing the resource count includes:

detecting that the flushing service has flushed the set of data pages from the cache; and

in response to detecting that the flushing service has flushed the set of data pages from the cache, increasing the resource count by an amount proportional to a number of data pages in the set of data pages.

15 . Data storage equipment, comprising:

memory; and

control circuitry coupled with the memory, the memory storing instructions which, when carried out by the control circuitry, cause the control circuitry to perform a method of:

populating a first group of page-descriptor containers with page descriptors identifying data pages to flush from a cache;

after populating the first group of page-descriptor containers, populating a second group of page-descriptor containers with additional page descriptors in place of populating the first group of page-descriptor containers;

directing a flushing service to access the first group of page-descriptor containers to obtain the page descriptors identifying the data pages when flushing the data pages from the cache;

incrementing a resource count based on the flushing service flushing a set of data pages from the cache, the resource count indicating resources allocated to cache storage; and

when populating the second group of page-descriptor containers with the additional page descriptors, consuming the resources allocated to cache storage.

16 . The data storage equipment of claim 15 , wherein the page descriptors include location metadata identifying storage locations in secondary storage to which to flush the data pages; and

wherein populating the first group of page-descriptor containers includes:

adding sets of page descriptors to respective containers of the first group of page-descriptor containers based on the location metadata.

17 . The data storage equipment of claim 16 wherein adding the sets of page descriptors to the respective containers of the first group of page-descriptor containers includes:

adding multiple page descriptors to a container of the first group of page-descriptor containers, the flushing service obtaining the multiple page descriptors from the container to identify multiple data pages to flush together from the cache.

18 . The data storage equipment of claim 16 wherein the containers of the first group of page-descriptor containers are constructed and arranged to cover respective ranges of storage locations in the secondary storage; and

wherein adding the sets of page descriptors to the respective containers of the first group of page-descriptor containers includes:

adding a set of page descriptors to a particular container of the first group of page-descriptor containers based on the set of page descriptors including location metadata identifying a respective set of storage locations within a range of storage locations covered by the particular container.

19 . A computer program product having a non-transitory computer readable medium which stores a set of instructions for flushing data from a cache, the set of instructions, when carried out by computerized circuitry, causing the computerized circuitry to perform a method of:

populating a first group of page-descriptor containers with page descriptors identifying data pages to flush from a cache;

after populating the first group of page-descriptor containers, populating a second group of page-descriptor containers with additional page descriptors in place of populating the first group of page-descriptor containers;

directing a flushing service to access the first group of page-descriptor containers to obtain the page descriptors identifying the data pages when flushing the data pages from the cache;

incrementing a resource count based on the flushing service flushing a set of data pages from the cache, the resource count indicating resources allocated to cache storage; and

when populating the second group of page-descriptor containers with the additional page descriptors, consuming the resources allocated to cache storage.