cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Branimir Lambov (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CASSANDRA-8464) Support direct buffer decompression for reads
Date Thu, 15 Jan 2015 23:03:35 GMT

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

Branimir Lambov commented on CASSANDRA-8464:
--------------------------------------------

I wonder why you still insist on not doing the length read in {{LZ4Compressor.uncompress()}}
the straightforward way. Are you worried about the performance of ByteBuffer.get(position)?
You shouldn't be, on a direct buffer (including mapped ones) that's practically as fast as
byte array access, and even on a heap one it certainly isn't slow enough to warrant copying
to an array and the extra code.

Just to verify, I resurrected and ran a test I did of LZ4 decompression in safe mode (which
uses ByteBuffer.get/put), you can see the results [here|http://pastebin.com/SFEqMbdJ].

> 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
>
>         Attachments: compression_direct.png
>
>
> 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)

Mime
View raw message