IP Library Granted Patent US 12,373,351
Granted Patent B2
US 12,373,351 · App. 18/235,801 · Granted Jul 29, 2025

Efficient cache eviction and insertions for sustained steady state performance

Inventors: Vijaya Kumar Jakkula (San Jose, CA); Siva Ramineni (Milpitas, CA); Venkata Bhanu Prakash Gollapudi (Pleasanton, CA)
Assignee: SAMSUNG ELECTRONICS CO., LTD.
G06F12/0891G06F9/3009G06F9/5016G06F9/5022G06F12/0806G06F12/0824G06F12/127G06F2209/5011G06F2209/5022G06F2212/1021G06F2212/7207
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,373,351
App. No.
18/235,801
Granted
Jul 29, 2025
Kind
B2
Abstract

A distributed metadata cache for a distributed object store includes a plurality of cache entries, an active-cache-entry set and an unreferenced-cache-entry set. Each cache entry includes information relating to whether at least one input/output (IO) thread is referencing the cache entry and information relating to whether the cache entry is no longer referenced by at least one IO thread. Each cache entry in the active-cache-entry set includes information that indicates that at least one IO thread is actively referencing the cache entry. Each cache entry in the unreferenced-cache-entry set is eligible for eviction from the distributed metadata cache by including information that indicates that the cache entry is no longer actively referenced by an IO thread.

Claims (26)

1. A distributed metadata cache comprising:

a cache entry including a cache header, a first link to a first input/output (I/O) thread that references the cache entry, and a second link to a second I/O thread that is in a different referencing state than the first I/O thread,

wherein the cache header contains an identifier, and

wherein the different reference state indicates a decrease in hits of the cache entry.

2. The distributed metadata cache of claim 1 , wherein the first link to the first I/O thread is part of a set in a doubly linked list.

3. The distributed metadata cache of claim 2 , wherein the links in the set include previous and next pointers.

4. The distributed metadata cache of claim 1 , wherein the second link to the second I/O thread is part of a set in a doubly linked list.

5. The distributed metadata cache of claim 1 , wherein the first link to the first I/O thread is part of a set in a searchable-tree data structure.

6. The distributed metadata cache of claim 1 , wherein the distributed metadata cache maintains a reference counter accounting for a number of I/O threads that reference the cache entry.

7. The distributed metadata cache of claim 6 , wherein the I/O threads each release their respective cache entry.

8. The distributed metadata cache of claim 7 , wherein a determination that the cache entry is eligible for eviction is based on I/O characteristics of an application using the cache entry.

9. The distributed metadata cache of claim 8 , wherein a determination that the cache entry is eligible for eviction is based on a rate of consumption of free resources by the application.

10. A method of managing a distributed metadata cache comprising:

assigning to a cache entry a cache header, a first link to a first input/output (I/O) thread that references the cache entry, and a second link to a second I/O thread that is in a different referencing state than the first I/O thread,

wherein the cache header contains an identifier, and

wherein the different reference state indicates a decrease in hits of the cache entry.

11. The method of managing a distributed metadata cache of claim 10 , wherein the first link to the first I/O thread is part of a set in a doubly linked list.

12. The method of managing a distributed metadata cache of claim 11 , wherein the links in the set include previous and next pointers.

13. The method of managing a distributed metadata cache of claim 10 , wherein the second link to the second I/O thread is part of a set in a doubly linked list.

14. The method of managing a distributed metadata cache of claim 10 , wherein the first link to the first I/O thread is part of a set in a searchable-tree data structure.

15. The method of managing a distributed metadata cache of claim 10 further comprising:

maintaining a reference counter accounting for a number of I/O threads that reference the cache entry.

16. The method of managing a distributed metadata cache of claim 15 , wherein the I/O threads each release their respective cache entry.

17. The method of managing a distributed metadata cache of claim 16 further comprising:

determining that the cache entry is eligible for eviction based on I/O characteristics of an application using the cache entry.

18. The method of managing a distributed metadata cache of claim 17 , wherein the determining that the cache entry is eligible for eviction is based on a rate of consumption of free resources by the application.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 6, 2023
From: JAKKULA, VIJAYA KUMAR; RAMINENI, SIVA; GOLLAPUDI, VENKATA BHANU PRAKASH
To: SAMSUNG ELECTRONICS CO., LTD.
Reel/Frame 065149/0329 →
Continuity (4)
Continuation 17504490 · Oct 18, 2021
Continuation 16812257 · Mar 6, 2020
Provisional Application 62957120 · Jan 3, 2020
Related Publication 20230393986A1 · Dec 7, 2023
References Cited (35)
US 5701432A · Wong · 1997 [cited by examiner]
US 6298411B1 · Giacalone · 2001 [cited by examiner]
US 7424577B2 · Bali et al. · 2008 [cited by applicant]
US 9021207B2 · Kalamatianos et al. · 2015 [cited by applicant]
US 9460025B1 · Wallace · 2016 [cited by examiner]
US 9612967B1 · Peterson et al. · 2017 [cited by applicant]
US 10754784B1 · Jakkula et al. · 2020 [cited by applicant]
US 11151050B2 · Jakkula · 2021 [cited by examiner]
US 11762778B2 · Jakkula · 2023 [cited by examiner]
US 20040215882A1 · Alexander · 2004 [cited by examiner]
US 20060129763A1 · Royer, Jr. et al. · 2006 [cited by applicant]
US 20090013133A1 · Cypher · 2009 [cited by examiner]
US 20120066276A1 · Deshkar et al. · 2012 [cited by applicant]
US 20130166588A1 · Gruschko et al. · 2013 [cited by applicant]
US 20130173853A1 · Ungureanu et al. · 2013 [cited by applicant]
US 20140047185A1 · Peterson et al. · 2014 [cited by applicant]
US 20140047190A1 · Dawkins et al. · 2014 [cited by applicant]
US 20140195739A1 · Yu et al. · 2014 [cited by applicant]
US 20140223141A1 · Combs · 2014 [cited by examiner]
US 20160062791A1 · Cain, III · 2016 [cited by examiner]
US 20170177895A1 · McHale · 2017 [cited by applicant]
US 20190339871A1 · Kucherov et al. · 2019 [cited by applicant]
US 20200142830A1 · Natanzon et al. · 2020 [cited by applicant]
US 20200201782A1 · Tsao et al. · 2020 [cited by applicant]
US 20200264986A1 · Eom et al. · 2020 [cited by applicant]
US 20200387455A1 · Jakkula et al. · 2020 [cited by applicant]
US 20210117427A1 · Xiang · 2021 [cited by applicant]
Pat Morin. Open Data Structures. 2013. AU Press. pp. 63-71 and 140-142. [cited by examiner]
Zhao et al. “HyCache+: Towards Scalable High-Performance Caching Middleware for Parallel File Systems.” May 2014. IEEE. CCGrid 2014. pp. 267-276. [cited by examiner]
Gorman, Mel, “Understanding The Linux Virtual Memory Manager,” ( https://www.kernel.org/doc/gorman/pdf/understand.pdf), Jul. 9, 2007, pp. 153-166. [cited by applicant]
Notice of Allowance for U.S. Appl. No. 16/812,257, mailed Jun. 15, 2021. [cited by applicant]
Notice of Allowance for U.S. Appl. No. 17/504,490, mailed May 3, 2023. [cited by applicant]
Office Action for U.S. Appl. No. 17/504,490, mailed Jan. 12, 2023. [cited by applicant]
Shi, Ke, “A Replication and Cache based Distributed Metadata Management System for Data Grid,” IEEE, SNPD 2007, Aug. 2007, pp. 20-25. [cited by applicant]
Zhao, Dongfang et al. “HyCache+: Towards Scalable High-Performance Caching Middleware for Parallel File Systems,” May 2014, IEEE, CCGrid 2014, pp. 267-276. [cited by applicant]