cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michael Burman (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CASSANDRA-14281) Improve LatencyMetrics performance by reducing write path processing
Date Fri, 09 Mar 2018 14:50:00 GMT

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

Michael Burman commented on CASSANDRA-14281:
--------------------------------------------

No, I mean one update is copied to multiple histograms when on the hot path. Initialized in
this method:

[https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/metrics/TableMetrics.java#L993]

And applied for each update here:

[https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/metrics/TableMetrics.java#L1043]

Instead of doing it only when metrics are requested (which is also more efficient process).

> 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-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org


Mime
View raw message