You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "C. Scott Andreas (JIRA)" <ji...@apache.org> on 2018/11/18 18:25:02 UTC

[jira] [Updated] (CASSANDRA-7542) Reduce CAS contention

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

C. Scott Andreas updated CASSANDRA-7542:
----------------------------------------
    Component/s: Coordination

> Reduce CAS contention
> ---------------------
>
>                 Key: CASSANDRA-7542
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-7542
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Coordination
>            Reporter: sankalp kohli
>            Priority: Minor
>              Labels: LWT
>             Fix For: 4.x
>
>
> CAS updates on same CQL partition can lead to heavy contention inside C*. I am looking for simple ways(no algorithmic changes) to reduce contention as the penalty of it is high in terms of latency, specially for reads. 
> We can put some sort of synchronization on CQL partition at StorageProxy level. This will reduce contention at least for all requests landing on one box for same partition. 
> Here is an example of why it will help:
> 1) Say 1 write and 2 read CAS requests for the same partition key is send to C* in parallel. 
> 2) Since client is token-aware, it sends these 3 request to the same C* instance A. (Lets assume that all 3 requests goto same instance A) 
> 3) In this C* instance A, all 3 CAS requests will contend with each other in Paxos. (This is bad)
> To improve contention in 3), what I am proposing is to add a lock on partition key similar to what we do in PaxosState.java to serialize these 3 requests. This will remove the contention and improve performance as these 3 requests will not collide with each other.
> Another improvement we can do in client is to pick a deterministic live replica for a given partition doing CAS.  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org