IP Library Granted Patent US 12,056,054
Granted Patent B2
US 12,056,054 · App. 17/900,642 · Granted Aug 6, 2024

Dynamic growth of data caches using background processes for hash bucket growth

Inventors: Wenguang Wang (Santa Clara, CA); Yanxing Pan (San Jose, CA); Junlong Gao (Santa Clara, CA); Mounesh Badiger (Bangalore, IN); Eric Knauft (San Francisco, CA); Vamsidhar Gunturu (Cupertino, CA)
Assignee: VMware LLC
G06F12/0864G06F2212/1016G06F2212/604
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 12,056,054
App. No.
17/900,642
Granted
Aug 6, 2024
Kind
B2
Abstract

The disclosure describes growing a data cache using a background hash bucket growth process. A first memory portion is allocated to the data buffer of the data cache and a second memory portion is allocated to the metadata buffer of the data cache based on the cache growth instruction. The quantity of hash buckets in the hash bucket buffer is increased and the background hash bucket growth process is initiated, wherein the process is configured to rehash hash bucket entries of the hash bucket buffer in the increased quantity of hash buckets. A data entry is stored in the data buffer using the allocated first memory portion of the data cache and metadata associated with the data entry is stored using the allocated second memory portion of the metadata buffer, wherein a hash bucket entry associated with the data entry is stored in the increased quantity of hash buckets.

Claims (100)

1. A system comprising:

a processor; and

a memory comprising computer program code, the memory and the computer program code configured to, with the processor, cause the processor to:

allocate a first memory portion to a data buffer of a data cache, wherein the first memory portion is configured to include a portion of address space associated with the data buffer;

allocate a second memory portion to a metadata buffer of the data cache associated with the data buffer, wherein the second memory portion is configured to include a portion of address space associated with a metadata buffer associated with the data cache;

increase a quantity of hash buckets in a hash bucket buffer of the metadata buffer;

secure a cache entry lock associated with a cache entry of the data cache based at least in part on an operation associated with the cache entry;

determine that a cache growth indicator of the data cache indicates that the data cache is being grown;

secure hash bucket locks for a current hash bucket and a destination hash bucket associated with a hash bucket entry of the cache entry;

initiate a background hash bucket growth process configured to rehash at least a portion of hash bucket entries of the hash bucket buffer in the increased quantity of hash buckets;

perform the operation, wherein the operation updates at least one of the cache entry and the hash bucket entry of the cache entry;

release the hash bucket locks of the current hash bucket and the destination hash bucket associated with the hash bucket entry of the cache entry; and

release the cache entry lock; and

store a data entry in the data buffer using the allocated first memory portion of the data cache and metadata associated with the data entry using the allocated second memory portion of the metadata buffer, wherein a hash bucket entry associated with the data entry is stored in the increased quantity of hash buckets in the hash bucket buffer.

2. The system of claim 1 , wherein rehashing at least a portion of hash bucket entries by the background hash bucket growth process includes:

for each hash bucket entry:

securing an entry lock of the hash bucket entry;

determining a current hash bucket of the hash bucket entry and a destination hash bucket of the hash bucket entry based at least in part on the increased quantity of hash buckets;

based at least in part on the determined current hash bucket and destination hash bucket of the hash bucket entry being different hash buckets, rehashing the hash bucket entry;

releasing the entry lock of the hash bucket entry; and

setting the cache growth indicator of the data cache to indicate that the data cache is not being grown.

3. The system of claim 2 , wherein the rehashing of the hash bucket entry includes:

securing hash bucket locks of the determined current hash bucket and destination hash bucket;

writing the hash bucket entry to the determined destination hash bucket;

removing the hash bucket entry from the determined current hash bucket; and

releasing the hash bucket locks of the determined current hash bucket and destination hash bucket.

4. The system of claim 1 , wherein the address space associated with the data cache includes a first block of consecutive addresses and the first memory portion is configured to include an unused address of the first block of consecutive addresses that immediately follows a used address of the first block of consecutive addresses that has a highest address value of a set of used addresses of the first block of consecutive addresses;

wherein the address space associated with the metadata buffer includes a second block of consecutive addresses and the second memory portion is configured to include an unused address of the second block of consecutive addresses that immediately follows a used address of the second block of consecutive addresses that has a highest address value of a set of used addresses of the first block of consecutive addresses; and

wherein the first block of consecutive addresses and the second block of consecutive addresses are non-overlapping.

5. The system of claim 1 , wherein the memory and the computer program code are configured to, with the processor, further cause the processor to:

determine that the hash bucket lock for the current hash bucket is secured by another entity;

release the secured cache entry lock associated with the cache entry; and

reschedule performance of the operation associated with the cache entry.

6. The system of claim 1 , wherein the cache growth instruction is triggered based on at least one of the following: a used capacity of the data buffer reaching a data buffer threshold, a used capacity of the metadata buffer reaching a metadata buffer threshold, and a used capacity of at least one hash bucket of the hash bucket buffer reaching a hash bucket threshold.

7. A computerized method comprising:

allocating a first memory portion to a data buffer of a data cache, wherein the first memory portion is configured to include a portion of address space associated with the data buffer;

allocating a second memory portion to a metadata buffer of the data cache associated with the data buffer, wherein the second memory portion is configured to include a portion of address space associated with a metadata buffer associated with the data cache;

increasing a quantity of hash buckets in a hash bucket buffer of the metadata buffer;

securing a cache entry lock associated with a cache entry of the data cache based at least in part on an operation associated with the cache entry;

determining that a cache growth indicator of the data cache indicates that the data cache is being grown;

securing hash bucket locks for a current hash bucket and a destination hash bucket associated with a hash bucket entry of the cache entry;

initiating a background hash bucket growth process configured to rehash at least a portion of hash bucket entries of the hash bucket buffer in the increased quantity of hash buckets;

performing the operation, wherein the operation updates at least one of the cache entry and the hash bucket entry of the cache entry;

releasing the hash bucket locks of the current hash bucket and the destination hash bucket associated with the hash bucket entry of the cache entry;

releasing the cache entry lock; and

storing a data entry in the data buffer using the allocated first memory portion of the data cache and metadata associated with the data entry using the allocated second memory portion of the metadata buffer, wherein a second hash bucket entry associated with the data entry is stored in the increased quantity of hash buckets in the hash bucket buffer.

8. The computerized method of claim 7 , wherein rehashing at least a portion of hash bucket entries by the background hash bucket growth process includes:

setting the cache growth indicator of the data cache to indicate that the data cache is being grown;

for each hash bucket entry:

securing an entry lock of the hash bucket entry;

determining a current hash bucket of the hash bucket entry and a destination hash bucket of the hash bucket entry based at least in part on the increased quantity of hash buckets;

based at least in part on the determined current hash bucket and destination hash bucket of the hash bucket entry being different hash buckets, rehashing the hash bucket entry;

releasing the entry lock of the hash bucket entry; and

setting the cache growth indicator of the data cache to indicate that the data cache is not being grown.

9. The computerized method of claim 8 , wherein the rehashing of the hash bucket entry includes:

securing hash bucket locks of the determined current hash bucket and destination hash bucket;

writing the hash bucket entry to the determined destination hash bucket;

removing the hash bucket entry from the determined current hash bucket; and

releasing the hash bucket locks of the determined current hash bucket and destination hash bucket.

10. The computerized method of claim 7 , wherein the address space associated with the data cache includes a first block of consecutive addresses and the first memory portion is configured to include an unused address of the first block of consecutive addresses that immediately follows a used address of the first block of consecutive addresses that has a highest address value of a set of used addresses of the first block of consecutive addresses; and

wherein the address space associated with the metadata buffer includes a second block of consecutive addresses and the second memory portion is configured to include an unused address of the second block of consecutive addresses that immediately follows a used address of the second block of consecutive addresses that has a highest address value of a set of used addresses of the second block of consecutive addresses; and

wherein the first block of consecutive addresses and the second block of consecutive addresses are non-overlapping.

11. The computerized method of claim 7 , further comprising:

determining that the hash bucket lock for the current hash bucket is secured by another entity;

releasing the secured cache entry lock associated with the cache entry; and

rescheduling performance of the operation associated with the cache entry.

12. The computerized method of claim 7 , wherein the cache growth instruction is triggered based on at least one of the following: a used capacity of the data buffer reaching a data buffer threshold, a used capacity of the metadata buffer reaching a metadata buffer threshold, and a used capacity of at least one hash bucket of the hash bucket buffer reaching a hash bucket threshold.

13. One or more computer storage media having computer-executable instructions that, upon execution by a processor, cause the processor to at least:

allocate a first memory portion to a data buffer of a data cache, wherein the first memory portion is configured to include a portion of address space associated with the data buffer;

allocate a second memory portion to a metadata buffer of the data cache associated with the data buffer, wherein the second memory portion is configured to include a portion of address space associated with a metadata buffer associated with the data cache;

increase a quantity of hash buckets in a hash bucket buffer of the metadata buffer;

secure a cache entry lock associated with a cache entry of the data cache based at least in part on an operation associated with the cache entry;

determine that a cache growth indicator of the data cache indicates that the data cache is being grown;

secure hash bucket locks for a current hash bucket and a destination hash bucket associated with a hash bucket entry of the cache entry;

initiate a background hash bucket growth process configured to rehash at least a portion of hash bucket entries of the hash bucket buffer in the increased quantity of hash buckets;

perform the operation, wherein the operation updates at least one of the cache entry and the hash bucket entry of the cache entry;

release the hash bucket locks of the current hash bucket and the destination hash bucket associated with the hash bucket entry of the cache entry;

release the cache entry lock; and

store a data entry in the data buffer using the allocated first memory portion of the data cache and metadata associated with the data entry using the allocated second memory portion of the metadata buffer, wherein a hash bucket entry associated with the data entry is stored in the increased quantity of hash buckets in the hash bucket buffer.

14. The one or more computer storage media of claim 13 , wherein rehashing at least a portion of hash bucket entries by the background hash bucket growth process includes:

setting the cache growth indicator of the data cache to indicate that the data cache is being grown;

for each hash bucket entry:

securing an entry lock of the hash bucket entry;

determining a current hash bucket of the hash bucket entry and a destination hash bucket of the hash bucket entry based at least in part on the increased quantity of hash buckets;

based at least in part on the determined current hash bucket and destination hash bucket of the hash bucket entry being different hash buckets, rehashing the hash bucket entry;

releasing the entry lock of the hash bucket entry; and

setting the cache growth indicator of the data cache to indicate that the data cache is not being grown.

15. The one or more computer storage media of claim 14 , wherein the rehashing of the hash bucket entry includes:

securing hash bucket locks of the determined current hash bucket and destination hash bucket;

writing the hash bucket entry to the determined destination hash bucket;

removing the hash bucket entry from the determined current hash bucket; and

releasing the hash bucket locks of the determined current hash bucket and destination hash bucket.

16. The one or more computer storage media of claim 13 , wherein the address space associated with the data cache includes a first block of consecutive addresses and the first memory portion is configured to include an unused address of the first block of consecutive addresses that immediately follows a used address of the first block of consecutive addresses that has a highest address value of a set of used addresses of the first block of consecutive addresses;

wherein the address space associated with the metadata buffer includes a second block of consecutive addresses and the second memory portion is configured to include an unused address of the second block of consecutive addresses that immediately follows a used address of the second block of consecutive addresses that has a highest address value of a set of used addresses of the first block of consecutive addresses; and

wherein the first block of consecutive addresses and the second block of consecutive addresses are non-overlapping.

17. The one or more computer storage media of claim 13 , wherein the computer-executable instructions, upon execution by a processor, further cause the processor to at least:

determine that the hash bucket lock for the current hash bucket is secured by another entity;

release the secured cache entry lock associated with the cache entry; and

reschedule performance of the operation associated with the cache entry.

18. The one or more computer storage media of claim 13 , wherein the cache growth instruction is triggered based on at least one of the following: a used capacity of the data buffer reaching a data buffer threshold, a used capacity of the metadata buffer reaching a metadata buffer threshold, and a used capacity of at least one hash bucket of the hash bucket buffer reaching a hash bucket threshold.

Assignments (2)
CHANGE OF NAME Recorded May 8, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067355/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 18, 2022
From: WANG, WENGUANG; PAN, YANXING; GAO, JUNLONG; BADIGER, MOUNESH; KNAUFT, ERIC; GUNTURU, VAMSIDHAR
To: VMWARE, INC.
Reel/Frame 061449/0437 →