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

Robert Stupp commented on CASSANDRA-7438:
-----------------------------------------

Did a walkthrough to lruc 0.7, too...

Altogether +1 on the current state :)

Just one NIT:
* Move {{Preconditions.checkArgument(capacity > 0 ...}} in {{LRUCache.java}} 
from {{capacity()}} to {{setCapacity}}

One thing regarding saved row caches: We should ensure that changes in the 
serialized format of saved row caches are detected (and either converted during 
load or just discarded)

Comments would be nice to have in a future version.

* Think you need to add the APLv2 license header to all source files ;)
* The NEWS, COPYING and AUTHORS files in {{lruc/src/native}} and {{lurk}} are 
blank
* {{stats}} struct is heavily used using CAS - maybe think of aligning the 
individual values to separate CPU cache lines to reduce CPU cache refreshes
* similar for {{item.refcount}} - it refcount is updated, the whole cache line 
needs to be re-fetched (CPU)
* {{o.a.c.cache.ICacheProvider.RowKeySerializer}} tries to „compress“ the two 
{{long}} values of UUID via 
{{EncodedDataOutputStream}}/{{EncodedDataInputStream}} - this is usually not 
possible for long values of a UUID resulting in bigger serialized 
representations than necessary (this is what the default serialization e.g. 
UUIDSerializer does)


> Serializing Row cache alternative (Fully off heap)
> --------------------------------------------------
>
>                 Key: CASSANDRA-7438
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-7438
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>         Environment: Linux
>            Reporter: Vijay
>            Assignee: Vijay
>              Labels: performance
>             Fix For: 3.0
>
>         Attachments: 0001-CASSANDRA-7438.patch
>
>
> Currently SerializingCache is partially off heap, keys are still stored in 
> JVM heap as BB, 
> * There is a higher GC costs for a reasonably big cache.
> * Some users have used the row cache efficiently in production for better 
> results, but this requires careful tunning.
> * Overhead in Memory for the cache entries are relatively high.
> So the proposal for this ticket is to move the LRU cache logic completely off 
> heap and use JNI to interact with cache. We might want to ensure that the new 
> implementation match the existing API's (ICache), and the implementation 
> needs to have safe memory access, low overhead in memory and less memcpy's 
> (As much as possible).
> We might also want to make this cache configurable.



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

Reply via email to