This is excellent. Thanks for opening up this CEP. It would be great to get 
some stats around GC allocation rate / memory pressure, read & write latencies, 
etc. compared to existing implementation.

Dinesh

> On Jan 18, 2022, at 2:13 AM, Branimir Lambov <blam...@apache.org> wrote:
> 
> The memtable pluggability API (CEP-11) is per-table to enable memtable 
> selection that suits specific workflows. It also makes full sense to permit 
> per-node configuration, both to be able to modify the configuration to suit 
> heterogeneous deployments better, as well as to test changes for improvements 
> such as this one.
> Recognizing this, the patch comes with a modification to the API 
> <https://github.com/blambov/cassandra/commit/24b558ba2f71a2f040804e28993cc914b31298f5>
>  that defines memtable templates in cassandra.yaml (i.e. per node) and allows 
> the schema to select a template (in addition to being able to specify the 
> full memtable configuration). One could use this e.g. by adding:
> memtable_templates:
>     trie:
>         class: TrieMemtable
>         shards: 16
>     skiplist:
>         class: SkipListMemtable
> memtable:
>     template: skiplist
> (which defines two templates and specifies the default memtable 
> implementation to use) to cassandra.yaml and specifying  WITH memtable = 
> {'template' : 'trie'} in the table schema.
> 
> I intend to commit this modification with the memtable API 
> (CASSANDRA-17034/CEP-11).
> 
> Performance comparisons will be published soon.
> 
> Regards,
> Branimir
> 
> On Fri, Jan 14, 2022 at 4:15 PM Jeff Jirsa <jji...@gmail.com 
> <mailto:jji...@gmail.com>> wrote:
> Sounds like a great addition
> 
> Can you share some of the details around gc and latency improvements you’ve 
> observed with the list? 
> 
> Any specific reason the confirmation is through schema vs yaml? Presumably 
> it’s so a user can test per table, but this changes every host in a cluster, 
> so the impact of a bug/regression is much higher. 
> 
> 
>> On Jan 10, 2022, at 1:30 AM, Branimir Lambov <blam...@apache.org 
>> <mailto:blam...@apache.org>> wrote:
>> 
>> 
>> We would like to contribute our TrieMemtable to Cassandra. 
>> 
>> https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-19%3A+Trie+memtable+implementation
>>  
>> <https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-19%3A+Trie+memtable+implementation>
>> 
>> This is a new memtable solution aimed to replace the legacy implementation, 
>> developed with the following objectives:
>> - lowering the on-heap complexity and the ability to store memtable indexing 
>> structures off-heap,
>> - leveraging byte order and a trie structure to lower the memory footprint 
>> and improve mutation and lookup performance.
>> 
>> The new memtable relies on CASSANDRA-6936 to translate to and from 
>> byte-ordered representations of types, and CASSANDRA-17034 / CEP-11 to plug 
>> into Cassandra. The memtable is built on multiple shards of custom in-memory 
>> single-writer multiple-reader tries, whose implementation uses a combination 
>> of state-of-the-art and novel features for greater efficiency.
>> 
>> The CEP's JIRA ticket (https://issues.apache.org/jira/browse/CASSANDRA-17240 
>> <https://issues.apache.org/jira/browse/CASSANDRA-17240>) contains the 
>> initial version of the implementation. In its current form it achieves much 
>> better garbage collection latency, significantly bigger data sizes between 
>> flushes for the same memory allocation, as well as drastically increased 
>> write throughput, and we expect the memory and garbage collection 
>> improvements to go much further with upcoming improvements to the solution.
>> 
>> I am interested in hearing your thoughts on the proposal.
>> 
>> Regards,
>> Branimir
>> 

Reply via email to