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

Pavel Yaskevich commented on CASSANDRA-4937:
--------------------------------------------

bq. How much memory do you see CM using, prior to this change? 
bq. I'm not sure how much can CRAR "objectCache" help if we trash the queue on 
reference release. This would be more useful if we (1) made it per-SSTR instead 
of global and (2) allowed CRAR to be used by more than one request. Either way, 
let's split this out to a separate patch – think this should be 1.2-only.

It depends on the data size per-SSTable, but on each 1GB overhead is about 
20MB, which would definitely be promoted to old gen and kept there. That is not 
the biggest problem, the problem with compression allocation rate is that we 
are opening one CRAR per row read (CompressedSegmentedFile.getSegment) which 
allocates 128KB (64KB for compression/decompression buffers) plus has 
additional small memory overhead of checksum buffer and fields, that is what 
"objectCache" here to solve because it was figured that even when up to 12 
SSTables are involved per read we wouldn't have more then "concurrent_reads" 
CRARs per-SSTable in the cache.

bq. RAR skip cache harms performance in situation when reads are done in 
parallel with compaction

The problem with the code we have right now is that it doesn't actually skip 
blocks that compaction read, it drops *whole* file page cache after fixed 
internal (128MB) so when you have long running compactions (trottled or big 
data files, for example) normal reads would hit the cold data very frequently. 
The only thing is working correctly right now in terms of skiping cache is SW. 
I have done some benchmarks with and without skiping cache and it shows that 
page replacement done by kernel is much better then our skip suggestions via 
recent read latency histograms.

bq. CM.close is added but I don't see it called anywhere

It should be called on CRAR.deallocate(), sorry, I must have missed that when I 
was merging, I will fix that and update the patch.

bq. If we're going to move CompressionMetadata off-heap, why not use a single 
Memory object instead of BLA? This should also be 1.2.

Yes, that could be done as a single object, I just didn't want to remove 
historical paging change especially actual overhead of paging is very-very low 
:)

                
> CRAR improvements (object cache + CompressionMetadata chunk offset storage 
> moved off-heap).
> -------------------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-4937
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-4937
>             Project: Cassandra
>          Issue Type: Improvement
>    Affects Versions: 1.1.6
>            Reporter: Pavel Yaskevich
>            Assignee: Pavel Yaskevich
>            Priority: Minor
>             Fix For: 1.1.7
>
>         Attachments: CASSANDRA-4937.patch
>
>
> After good amount of testing on one of the clusters it was found that in 
> order to improve read latency we need to minimize allocation rate that 
> compression involves, that minimizes GC (as well as heap usage) and 
> substantially decreases latency on read heavy workloads. 
> I have also discovered that RAR skip cache harms performance in situation 
> when reads are done in parallel with compaction working with relatively big 
> SSTable files (few GB and more). The attached patch removes possibility to 
> skip cache from compressed files (I can also add changes to RAR to remove 
> skip cache functionality as a separate patch). 

--
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