[
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