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

Michael Burman updated CASSANDRA-14281:
---------------------------------------
    Description: 
Currently for each write/read/rangequery/CAS touching the CFS we write a 
latency metric which takes a lot of processing time (up to 66% of the total 
processing time if the update was empty). 

The way latencies are recorded is to use both a dropwizard "Timer" as well as 
"Counter". Latter is used for totalLatency and the previous is decaying metric 
for rates and certain percentile metrics. We then replicate all of these CFS 
writes to the KeyspaceMetrics and globalWriteLatencies. 

Instead of doing this on the write phase we should merge the metrics when 
they're read. This is much less common occurrence and thus we save a lot of CPU 
time in total. This also speeds up the write path.

Currently, the DecayingEstimatedHistogramReservoir acquires a lock for each 
update operation, which causes a contention if there are more than one thread 
updating the histogram. This impacts scalability when using larger machines. We 
should make it lock-free as much as possible and also avoid a single CAS-update 
from blocking all the concurrent threads from making an update.

  was:Currently, the DecayingEstimatedHistogramReservoir acquires a lock for 
each update operation, which causes a contention if there are more than one 
thread updating the histogram. This impacts scalability when using larger 
machines. We should make it lock-free as much as possible and also avoid a 
single CAS-update from blocking all the concurrent threads from making an 
update.

        Summary: Improve LatencyMetrics performance by reducing write path 
processing  (was: Reduce contention on DecayingEstimatedHistogramReservoir)

> Improve LatencyMetrics performance by reducing write path processing
> --------------------------------------------------------------------
>
>                 Key: CASSANDRA-14281
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-14281
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Michael Burman
>            Assignee: Michael Burman
>            Priority: Major
>
> Currently for each write/read/rangequery/CAS touching the CFS we write a 
> latency metric which takes a lot of processing time (up to 66% of the total 
> processing time if the update was empty). 
> The way latencies are recorded is to use both a dropwizard "Timer" as well as 
> "Counter". Latter is used for totalLatency and the previous is decaying 
> metric for rates and certain percentile metrics. We then replicate all of 
> these CFS writes to the KeyspaceMetrics and globalWriteLatencies. 
> Instead of doing this on the write phase we should merge the metrics when 
> they're read. This is much less common occurrence and thus we save a lot of 
> CPU time in total. This also speeds up the write path.
> Currently, the DecayingEstimatedHistogramReservoir acquires a lock for each 
> update operation, which causes a contention if there are more than one thread 
> updating the histogram. This impacts scalability when using larger machines. 
> We should make it lock-free as much as possible and also avoid a single 
> CAS-update from blocking all the concurrent threads from making an update.



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

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

Reply via email to