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

Branimir Lambov commented on CASSANDRA-5863:
--------------------------------------------

bq. we might want to be more conservative and indicate early that requested 
length is bigger than number of available bytes

This is not that trivial for rebuffering -- the requested length would normally 
be bigger than the number of available bytes during the last {{reBuffer()}} 
call on the file, thus the changes required to implement this check are too 
substantial to be within the scope of this ticket.

bq. I saw a possibility to unify bufferless with other implementations because 
essentially the question is - where original data comes from - directly from 
the channel or already mmap'ed buffer

I started with a single implementation and quickly found out it is not 
sufficient. There are other things to take into account:
- Does the buffer hold all the data you need for decompression?
- Is it properly aligned so it can be cached?
- How do you signal that you are done with it so it can be reclaimed?
- Do you need to copy anything from one buffer to another to make this work?

If you still think a single interface / removing {{Rebufferer}} could work 
efficiently, would you elaborate and, possibly, provide some code?

bq. I think we will have to tackle it first since it would directly affect 
rebufferer/cache logic

The logic is clearly defined for this round. This patch is targeted at 3.x 
where we can't change sstable format in any way, and support for this format 
will be required long in the future.

> In process (uncompressed) page cache
> ------------------------------------
>
>                 Key: CASSANDRA-5863
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-5863
>             Project: Cassandra
>          Issue Type: Sub-task
>            Reporter: T Jake Luciani
>            Assignee: Branimir Lambov
>              Labels: performance
>             Fix For: 3.x
>
>
> Currently, for every read, the CRAR reads each compressed chunk into a 
> byte[], sends it to ICompressor, gets back another byte[] and verifies a 
> checksum.  
> This process is where the majority of time is spent in a read request.  
> Before compression, we would have zero-copy of data and could respond 
> directly from the page-cache.
> It would be useful to have some kind of Chunk cache that could speed up this 
> process for hot data, possibly off heap.



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

Reply via email to