IP Library Granted Patent US 10,387,309
Granted Patent B2
US 10,387,309 · App. 15/213,426 · Granted Aug 20, 2019

High-performance distributed caching

Inventors: Shahar Frank (Ramat Hasharon, IL); Ezra Hoch (Tel Aviv, IL); Shai Koffman (Hod Hasharon, IL); Allon Cohen (Los Altos, CA); Avraham Meir (Rishon LeZion, IL)
Assignee: Elastifile Ltd.
G06F12/0813G06F12/0815G06F12/0842G06F12/0817G06F2212/1016G06F2212/152G06F2212/154G06F2212/502G06F2212/6042
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,387,309
App. No.
15/213,426
Granted
Aug 20, 2019
Kind
B2
Abstract

A computing system includes multiple compute nodes that include respective processors and respective cache memories. The processors are configured to determine a default compute node in which a given data item is to be cached, to make a decision whether to cache the given data item in the default compute node or in an alternative compute node, based on cache-quality metrics that are evaluated for respective cache memories of the compute nodes, and to cache the given data item in the default compute node or in the alternative compute node, depending on the decision.

Claims (56)

1. A computing system, comprising multiple compute nodes that comprise respective processors and respective cache memories, wherein the processors are configured to:

pre-assign a default compute node for future caching of a given data item, based on an attribute of the given data item;

subsequently, when the given data item is to be cached, check whether an alternative compute node is more suitable for caching the given data item than the pre-assigned default compute node, depending on cache-quality metrics that are evaluated for respective cache memories of the compute nodes;

when, based on the cache-quality metrics, the alternative compute node is more suitable than the pre-assigned default compute node for caching the given data item, cache the given data item in the alternative compute node; and

when, based on the cache-quality metrics, the alternative compute node is not more suitable than the pre-assigned default compute node for caching the given data item, cache the given data item in the pre-assigned default compute node.

2. The computing system according to claim 1 , wherein the processors are configured to check whether the alternative compute node is more suitable by evaluating a criterion that depends on (i) the cache-quality metrics and (ii) one or more estimated latencies incurred by caching the given data item in one or more respective compute nodes.

3. The computing system according to claim 1 , wherein the processors are configured to check whether the alternative compute node is more suitable by evaluating a criterion that depends on a topology of a network that interconnects the compute nodes.

4. The computing system according to claim 1 , wherein the processors are configured to check whether the alternative compute node is more suitable by evaluating a criterion that depends on an importance measure of the given data item.

5. The computing system according to claim 1 , wherein a cache-quality metric of a cache memory of a compute node depends on one or more of:

respective ages of one or more data items cached in the cache memory;

respective importance levels of one or more data items cached in the cache memory;

respective frequencies with which one or more cached data items are accessed;

respective weighted costs of eviction for one or more data items most-recently evicted from the cache memory;

respective quality levels of the one or more data items most-recently evicted from the cache memory;

respective weighted eviction costs for one or more lowest-quality data items evicted from the cache memory;

a total size of the cache memory;

a size of remaining free memory in the cache memory; and

an extent to which the compute node is busy.

6. The computing system according to claim 1 , wherein, when the alternative compute node is more suitable, a processor of the default compute node is configured to record an identity of the alternative compute node.

7. The computing system according to claim 6 , wherein a processor of a compute node is configured to read the given data item by requesting the given data item from the default compute node, and in response receiving either the given data item or the identity of the alternative compute node in which the given data item is actually cached.

8. The computing system according to claim 6 , wherein, in response to eviction of the given data item from the cache memory of the alternative compute node, a processor of the default compute node is configured to delete the identifier of the alternative compute node.

9. The computing system according to claim 1 , wherein the processors are configured to initially cache the given data item in the default compute node, and, when the alternative compute node is more suitable, to send the given data item to the alternative compute node.

10. A method for data storage, comprising:

in a computing system that comprises multiple compute nodes, pre-assigning a default compute node for future caching of a given data item, based on an attribute of the given data item;

subsequently, when the given data item is to be cached, checking whether an alternative compute node is more suitable for caching the given data item than the pre-assigned default compute node, depending on cache-quality metrics that are evaluated for respective cache memories of the compute nodes;

when, based on the cache-quality metrics, the alternative compute node is more suitable than the pre-assigned default compute node for caching the given data item, caching the given data item in the alternative compute node; and

when, based on the cache-quality metrics, the alternative compute node is not more suitable than the pre-assigned default compute node for caching the given data item, caching the given data item in the pre-assigned default compute node.

11. The method according to claim 10 , wherein checking whether the alternative compute node is more suitable comprises evaluating a criterion that depends on (i) the cache-quality metrics and (ii) one or more estimated latencies incurred by caching the given data item in one or more respective compute nodes.

12. The method according to claim 10 , wherein checking whether the alternative compute node is more suitable comprises evaluating a criterion that depends on a topology of a network that interconnects the compute nodes.

13. The method according to claim 10 , wherein checking whether the alternative compute node is more suitable comprises evaluating a criterion that depends on an importance measure of the given data item.

14. The method according to claim 10 , wherein a cache-quality metric of a cache memory of a compute node depends on one or more of:

respective ages of one or more data items cached in the cache memory;

respective importance levels of one or more data items cached in the cache memory;

respective frequencies with which one or more cached data items are accessed;

respective weighted costs of eviction for one or more data items most-recently evicted from the cache memory;

respective quality levels of the one or more data items most-recently evicted from the cache memory;

respective weighted eviction costs for one or more lowest-quality data items evicted from the cache memory;

a total size of the cache memory;

a size of remaining free memory in the cache memory; and

an extent to which the compute node is busy.

15. The method according to claim 10 , and comprising, when the alternative compute node is more suitable, recording an identity of the alternative compute node in the default compute node.

16. The method according to claim 15 , and comprising reading the given data item by requesting the given data item from the default compute node, and in response receiving either the given data item or the identity of the alternative compute node in which the given data item is actually cached.

17. The method according to claim 15 , and comprising, upon evicting the given data item from the cache memory of the alternative compute node, deleting the identifier of the alternative compute node from the default compute node.

18. The method according to claim 10 , wherein caching the given data item comprises initially caching the given data item in the default compute node, and, when the alternative compute node is more suitable, sending the given data item to the alternative compute node.

19. A compute node, comprising:

a network interface, for communicating over a network with one or more other compute nodes; and

a processor, configured:

to pre-assign a default compute node for future caching of a given data item, based on an attribute of the given data item,

subsequently, when the given data item is to be cached, to check whether an alternative compute node is more suitable for caching the given data item than the pre-assigned default compute node, depending on cache-quality metrics that are evaluated for respective cache memories of the compute nodes,

when, based on the cache-quality metrics, the alternative compute node is more suitable than the pre-assigned default compute node for caching the given data item, to cache the given data item in the alternative compute node, and

when, based on the cache-quality metrics, the alternative compute node is not more suitable than the pre-assigned default compute node for caching the given data item, to cache the given data item in the pre-assigned default compute node.

20. A computer software product, the product comprising a tangible non-transitory computer-readable medium in which program instructions are stored, which instructions, when read by a processor of a compute node that is connected by a network to one or more other compute nodes, causes the processor:

to pre-assign a default compute node for future caching of a given data item, based on an attribute of the given data item,

subsequently, when the given data item is to be cached, to check whether an alternative compute node is more suitable for caching the given data item than the pre-assigned default compute node, depending on cache-quality metrics that are evaluated for respective cache memories of the compute nodes,

when, based on the cache-quality metrics, the alternative compute node is more suitable than the pre-assigned default compute node for caching the given data item, to cache the given data item in the alternative compute node, and

when, based on the cache-quality metrics, the alternative compute node is not more suitable than the pre-assigned default compute node for caching the given data item, to cache the given data item in the pre-assigned default compute node.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 9, 2019
From: ELASTIFILE LTD
To: GOOGLE LLC
Reel/Frame 050664/0385 →
RELEASE OF SECURITY INTEREST Recorded Oct 8, 2019
From: SILICON VALLEY BANK
To: ELASTIFILE LTD
Reel/Frame 050652/0955 →
SECURITY INTEREST Recorded Jun 8, 2017
From: ELASTIFILE LTD
To: SILICON VALLEY BANK
Reel/Frame 042653/0541 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 19, 2016
From: FRANK, SHAHAR; HOCH, EZRA; KOFFMAN, SHAI; COHEN, ALLON; MEIR, AVRAHAM
To: ELASTIFILE LTD.
Reel/Frame 039182/0937 →
Continuity (2)
Provisional Application 62241225 · Oct 14, 2015
Related Publication 20170109282A1 · Apr 20, 2017