cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Pavel Yaskevich (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (CASSANDRA-6689) Partially Off Heap Memtables
Date Mon, 03 Mar 2014 23:16:25 GMT

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

Pavel Yaskevich edited comment on CASSANDRA-6689 at 3/3/14 11:15 PM:
---------------------------------------------------------------------

I read through most of the code in offheap1b skipping queue implementations add there and
I have couple of questions:

I see this pattern in the code (e.g. (RangeSlice, Read)VerbHandler.java) where 
{noformat}
    r = Referrer(); 
    try { operation(); r = null } 
    finally { if (r != null) r.setDone(); } 
{noformat}
 where documentation says that that setDone() should be called when we are done with the referrer,
can you elaborate why do we need to explicitly set it to null?

Pool.java - can we schedule cleaners to a static thread pool (or something similar) instead
of creating a thread per cleaner? With would add more control in the situation when we flush
memtables in short intervals. Related question, why can't we have per-cf (or global) pool
instead of creating it per memtable, might be possible to remove allocator groups if we do
that?

Also I just want to throw an idea here maybe there is something useful in it - as we have
fixed number of stages and threads in them and don't normally share much between them, maybe
it would be possible to use that as an advantage for allocator gc? What I mean is, it might
be possible to track life-time of the allocation not by how buffer was allocated but where
it was allocated, more like what RCU...


was (Author: xedin):
I read through most of the code in offheap1b skipping queue implementations add there and
I have couple of questions:

I see this pattern in the code (e.g. {RangeSlice, Read}VerbHandler.java) where Referrer is
allocated try { operation(); referrer = null } finally { referrer.setDone() if (referrer !=
null); } where documentation says that that setDone() should be called when we are done with
the referrer, can you elaborate why do we need to explicitly set it to null?

Pool.java - can we schedule cleaners to a static thread pool (or something similar) instead
of creating a thread per cleaner? With would add more control in the situation when we flush
memtables in short intervals. Related question, why can't we have per-cf (or global) pool
instead of creating it per memtable, might be possible to remove allocator groups if we do
that?

Also I just want to throw an idea here maybe there is something useful in it - as we have
fixed number of stages and threads in them and don't normally share much between them, maybe
it would be possible to use that as an advantage for allocator gc? What I mean is, it might
be possible to track life-time of the allocation not by how buffer was allocated but where
it was allocated, more like what RCU...

> Partially Off Heap Memtables
> ----------------------------
>
>                 Key: CASSANDRA-6689
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-6689
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Benedict
>            Assignee: Benedict
>             Fix For: 2.1 beta2
>
>
> Move the contents of ByteBuffers off-heap for records written to a memtable.
> (See comments for details)



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Mime
View raw message