[ 
https://issues.apache.org/jira/browse/CARBONDATA-484?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15760527#comment-15760527
 ] 

Ben Manes commented on CARBONDATA-484:
--------------------------------------

You might consider using TinyLFU instead of LRU to account for frequency. See 
this [HighScalability 
article](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html)
 that provides a short description. In short, a frequency filter is placed in 
front of the LRU policy to avoid low value entries from polluting the cache.

> Implement LRU cache for B-Tree 
> -------------------------------
>
>                 Key: CARBONDATA-484
>                 URL: https://issues.apache.org/jira/browse/CARBONDATA-484
>             Project: CarbonData
>          Issue Type: New Feature
>            Reporter: Mohammad Shahid Khan
>            Assignee: Mohammad Shahid Khan
>         Attachments: B-Tree LRU Cache.pdf
>
>
> LRU Cache for B-Tree is proposed  to ensure to avoid out memory, when too 
> many number of tables exits and all are not frequently used.
> Problem:
> CarbonData is maintaining two level of B-Tree cache, one at the driver level 
> and another at executor level.  Currently CarbonData has the mechanism to 
> invalidate the segments and blocks cache for the invalid table segments, but 
> there is no eviction policy for the unused cached object. So the instance at 
> which complete memory is utilized then the system will not be able to process 
> any new requests.
> Solution:
> In the cache maintained at the driver level and at the executor there must be 
> objects in cache currently not in use. Therefore system should have the 
> mechanism to below mechanism.
> 1.       Set the max memory limit till which objects could be hold in the 
> memory.
> 2.       When configured memory limit reached then identify the cached 
> objects currently not in use so that the required memory could be freed 
> without impacting the existing process.
> 3.       Eviction should be done only till the required memory is not meet.
> For details please refer to attachments.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to