[ 
https://issues.apache.org/jira/browse/CASSANDRA-21754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dmitry Konstantinov updated CASSANDRA-21754:
--------------------------------------------
    Change Category: Performance
         Complexity: Normal
      Fix Version/s: 6.0.x
                     7.x
             Status: Open  (was: Triage Needed)

> Reduce contention on MemtablePool.SubPool#allocated 
> ----------------------------------------------------
>
>                 Key: CASSANDRA-21754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-21754
>             Project: Apache Cassandra
>          Issue Type: Improvement
>          Components: Local/Memtable
>            Reporter: Dmitry Konstantinov
>            Assignee: Dmitry Konstantinov
>            Priority: Normal
>             Fix For: 6.0.x, 7.x
>
>
> During a write to a memtable we increase allocated counter within 
> MemtablePool.SubPool and check if it is crossed a limit to trigger a clean 
> (flush). We have multiple threads which update and read the value via 
> AtomicLongFieldUpdater. For a high write rate the field can become a 
> contention point + we may have false sharing for other fields within the same 
> MemtablePool.SubPool object. MemtablePool.SubPool is common across all tables 
> on a node.
> To reduce the contention we can use the fact that we do not need to read the 
> allocated value every time, it is only needed to check if we've crossed a 
> threshold for the next flush.
> So, we can apply a sharding approach for this value: we can split the value 
> to several sub-values which are updated by different threads independently 
> (similar to LongAdder). There are several ways to deal with threshold 
> tracking, for example we can have a smaller threshold for each shard value or 
> do some reservation from a common value, etc (a subject to evaluate the best 
> one).



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to