IP Library Granted Patent US 11,281,587
Granted Patent B2
US 11,281,587 · App. 15/985,850 · Granted Mar 22, 2022

Self-tuning cache

Inventor: Yechiel Yochai (Moshav Aviel, IL)
Assignee: INFINIDAT LTD.
G06F12/0862G06F12/0866G06F12/123G06F2212/1021G06F2212/6026
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 11,281,587
App. No.
15/985,850
Granted
Mar 22, 2022
Kind
B2
Abstract

A method for managing a cache memory of a storage system, the method may include receiving, by a controller of the storage system, an access request related to a data unit; wherein the receiving occurs while (a) the cache memory stores a group of oldest cached data units, and (b) the data unit is stored in a memory module of the storage system the differs from the cache memory; determining, by the controller, a caching category of the data unit; and preventing from caching the data unit in the cache memory when a hit score of the caching category of the data unit is lower than a hit score of the group of oldest cached data units; and caching the data unit in the cache memory when the hit score of the caching category of the data unit is higher than the hit score of the group of oldest cached data units; wherein the hit score of the caching category of the data unit is indicative of a probability of a cache hit per data unit of the caching category.

Claims (41)

1. A method for managing a cache memory of a storage system, the method comprises:

receiving, by a controller of the storage system, an access request related to a data unit; wherein the receiving occurs while (a) the cache memory stores a group of oldest cached data units, and (b) the data unit is stored in a memory module of the storage system that differs from the cache memory;

evaluating a hit score of the group of oldest cached data units;

determining, by the controller, a caching category of the data unit;

dynamically evaluating a hit score of the caching category of the data unit, based on (a) a ratio between a number of cached data units that belong to the caching category and a number of total cached data units, and (b) number of hits in the caching category;

determining whether to admit the data unit into the cache memory, including:

preventing from admitting the data unit into the cache memory when the hit score of the caching category of the data unit is lower than the hit score of the group of oldest cached data units; and

caching the data unit in the cache memory when the hit score of the caching category of the data unit is higher than the hit score of the group of oldest cached data units; wherein the hit score of the caching category of the data unit is indicative of a probability of a cache hit per data unit of the caching category.

2. The method according to claim 1 comprising dynamically evaluating hit scores of various caching categories, the various caching categories comprise the caching category of the data unit.

3. The method according to claim 1 comprising dynamically associating data units to caching categories.

4. The method according to claim 1 wherein the determining of the caching category of the data unit is based on access request parameters that are included in the access request.

5. The method according to claim 1 wherein the determining of the caching category of the data unit is based on a logical address included in the access request.

6. The method according to claim 1 wherein the determining of the caching category of the data unit is based on at least one parameter out of (a) a time of reception of the access request, (b) a pattern formed by a group of access requests that comprise the access request, (c) a length of the data unit, and (d) a type of the access request, wherein the type of the access request is selected from a read request and a write request.

7. The method according to claim 1 wherein the determining of the caching category of the data unit is based on a time of reception of the access request.

8. The method according to claim 1 wherein the access request belongs to a group of access requests, and wherein the determining of the caching category of the data unit is based on a pattern formed by the group of access requests.

9. The method according to claim 1 wherein the determining of the caching category of the data unit is based on a type of the access request, wherein the type of the access request is selected from a read request and a write request.

10. The method according to claim 1 further comprising determining to evaluate a hit score of a certain caching category that is not associated with data units that are stored in the cache memory; caching a sample of data units that belong to the certain caching category in the cache memory even when the cache memory is full; and measuring the hit score of the certain caching category.

11. A computer program product that is non transitory and stores instructions for:

receiving, by a controller of the storage system, an access request related to a data unit; wherein the receiving occurs while (a) the cache memory stores a group of oldest cached data units, and (b) the data unit is stored in a memory module of the storage system that differs from the cache memory;

evaluating a hit score of the group of oldest cached data units;

determining, by the controller, a caching category of the data unit;

dynamically evaluating the hit score of the caching category of the data unit, based on (a) a ratio between the number of cached data units that belong to the caching category and a number of total cached data units, and (b) number of hits in the caching category;

determining, by the controller, whether to admit the data unit into the cache memory;

and

caching the data unit in the cache memory when the hit score of the caching category of the data unit is higher than the hit score of the group of oldest cached data units.

12. A method for managing a cache memory of a storage system, the method comprises:

receiving, by a controller of the storage system, an access request related to a data unit; wherein the receiving occurs while (a) the cache memory stores a group of oldest cached data units, and (b) the data unit is stored in a memory module of the storage system that differs from the cache memory;

evaluating a hit score of the group of oldest cached data units;

determining, by the controller, a caching category of the data unit;

dynamically evaluating the hit score of the caching category of the data unit by incrementing the hit score upon each hit on a cached data unit of the caching category of the data unit by a number that reflects a ration between the number of cached data units that belong to the caching category and a number of total cached data units;

determining whether to admit the data unit into the cache memory, including:

preventing from admitting the data unit into the cache memory when the hit score of the caching category of the data unit is lower than the hit score of the group of oldest cached data units; and

caching the data unit in the cache memory when the hit score of the caching category of the data unit is higher than the hit score of the group of oldest cached data units; wherein the hit score of the caching category of the data unit is indicative of a probability of a cache hit per data unit of the caching category.

13. A computer program product that is non transitory and stores instructions for:

receiving, by a controller of the storage system, an access request related to a data unit; wherein the receiving occurs while (a) the cache memory stores a group of oldest cached data units, and (b) the data unit is stored in a memory module of the storage system that differs from the cache memory;

evaluating a hit score of the group of oldest cached data units;

determining, by the controller, a caching category of the data unit;

dynamically evaluating the hit score of the caching category of the data unit by incrementing the hit score upon each hit on a cached data unit of the caching category of the data unit by a number that reflects a ration between the number of cached data units that belong to the caching category and a number of total cached data units;

determining, by the controller, whether to admit the data unit into the cache memory;

and

caching the data unit in the cache memory when flail the hit score of the caching category of the data unit is higher than the hit score of the group of oldest cached data units.

Assignments (6)
SECURITY INTEREST Recorded Jan 30, 2025
From: INFINIDAT LTD
To: KREOS CAPITAL VII AGGREGATOR SCSP,
Reel/Frame 070056/0458 →
RELEASE OF SECURITY INTEREST IN IP RECORDED AT R/F 55653/0854 Recorded Jan 18, 2024
From: SILICON VALLEY BANK
To: INFINIDAT LTD.
Reel/Frame 066344/0064 →
SECURITY INTEREST Recorded Jan 11, 2024
From: INFINIDAT LTD
To: KREOS CAPITAL VI (EXPERT FUND) L.P.; KREOS CAPITAL 2020 OPPORTUNITY L.P.
Reel/Frame 066270/0359 →
SECURITY INTEREST Recorded Jan 10, 2024
From: INFINIDAT LTD
To: HSBC BANK PLC
Reel/Frame 066268/0584 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 7, 2022
From: YOCHAI, YECHIEL
To: INFINIDAT LTD.
Reel/Frame 058915/0745 →
SECURITY INTEREST Recorded Mar 18, 2021
From: INFINIDAT LTD.
To: SILICON VALLEY BANK
Reel/Frame 055653/0854 →
Continuity (2)
Provisional Application 62612746 · Jan 2, 2018
Related Publication 20190205254A1 · Jul 4, 2019