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

T Jake Luciani commented on CASSANDRA-8464:
-------------------------------------------

I've updated the branch with fixes based on your comments:

 * tested the case when the Adler32.update(ByteBuffer) call is not found and 
there is a slight perf hit but it's still faster than current.
 * added boolean ICompressor.useDirectOutbutByteBuffers() method so the caller  
knows what to pass into the uncompress call.  This fixes the DeflateCompressor 
and SnappyCompressor issue you raised.  
  * changed the tests to test all compressor implementations.
  * I left the treemap as is, since I'm not sure there would be any measurable 
impact to optimize this for a single segment vs a treemap of one. 

> Support direct buffer decompression for reads
> ---------------------------------------------
>
>                 Key: CASSANDRA-8464
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-8464
>             Project: Cassandra
>          Issue Type: Improvement
>            Reporter: T Jake Luciani
>            Assignee: T Jake Luciani
>              Labels: performance
>             Fix For: 3.0
>
>
> Currently when we read a compressed sstable we copy the data on heap then 
> send it to be de-compressed to another on heap buffer (albeit pooled).
> But now both snappy and lz4 (with CASSANDRA-7039) allow decompression of 
> direct byte buffers.   This lets us mmap the data and decompress completely 
> off heap (and avoids moving bytes over JNI).
> One issue is performing the checksum offheap but the Adler32 does support in 
> java 8 (it's also in java 7 but marked private?!)
> This change yields a > 10% boost in read performance on cstar.  Locally I see 
> upto 30% improvement.
> http://cstar.datastax.com/graph?stats=5ebcdd70-816b-11e4-aed6-42010af0688f&metric=op_rate&operation=2_read&smoothing=1&show_aggregates=true&xmin=0&xmax=200.09&ymin=0&ymax=135908.3



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

Reply via email to