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

Jonathan Ellis commented on CASSANDRA-5020:
-------------------------------------------

using madvise/mincore is race prone (we purge it from cache on compaction, a 
read in progress pulls some back into cache, now we wait indefinitely for it to 
get pushed out of cache by other data).

using weakreferences means we're back to pre-1.0 of waiting for JVM GC before 
we can delete obsolete sstables.
                
> Time to switch back to byte[] internally?
> -----------------------------------------
>
>                 Key: CASSANDRA-5020
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-5020
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Jonathan Ellis
>             Fix For: 2.0
>
>
> We switched to ByteBuffer for column names and values back in 0.7, which gave 
> us a short term performance boost on mmap'd reads, but we gave that up when 
> we switched to refcounted sstables in 1.0.  (refcounting all the way up the 
> read path would be too painful, so we copy into an on-heap buffer when 
> reading from an sstable, then release the reference.)
> A HeapByteBuffer wastes a lot of memory compared to a byte[] (5 more ints, a 
> long, and a boolean).
> The hard problem here is how to do the arena allocation we do on writes, 
> which has been very successful in reducing STW CMS from heap fragmentation.  
> ByteBuffer is a good fit there.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to